class Abak::Flow::Commands::Configure
Public Instance Methods
process(args, options)
click to toggle source
# File lib/abak-flow/commands/configure.rb, line 16 def process(args, options) interview password_hash = deffered do client = Octokit::Client.new(login: @login, password: @password) response = client.create_authorization( scopes: ["repo"], note: "abak-flow", note_url: "https://github.com/Strech/abak-flow", headers: @headers) response[:token] end Manager.configuration.rewrite( login: @login, password: password_hash, locale: @locale, http_proxy: @http_proxy) end
run(args, options)
click to toggle source
# File lib/abak-flow/commands/configure.rb, line 9 def run(args, options) process(args, options) puts say green { Manager.locale.success(self) } end
Private Instance Methods
deffered(&block)
click to toggle source
TODO : Refactor to object
# File lib/abak-flow/commands/configure.rb, line 49 def deffered(&block) progressbar.show thread = Thread.new do Thread.current[:result] = suppress { block.call } end loop do progressbar.increment break if thread.status === false if thread.status.nil? progressbar.erase_line say red { Manager.locale.error(self, 'execution_failed') } exit 102 end sleep 0.3 end case thread[:result] when Octokit::OneTimePasswordRequired progressbar.erase_line otp_interview return deffered(&block) when NilClass progressbar.erase_line say red { Manager.locale.error(self, 'empty_response') } exit 103 when Exception progressbar.erase_line say red { thread[:result].message } exit 104 else # no-op end thread[:result] end
interview()
click to toggle source
# File lib/abak-flow/commands/configure.rb, line 36 def interview @login = ask("#{Manager.locale.word(self, 'email')}: ") @password = password("#{Manager.locale.word(self, 'password')}: ", nil) @locale = choose("#{Manager.locale.word(self, 'locale')}:\n", :en, :ru) @http_proxy = ask("#{Manager.locale.word(self, 'http_proxy')}: ") @headers = {} end
otp_interview()
click to toggle source
# File lib/abak-flow/commands/configure.rb, line 44 def otp_interview @headers = {"X-GitHub-OTP" => ask("#{Manager.locale.word(self, 'sms_otp')}: ")} end
progressbar()
click to toggle source
# File lib/abak-flow/commands/configure.rb, line 92 def progressbar @progressbar ||= Commander::UI::ProgressBar.new(100, progress_str: ".", incomplete_str: " ", format: ":title:progress_bar", complete_message: "", title: Manager.locale.word(self, 'configuring')) end
suppress(&block)
click to toggle source
# File lib/abak-flow/commands/configure.rb, line 98 def suppress(&block) begin block.call rescue => error error end end