diff --git a/config/application.rb b/config/application.rb index 5aca74fd1c6..59819679474 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 96ad4092819..708a62e927f 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 ||= "#{HTTP::Request::USER_AGENT} (Mastodon/#{Version}; +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