lib/abak-flow/request.rb in abak-flow-1.0.10 vs lib/abak-flow/request.rb in abak-flow-1.1.0

- old
+ new

@@ -1,9 +1,10 @@ # coding: utf-8 require "commander/import" -require "ansi/code" +# TODO : I18n +# TODO : Переименовать в CLI module Abak::Flow program :name, "Утилита для оформления pull request на github.com" program :version, Abak::Flow::VERSION program :description, "Утилита, заточенная под git-flow но с использованием github.com" @@ -23,91 +24,28 @@ cmd.option "--head STRING", String, "Имя ветки которую нужно сравнить" cmd.action Commands::Compare, :run end # command :compare - command :publish do |c| - c.syntax = "git request publish" - c.description = "Оформить pull request в upstream репозиторий" + command :configure do |cmd| + cmd.syntax = "git request setup" + cmd.description = "Настроить приложение abak-flow для работы с github" + cmd.action Commands::Configure, :run + end # command :configure - c.option "--title STRING", String, "Заголовок для вашего pull request" - c.option "--body STRING", String, "Текст для вашего pull request" - c.option "--base STRING", String, "Имя ветки, в которую нужно принять изменения" + command :publish do |cmd| + cmd.syntax = "git request publish" + cmd.description = "Оформить pull request в upstream репозиторий" - c.action do |args, options| - m = Manager.instance + cmd.option "--title STRING", String, "Заголовок для вашего pull request" + cmd.option "--body STRING", String, "Текст для вашего pull request" + cmd.option "--base STRING", String, "Имя ветки, в которую нужно принять изменения" - head = Branch.new(m.git.current_branch) - base = Branch.new(options.base || head.extract_base_name) - - title = options.title || head.extract_title - body = options.body || head.extract_body - - p = PullRequest.new({base: base, head: head, title: title, body: body}, m) - - v = Visitor.new(m.configuration, m.repository, p, call: :ready?, inspect: :errors) - v.exit_on_fail(:publish, 1) - - say ANSI.white { - I18n.t("commands.publish.updating", - branch: ANSI.bold { head }, - upstream: ANSI.bold { "#{m.repository.origin}" }) } - - head.update - - say ANSI.white { - I18n.t("commands.publish.requesting", - branch: ANSI.bold { "#{m.repository.origin.owner}:#{head}" }, - upstream: ANSI.bold { "#{m.repository.upstream.owner}:#{base}" }) } - - v = Visitor.new(p, call: :publish, inspect: :errors) - v.exit_on_fail(:publish, 2) - - say ANSI.green { I18n.t("commands.publish.success", link: p.link) } - end + cmd.action Commands::Publish, :run end # command :publish - command :done do |c| - c.syntax = "git request done" - c.description = "Удалить ветки (local и origin) в которых велась работа" - - c.action do |args, options| - m = Manager.instance - v = Visitor.new(m.configuration, m.repository, call: :ready?, inspect: :errors) - v.exit_on_fail(:done, 1) - - branch = Branch.new(m.git.current_branch) - - if branch.develop? || branch.master? - say ANSI.red { - I18n.t("commands.done.errors.branch_is_incorrect", - branch: ANSI.bold { branch }) } - exit 2 - end - - say ANSI.white { - I18n.t("commands.done.deleting", - branch: ANSI.bold { branch }, - upstream: ANSI.bold { "#{m.repository.origin}" }) } - - # FIXME : Исправить молчаливую ситуацию - # Возможно стоит предупредить о ее отсутствии - branch.delete_on_remote rescue nil - - say ANSI.white { - I18n.t("commands.done.deleting", - branch: ANSI.bold { branch }, - upstream: ANSI.bold { "working tree" }) } - - # TODO : Добавить проверку, что ветка, - # в которую надо попасть (master/develop) - # существует - - # TODO : Быть может стоит вынести это в настройки - # и позволить выбирать, куда отправлять - # при удалении ветки, а по умолчанию использовать master - m.git.checkout( - branch.extract_base_name(if_undef: Branch::DEVELOPMENT)) - branch.delete_on_local - end + command :done do |cmd| + cmd.syntax = "git request done" + cmd.description = "Удалить ветки (local и origin) в которых велась работа" + cmd.action Commands::Done, :run end # command :done end