2023-02-21 15:06:20 +00:00
|
|
|
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"
|
2023-02-21 15:06:20 +00:00
|
|
|
|
|
|
|
module DocMachine
|
|
|
|
class Cli
|
|
|
|
def initialize
|
|
|
|
end
|
|
|
|
|
|
|
|
def start(argv)
|
2023-03-25 19:40:52 +00:00
|
|
|
config = Config.new
|
2023-02-21 15:06:20 +00:00
|
|
|
|
|
|
|
parser = OptionParser.new do |opts|
|
2023-03-24 15:53:27 +00:00
|
|
|
opts.banner = [
|
|
|
|
"Usage: #{PROGRAM_NAME} [options]",
|
|
|
|
"",
|
|
|
|
"Main options:"
|
|
|
|
].join("\n")
|
2023-02-21 15:06:20 +00:00
|
|
|
|
|
|
|
opts.on("-v", "--verbose", "Enable verbosity") do |verbose|
|
2023-03-25 19:40:52 +00:00
|
|
|
config.verbose = true
|
2023-02-21 15:06:20 +00:00
|
|
|
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
|
|
|
|
|
|
|
DocMachine::Builder::Cli.add_options(opts, config)
|
|
|
|
DocMachine::Scaffolder::Cli.add_options(opts, config)
|
|
|
|
DocMachine::Planner::Cli.add_options(opts, config)
|
2023-02-21 15:06:20 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
parser.parse(ARGV)
|
|
|
|
|
2023-03-25 19:40:52 +00:00
|
|
|
builder = DocMachine::Builder::Run.new(config)
|
2023-03-24 15:53:27 +00:00
|
|
|
builder.prepare
|
|
|
|
builder.start
|
|
|
|
builder.wait
|
2023-02-21 15:06:20 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|