Fix mastodon:setup choking on env variables containing '%' (#13940)
Fix a regression introduced in #13928, caused by TTY::Command building shell commands by chaining string substitutions. Ditch TTY::Command and use system instead (both do shell out).
This commit is contained in:
		
					parent
					
						
							
								bf94934623
							
						
					
				
			
			
				commit
				
					
						175fd5b8ba
					
				
			
		
					 3 changed files with 2 additions and 9 deletions
				
			
		
							
								
								
									
										1
									
								
								Gemfile
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								Gemfile
									
										
									
									
									
								
							|  | @ -94,7 +94,6 @@ gem 'simple_form', '~> 5.0' | ||||||
| gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' | gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' | ||||||
| gem 'stoplight', '~> 2.2.0' | gem 'stoplight', '~> 2.2.0' | ||||||
| gem 'strong_migrations', '~> 0.6' | gem 'strong_migrations', '~> 0.6' | ||||||
| gem 'tty-command', '~> 0.9', require: false |  | ||||||
| gem 'tty-prompt', '~> 0.21', require: false | gem 'tty-prompt', '~> 0.21', require: false | ||||||
| gem 'twitter-text', '~> 1.14' | gem 'twitter-text', '~> 1.14' | ||||||
| gem 'tzinfo-data', '~> 1.2020' | gem 'tzinfo-data', '~> 1.2020' | ||||||
|  |  | ||||||
|  | @ -623,8 +623,6 @@ GEM | ||||||
|     thwait (0.1.0) |     thwait (0.1.0) | ||||||
|     tilt (2.0.10) |     tilt (2.0.10) | ||||||
|     tty-color (0.5.1) |     tty-color (0.5.1) | ||||||
|     tty-command (0.9.0) |  | ||||||
|       pastel (~> 0.7.0) |  | ||||||
|     tty-cursor (0.7.1) |     tty-cursor (0.7.1) | ||||||
|     tty-prompt (0.21.0) |     tty-prompt (0.21.0) | ||||||
|       necromancer (~> 0.5.0) |       necromancer (~> 0.5.0) | ||||||
|  | @ -792,7 +790,6 @@ DEPENDENCIES | ||||||
|   strong_migrations (~> 0.6) |   strong_migrations (~> 0.6) | ||||||
|   thor (~> 0.20) |   thor (~> 0.20) | ||||||
|   thwait (~> 0.1.0) |   thwait (~> 0.1.0) | ||||||
|   tty-command (~> 0.9) |  | ||||||
|   tty-prompt (~> 0.21) |   tty-prompt (~> 0.21) | ||||||
|   twitter-text (~> 1.14) |   twitter-text (~> 1.14) | ||||||
|   tzinfo-data (~> 1.2020) |   tzinfo-data (~> 1.2020) | ||||||
|  |  | ||||||
|  | @ -1,6 +1,5 @@ | ||||||
| # frozen_string_literal: true | # frozen_string_literal: true | ||||||
| 
 | 
 | ||||||
| require 'tty-command' |  | ||||||
| require 'tty-prompt' | require 'tty-prompt' | ||||||
| 
 | 
 | ||||||
| namespace :mastodon do | namespace :mastodon do | ||||||
|  | @ -334,8 +333,6 @@ namespace :mastodon do | ||||||
|       prompt.say 'This configuration will be written to .env.production' |       prompt.say 'This configuration will be written to .env.production' | ||||||
| 
 | 
 | ||||||
|       if prompt.yes?('Save configuration?') |       if prompt.yes?('Save configuration?') | ||||||
|         cmd = TTY::Command.new(printer: :quiet) |  | ||||||
| 
 |  | ||||||
|         env_contents = env.each_pair.map do |key, value| |         env_contents = env.each_pair.map do |key, value| | ||||||
|           if value.is_a?(String) && value =~ /[\s\#\\"]/ |           if value.is_a?(String) && value =~ /[\s\#\\"]/ | ||||||
|             if value =~ /[']/ |             if value =~ /[']/ | ||||||
|  | @ -367,7 +364,7 @@ namespace :mastodon do | ||||||
|           prompt.say 'Running `RAILS_ENV=production rails db:setup` ...' |           prompt.say 'Running `RAILS_ENV=production rails db:setup` ...' | ||||||
|           prompt.say "\n\n" |           prompt.say "\n\n" | ||||||
| 
 | 
 | ||||||
|           if cmd.run!(env.merge({ RAILS_ENV: 'production', SAFETY_ASSURED: 1 }), :rails, 'db:setup').failure? |           if !system(env.transform_values(&:to_s).merge({ 'RAILS_ENV' => 'production', 'SAFETY_ASSURED' => '1' }), 'rails db:setup') | ||||||
|             prompt.error 'That failed! Perhaps your configuration is not right' |             prompt.error 'That failed! Perhaps your configuration is not right' | ||||||
|           else |           else | ||||||
|             prompt.ok 'Done!' |             prompt.ok 'Done!' | ||||||
|  | @ -382,7 +379,7 @@ namespace :mastodon do | ||||||
|           prompt.say 'Running `RAILS_ENV=production rails assets:precompile` ...' |           prompt.say 'Running `RAILS_ENV=production rails assets:precompile` ...' | ||||||
|           prompt.say "\n\n" |           prompt.say "\n\n" | ||||||
| 
 | 
 | ||||||
|           if cmd.run!(env.merge({ RAILS_ENV: 'production' }), :rails, 'assets:precompile').failure? |           if !system(env.transform_values(&:to_s).merge({ 'RAILS_ENV' => 'production' }), 'rails assets:precompile') | ||||||
|             prompt.error 'That failed! Maybe you need swap space?' |             prompt.error 'That failed! Maybe you need swap space?' | ||||||
|           else |           else | ||||||
|             prompt.say 'Done!' |             prompt.say 'Done!' | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue