require "option_parser" require "digest/sha256" require "colorize" require "./config" require "./builder/cli" require "./builder/run" require "./scaffolder/cli" require "./planner/cli" module DocMachine class Cli def initialize end def start(args) config = Config.new commands = [] of Proc(Nil) parser = OptionParser.new do |opts| opts.banner = [ "Usage: #{PROGRAM_NAME} [options]", "", "Main options:" ].join("\n") opts.on("-v", "--verbose", "Enable verbosity") do |verbose| config.verbose = true end opts.on("-h", "--help", "Show this help") do puts opts exit end opts.separator "" opts.separator "Commands:" DocMachine::Builder::Cli.add_options(opts, args, config, commands) DocMachine::Scaffolder::Cli.add_options(opts, args, config, commands) DocMachine::Planner::Cli.add_options(opts, args, config, commands) end parser.parse(args) puts commands if commands.size > 0 commands.each do |command| # puts "== Running #{command}" command.call() end else puts parser.to_s STDOUT.puts "" STDERR.puts "ERROR: no command defined" end end end end