lib/hu/deploy.rb in hu-1.3.16 vs lib/hu/deploy.rb in hu-1.3.17
- old
+ new
@@ -37,14 +37,15 @@
exit 1
end
end
def deploy(_cmd, _opts, _argv)
+ Hu::Tm.t(:invoke, cmd: 'deploy')
trap('INT') { shutdown; safe_abort; exit 1 }
at_exit do
+ shutdown
if $ERROR_INFO.class == SystemExit && 130 == $ERROR_INFO.status
- shutdown
puts
safe_abort
end
end
@@ -55,10 +56,11 @@
puts "Git error: #{e}".color(:red)
puts 'You need to be inside the working copy of the app that you wish to deploy.'.color(:red)
puts
safe_abort
print TTY::Cursor.prev_line
+ Hu::Tm.t(:error_not_in_working_copy, cmd: 'deploy')
exit 1
end
Dir.chdir(@git.workdir)
@@ -66,19 +68,21 @@
puts
puts "ERROR: Remote of branch 'master' does not point to 'origin'.".color(:red)
puts
puts ' Sorry, we need an origin here. We really do.'
puts
+ Hu::Tm.t(:error_no_git_origin, cmd: 'deploy')
exit 1
end
if @git.config['gitflow.branch.master'].nil?
puts
puts "ERROR: This repository doesn't seem to be git-flow enabled.".color(:red)
puts
puts " Please run 'git flow init -d'"
puts
+ Hu::Tm.t(:error_no_git_flow, cmd: 'deploy')
exit 1
end
unless @git.config['gitflow.prefix.versiontag'].nil? ||
@git.config['gitflow.prefix.versiontag'].empty?
@@ -87,10 +91,11 @@
puts
puts ' Please use this command to remove the prefix:'
puts
puts " git config --add gitflow.prefix.versiontag ''".bright
puts
+ Hu::Tm.t(:error_git_flow_prefix_enabled, cmd: 'deploy')
exit 1
end
push_url = heroku_git_remote
@@ -103,10 +108,11 @@
puts "ERROR: Found no heroku app for git remote #{push_url}".color(:red)
puts ' Are you logged into the right heroku account?'.color(:red)
puts
puts " Please run 'git remote rm heroku'. Then run 'hu deploy' again to select a new remote."
puts
+ Hu::Tm.t(:error_no_heroku_app_for_remote, cmd: 'deploy')
exit 1
end
pipeline_name, stag_app_id, prod_app_id = heroku_pipeline_details(app)
@@ -118,10 +124,11 @@
puts
puts ' The referenced app MUST be the staging member of the pipeline.'
puts " Please run 'git remote rm heroku'. Then run 'hu deploy' again to select a new remote."
puts
+ Hu::Tm.t(:error_remote_not_staging, cmd: 'deploy')
sleep 2
exit 1
end
stag_app_name = app['name']
@@ -197,28 +204,31 @@
unless git_revisions[:release] == git_revisions[stag_app_name] || !release_branch_exists
puts 'Phase 1/3: The local release branch ' + "release/#{release_tag}".bright + ' was created.'
puts ' Nothing else has happened so far. Push this branch to'
puts ' ' + stag_app_name.to_s.bright + ' to begin the deploy procedure.'
puts
+ Hu::Tm.t(:phase1, cmd: 'deploy')
end
if release_branch_exists && git_revisions[:release] == git_revisions[stag_app_name]
puts 'Phase 2/3: Your local ' + "release/#{release_tag}".bright + ' (formerly ' + 'develop'.bright + ") is now live at #{stag_app_name}."
puts ' Please test thoroughly: ' + (app['web_url']).to_s.bright
puts ' If everything looks good, you may proceed and finish the release.'
puts ' If there are problems: Quit, delete the release branch and start fixing.'
puts
+ Hu::Tm.t(:phase2, cmd: 'deploy')
elsif git_revisions[prod_app_name] != git_revisions[stag_app_name] && !release_branch_exists && git_revisions[:release] != git_revisions[stag_app_name]
puts 'Phase 3/3: HEADS UP. This is the last chance to detect problems.'
puts ' The final version of ' + "release/#{release_tag}".bright + ' is now staged.'
puts
puts ' Test here: ' + (app['web_url']).to_s.bright
sleep 1
puts
puts ' This is the exact version that will be promoted to production.'
puts " From here you are on your own. Good luck #{`whoami`.chomp}!"
puts
+ Hu::Tm.t(:phase3, cmd: 'deploy')
end
choice = prompt.select('Choose your destiny') do |menu|
menu.enum '.'
menu.choice 'Refresh', :refresh
@@ -249,13 +259,16 @@
puts
case choice
when :DEPLOY
+ Hu::Tm.t(:promote_begin, cmd: 'deploy')
promote_to_production
+ Hu::Tm.t(:promote_end, cmd: 'deploy')
anykey
when :finish_release
+ Hu::Tm.t(:finish_begin, cmd: 'deploy')
old_editor = ENV['EDITOR']
old_git_editor = ENV['GIT_EDITOR']
tf = Tempfile.new('hu-tag')
tf.write "#{release_tag}\n#{changelog}"
tf.close
@@ -268,40 +281,49 @@
unless 0 == finish_release(release_tag, env)
abort_merge
puts '*** ERROR! Could not finish release *** '.color(:red)
puts
puts 'This usually means a merge conflict or'
- puts 'something similarly complicated has occured.'
+ puts 'something equally annoying has occured.'
puts
puts 'Please bring the universe into a state'
- puts 'where the above command succeeds, then try again.'
+ puts 'where the above sequence of commands can'
+ puts 'succeed. Then try again.'
puts
+ Hu::Tm.t(:finish_fail, cmd: 'deploy')
exit 1
end
ENV['EDITOR'] = old_editor
ENV['GIT_EDITOR'] = old_git_editor
+ Hu::Tm.t(:finish_end, cmd: 'deploy')
anykey
when :push_to_staging
+ Hu::Tm.t(:stage_begin, cmd: 'deploy')
run_each <<-EOS.strip_heredoc
:stream
git push #{push_url} release/#{release_tag}:master -f
EOS
+ Hu::Tm.t(:stage_end, cmd: 'deploy')
anykey
when :abort_ask
+ Hu::Tm.t(:user_quit, cmd: 'deploy')
puts if delete_branch("release/#{release_tag}")
exit 0
when :bump_tiny
if delete_branch("release/#{release_tag}")
release_tag, branch_already_exists = prompt_for_release_tag(tiny_bump, tiny_bump)
+ Hu::Tm.t(:switch_release_type, bump: 'patch', cmd: 'deploy')
end
when :bump_minor
if delete_branch("release/#{release_tag}")
release_tag, branch_already_exists = prompt_for_release_tag(minor_bump, minor_bump)
+ Hu::Tm.t(:switch_release_type, bump: 'minor', cmd: 'deploy')
end
when :bump_major
if delete_branch("release/#{release_tag}")
release_tag, branch_already_exists = prompt_for_release_tag(major_bump, major_bump)
+ Hu::Tm.t(:switch_release_type, bump: 'major', cmd: 'deploy')
end
end
end
end
@@ -394,10 +416,11 @@
puts "\e[H\e[2J" if clear
puts " PIPELINE #{pipeline_name} ".inverse
puts
puts table.render(:unicode, padding: [0, 1, 0, 1], multiline: true)
+ Hu::Tm.t(:status_screen, cmd: 'deploy')
revs
end
def heroku_app_by_git(git_url)
busy('fetching heroku apps', :dots)
@@ -512,10 +535,12 @@
end
end
next unless status.exitstatus != 0
shutdown if opts[:failfast]
puts "Error, exit #{status.exitstatus}: #{line} (L#{i})".color(:red).bright
+
+ Hu::Tm.t(:runeach_error, exitstatus: status.exitstatus, cmd: 'deploy')
exit status.exitstatus if opts[:failfast]
return status.exitstatus
end
0
end
@@ -525,11 +550,17 @@
if status.exitstatus != 0
puts 'Error fetching git tags.'
exit status.exitstatus
end
- versions = output.lines.map(&:chomp).reject { |e| Versionomy.parse(e) rescue true; false }
+ versions = output.lines.map(&:chomp).reject do |e|
+ begin
+ Versionomy.parse(e)
+ rescue
+ true
+ end; false
+ end
versions = versions.map { |e| e[0].casecmp('v').zero? ? e.downcase : "v#{e.downcase}" }
versions = VersionSorter.sort(versions)
latest = versions[-1] || 'v0.0.0'
latest = "v#{latest}" unless latest[0] == 'v'
latest
@@ -547,10 +578,11 @@
:quiet
# Delete branch #{branch_name}
git checkout develop
git branch -D #{branch_name}
EOS
+ Hu::Tm.t(:delete_release_branch, cmd: 'deploy')
puts "Branch #{branch_name} deleted.".color(:red)
true
end
def checkout_branch(branch_name)
@@ -564,20 +596,22 @@
def start_release(release_tag)
run_each <<-EOS.strip_heredoc
# Starting release #{release_tag.color(:green)}
git flow release start #{release_tag} >/dev/null
EOS
+ Hu::Tm.t(:start_release, cmd: 'deploy')
end
def update_working_copy
run_each <<-EOS.strip_heredoc
:quiet
:nospinner
# Ensure local repository is up to date
git checkout develop && git pull
git checkout master && git pull --rebase origin master
EOS
+ Hu::Tm.t(:update_working_copy, cmd: 'deploy')
end
def heroku_git_remote
ensure_repo_has_heroku_remote
`git remote show -n heroku | grep Push`.chomp.split(':', 2)[1][1..-1]
@@ -734,10 +768,11 @@
def abort_merge
run_each <<-EOS.strip_heredoc
# Abort failed merge
git merge --abort
EOS
+ Hu::Tm.t(:abort_merge, cmd: 'deploy')
end
def create_changelog(env)
if File.executable? '.hu/hooks/changelog'
env.each { |k, v| ENV[k] = v }
@@ -746,9 +781,10 @@
`git log --pretty=format:" - %s" #{env['PREVIOUS_TAG']}..HEAD 2>/dev/null`
end
end
def shutdown
+ Hu::Tm.flush!
@@shutting_down = true
unbusy
end
def busy(msg = '', format = :classic, clear = true)