class Jenkins::Builder::CLI
Public Class Methods
create_alias_commands(aliases)
click to toggle source
# File lib/jenkins/builder/cli.rb, line 16 def create_alias_commands(aliases) aliases.each do |name, command| desc "#{name}", "Alias for: `#{command}'" define_method name do |*args| self.class.start(Shellwords.split(command) + args) end end end
main(args)
click to toggle source
# File lib/jenkins/builder/cli.rb, line 10 def main(args) validate_fzf! @config = Jenkins::Builder::Config.new create_alias_commands(@config.aliases || []) start(args) end
validate_fzf!()
click to toggle source
# File lib/jenkins/builder/cli.rb, line 25 def validate_fzf! `fzf --version` rescue Errno::ENOENT raise 'Required command fzf is not installed.' end
Public Instance Methods
alias(name=nil, command=nil)
click to toggle source
# File lib/jenkins/builder/cli.rb, line 92 def alias(name=nil, command=nil) if name.nil? || command.nil? Jenkins::Builder::App.new.list_aliases exit end Jenkins::Builder::App.new.create_alias(name, command) end
build(*jobs)
click to toggle source
# File lib/jenkins/builder/cli.rb, line 61 def build(*jobs) if options[:version] puts Jenkins::Builder::VERSION exit end if options.service.nil? service = fzf(Config.new().services).first exit if service.nil? else service = options.service end app = Jenkins::Builder::App.new(service, options) if jobs.empty? jobs = fzf(app.fetch_all_jobs) exit if jobs.empty? job = jobs.first if app.use_mbranch?(job) branches = fzf(app.all_branches) exit if branches.empty? branch = branches.first jobs = [format('%s:%s', job, branch)] else jobs = [job] end end puts "Jobs: #{jobs.join(", ")}" app.build_each(jobs) end
fzf(lines)
click to toggle source
# File lib/jenkins/builder/cli.rb, line 131 def fzf(lines) IO.popen('fzf', 'r+') do |p| p.puts(lines.join("\n")) p.close_write p.readlines.map(&:chomp) end end
info()
click to toggle source
# File lib/jenkins/builder/cli.rb, line 53 def info Jenkins::Builder::App.new.print_info(options) end
read_password(prompt)
click to toggle source
# File lib/jenkins/builder/cli.rb, line 124 def read_password(prompt) print "#{prompt}" result = STDIN.noecho(&:gets).chomp puts result end
read_text(prompt)
click to toggle source
# File lib/jenkins/builder/cli.rb, line 118 def read_text(prompt) print "#{prompt}" result = STDIN.gets.chomp result end
refresh_jobs_cache()
click to toggle source
# File lib/jenkins/builder/cli.rb, line 106 def refresh_jobs_cache Jenkins::Builder::App.new.refresh_jobs_cache end
setup()
click to toggle source
# File lib/jenkins/builder/cli.rb, line 37 def setup if options[:edit] editor = ENV['VISUAL'] || ENV['EDITOR'] || "vim" exec("#{editor} #{File.expand_path('~/.jenkins-builder.yaml')}") else url = read_text('Input Jenkins URL: ') username = read_text('Input Username: ') password = read_password('Input Password: ') git_branches = read_text('Input Git Branches separated by comma, e.g. origin/develop,origin/master: ').split(/\s*,\s*/) Jenkins::Builder::App.new.setup(url: url, username: username, password: password, branches: git_branches) end end
unalias(name)
click to toggle source
# File lib/jenkins/builder/cli.rb, line 101 def unalias(name) Jenkins::Builder::App.new.delete_alias(name) end
version()
click to toggle source
# File lib/jenkins/builder/cli.rb, line 111 def version puts Jenkins::Builder::VERSION end