docmachine-cli/src/cli.cr

60 lines
1.3 KiB
Crystal
Raw Normal View History

require "option_parser"
require "digest/sha256"
require "colorize"
2023-03-25 19:40:52 +00:00
require "./config"
require "./builder/cli"
require "./builder/run"
require "./scaffolder/cli"
require "./planner/cli"
module DocMachine
class Cli
def initialize
end
2023-03-26 09:41:40 +00:00
def start(args)
2023-03-25 19:40:52 +00:00
config = Config.new
2023-03-26 09:41:40 +00:00
commands = [] of Proc(Nil)
parser = OptionParser.new do |opts|
2023-03-24 15:53:27 +00:00
opts.banner = [
"Usage: #{PROGRAM_NAME} [options]",
"",
"Main options:"
].join("\n")
opts.on("-v", "--verbose", "Enable verbosity") do |verbose|
2023-03-25 19:40:52 +00:00
config.verbose = true
end
opts.on("-h", "--help", "Show this help") do
puts opts
exit
end
2023-03-24 15:53:27 +00:00
opts.separator ""
opts.separator "Commands:"
2023-03-25 19:40:52 +00:00
2023-03-26 09:41:40 +00:00
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
2023-03-26 09:41:40 +00:00
parser.parse(args)
2023-03-27 14:01:20 +00:00
puts commands
2023-03-27 14:01:20 +00:00
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"
2023-03-26 09:41:40 +00:00
end
end
end
end