module LeapCli module Commands extend self extend LeapCli::Util # # # # keeps prompting the user for a numbered choice, until they pick a good one or bail out. # # # # block is yielded and is responsible for rendering the choices. # # def numbered_choice_menu(msg, items, &block) while true say("\n" + msg + ':') items.each_with_index &block say("q. quit") index = ask("number 1-#{items.length}> ") if index.empty? next elsif index =~ /q/ bail! else i = index.to_i - 1 if i < 0 || i >= items.length bail! else return i end end end end # # # # read a file, exit if the file doesn't exist. # # # def read_file!(file_path) # if !File.exists?(file_path) # bail!("File '%s' does not exist." % file_path) # else # File.readfile(file_path) # end # end # ## # ## LOGGING # ## # def log0(message=nil, &block) # if message # puts message # elsif block # puts yield(block) # end # end # def log1(message=nil, &block) # if LeapCli.log_level > 0 # if message # puts message # elsif block # puts yield(block) # end # end # end # def log2(message=nil, &block) # if LeapCli.log_level > 1 # if message # puts message # elsif block # puts yield(block) # end # end # end # def progress(message) # log1(" * " + message) # end # ## # ## QUITTING # ## # # # # quit and print help # # # def help!(message=nil) # ENV['GLI_DEBUG'] = "false" # help_now!(message) # #say("ERROR: " + message) # end # # # # quit with a message that we are bailing out. # # # def bail!(message="") # say(message) # say("Bailing out.") # raise SystemExit.new # #ENV['GLI_DEBUG'] = "false" # #exit_now!(message) # end # # # # quit with no message # # # def quit!(message='') # say(message) # raise SystemExit.new # end # # # # bails out with message if assertion is false. # # # def assert!(boolean, message) # bail!(message) unless boolean # end # # # # assert that the command is available # # # def assert_bin!(cmd_name) # assert! `which #{cmd_name}`.strip.any?, "Sorry, bailing out, the command '%s' is not installed." % cmd_name # end end end