Sha256: b97f2c2486b612375e95b7af17fcce5f8cf23191dd22f4cb2634dd3bd1d46d36
Contents?: true
Size: 1.65 KB
Versions: 2
Compression:
Stored size: 1.65 KB
Contents
require 'internet' require 'views/cli' require 'use_cases/new' require 'use_cases/list' require 'settings_file' module Idonethis::Adapters class Cli class << self def run(argv={}) args = parse(argv) command,*rest = argv args.merge!({ opts: rest, log: log, internet: Idonethis::Adapters::Internet, view: Idonethis::Adapters::Views::Cli::List.method(:apply)}) credential = Settings.credential log.call "args: #{args}, command: #{command}, rest: #{rest}" use_cases = { list: Idonethis::UseCases::List.method(:apply), new: Idonethis::UseCases::New.method(:apply), config: Idonethis::UseCases::Config.method(:apply), help: ->(credential, args) { puts "TODO: implement help" } } use_case = use_cases[command.to_sym] unless use_case puts "No command <#{command.to_sym}> found" return end use_case.call credential, args end private def log @log ||= ENV.include?("LOG") ? ->(msg){puts "[LOG] #{msg}"} : ->(_){} end def parse(argv={}) args = {} require 'optparse' OptionParser.new do |opts| opts.banner = "Usage: command [options]" opts.on("-v", "--[no-]verbose", "Run verbosely") do |v| args[:verbose] = v end opts.on("-m MESSAGE", "Message") do |m| args[:message] = m end opts.on("-d", "Dry run") do |_| args[:dry_run] = true end end.parse! args end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
idonethis-cli-0.2.1 | lib/adapters/cli.rb |
idonethis-cli-0.2.0 | lib/adapters/cli.rb |