lib/abak-flow/commands/done.rb
# coding: utf-8
module Abak::Flow
module Commands
class Done
include ANSI::Code
def run(args, options)
Checkup.new.process(Array.new, ::Commander::Command::Options.new)
branch = Branch.new(Manager.git.current_branch)
if branch.develop? || branch.master?
say red {
Manager.locale.error(self,
'branch.delete_now_allowed', branch: ANSI.bold { branch })
}
exit 105
end
delete_on_remote(branch)
# TODO : Быть может стоит вынести это в настройки
# и позволить выбирать, куда отправлять
# при удалении ветки, а по умолчанию использовать master
Manager.git.checkout(
branch.extract_base_name(if_undef: Branch::MASTER))
delete_on_local(branch)
end
private
def delete_on_remote(branch)
print white {
Manager.locale.word(self,
"deleting", branch: bold { branch },
upstream: bold { "#{Manager.repository.origin}" })
}
begin
branch.delete_on_remote
rescue
say_branch_missed(branch, "#{Manager.repository.origin}")
else
say_done
end
end
def delete_on_local(branch)
print white {
Manager.locale.word(self,
"deleting", branch: bold { branch },
upstream: bold { "working tree" })
}
begin
branch.delete_on_local
rescue
say_branch_missed(branch, "working tree")
else
say_done
end
end
def say_done
say green { " " << Manager.locale.word(self, "done") }
end
def say_branch_missed(branch, upstream)
puts
say yellow {
Manager.locale.error(self,
"branch.missed_on", branch: branch,
upstream: upstream)
}
end
end
end
end