From db68a41e0abbfc2d15d65f808aef756ec1038d94 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 11 Jun 2024 16:45:26 -0400 Subject: [PATCH] Move mastodon version config to `config_for` yml --- config/application.rb | 2 ++ config/mastodon.yml | 8 ++++++++ lib/mastodon/version.rb | 14 +++++++++----- spec/presenters/instance_presenter_spec.rb | 17 ++++++----------- 4 files changed, 25 insertions(+), 16 deletions(-) create mode 100644 config/mastodon.yml diff --git a/config/application.rb b/config/application.rb index 3c62a492289..1ee21d17e6d 100644 --- a/config/application.rb +++ b/config/application.rb @@ -112,6 +112,8 @@ module Mastodon end end + config.x.mastodon = config_for(:mastodon) + config.to_prepare do Doorkeeper::AuthorizationsController.layout 'modal' Doorkeeper::AuthorizedApplicationsController.layout 'admin' diff --git a/config/mastodon.yml b/config/mastodon.yml new file mode 100644 index 00000000000..94a71a5f105 --- /dev/null +++ b/config/mastodon.yml @@ -0,0 +1,8 @@ +shared: + source: + base_url: <%= ENV.fetch('SOURCE_BASE_URL', nil) %> + repository: <%= ENV.fetch('GITHUB_REPOSITORY', 'mastodon/mastodon') %> + tag: <%= ENV.fetch('SOURCE_TAG', nil) %> + version: + metadata: <%= ENV.fetch('MASTODON_VERSION_METADATA', nil) %> + prerelease: <%= ENV.fetch('MASTODON_VERSION_PRERELEASE', nil) %> diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index fd05dac7b98..09218e71934 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -21,11 +21,11 @@ module Mastodon end def prerelease - ENV['MASTODON_VERSION_PRERELEASE'].presence || default_prerelease + configuration.version[:prerelease] || default_prerelease end def build_metadata - ENV.fetch('MASTODON_VERSION_METADATA', nil) + configuration.version[:metadata] end def to_a @@ -44,16 +44,16 @@ module Mastodon end def repository - ENV.fetch('GITHUB_REPOSITORY', 'mastodon/mastodon') + configuration.source[:repository] end def source_base_url - ENV.fetch('SOURCE_BASE_URL', "https://github.com/#{repository}") + configuration.source[:base_url] || "https://github.com/#{repository}" end # specify git tag or commit hash here def source_tag - ENV.fetch('SOURCE_TAG', nil) + configuration.source[:tag] end def source_url @@ -67,5 +67,9 @@ module Mastodon def user_agent @user_agent ||= "Mastodon/#{Version} (#{HTTP::Request::USER_AGENT}; +http#{Rails.configuration.x.use_https ? 's' : ''}://#{Rails.configuration.x.web_domain}/)" end + + def configuration + Rails.configuration.x.mastodon + end end end diff --git a/spec/presenters/instance_presenter_spec.rb b/spec/presenters/instance_presenter_spec.rb index 516c7e9896a..416d78734dd 100644 --- a/spec/presenters/instance_presenter_spec.rb +++ b/spec/presenters/instance_presenter_spec.rb @@ -65,11 +65,12 @@ describe InstancePresenter do end describe '#source_url' do - context 'with the GITHUB_REPOSITORY env variable set' do + context 'with the github repository configured' do around do |example| - ClimateControl.modify GITHUB_REPOSITORY: 'other/repo' do - example.run - end + original = Rails.configuration.x.mastodon.source[:repository] + Rails.configuration.x.mastodon.source[:repository] = 'other/repo' + example.run + Rails.configuration.x.mastodon.source[:repository] = original end it 'uses the env variable to build a repo URL' do @@ -77,13 +78,7 @@ describe InstancePresenter do end end - context 'without the GITHUB_REPOSITORY env variable set' do - around do |example| - ClimateControl.modify GITHUB_REPOSITORY: nil do - example.run - end - end - + context 'without the github repository configured' do it 'defaults to the core mastodon repo URL' do expect(instance_presenter.source_url).to eq('https://github.com/mastodon/mastodon') end