docmachine-utils/src/cli.cr
Glenn Y. Rolland a921acc3f9
All checks were successful
continuous-integration/drone/push Build is passing
ci: add missing libreadline-dev
2023-04-24 18:43:04 +02:00

64 lines
1.4 KiB
Crystal

require "option_parser"
require "digest/sha256"
require "colorize"
require "./config"
require "./build/cli"
require "./build/run"
require "./scaffold/cli"
require "./scaffold/run"
require "./plan/cli"
require "./plan/run"
require "./write/cli"
require "./write/run"
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::Scaffold::Cli.add_options(opts, args, config, commands)
DocMachine::Plan::Cli.add_options(opts, args, config, commands)
DocMachine::Write::Cli.add_options(opts, args, config, commands)
DocMachine::Build::Cli.add_options(opts, args, config, commands)
end
parser.parse(args)
Log.info { "commands = #{commands}" }
if commands.size < 1
puts parser.to_s
Log.error { "ERROR: no command defined" }
end
commands.each do |command|
# puts "== Running #{command}"
command.call()
end
end
end
end