feat: prepare for future commands
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Glenn Y. Rolland 2023-03-24 16:53:27 +01:00
parent eb41a2e594
commit 801e58ca27
4 changed files with 57 additions and 14 deletions

View file

@ -1,6 +1,6 @@
module DocMachine
class Launcher
class Builder
def initialize(config)
@basedir = config[:data_dir]? ? config[:data_dir] : Dir.current
@basehash = Digest::SHA256.hexdigest(@basedir)[0..6]
@ -120,5 +120,19 @@ module DocMachine
def docker_opts()
end
def self.add_options(opts)
opts.on("build", "Build content and produce deliverables") do
opts.banner = [
"Usage: #{PROGRAM_NAME} build [options]",
"",
"Main options:"
].join("\n")
opts.separator ""
opts.separator "Builder Options:"
opts.on("-t", "--test", "Test") { puts "Test" }
end
end
end
end

View file

@ -2,7 +2,9 @@ require "option_parser"
require "digest/sha256"
require "colorize"
require "./launcher"
require "./builder/builder.cr"
require "./scaffolder/scaffolder.cr"
require "./planner/planner.cr"
module DocMachine
class Cli
@ -13,7 +15,11 @@ module DocMachine
options = {} of Symbol => String
parser = OptionParser.new do |opts|
opts.banner = "Usage: script.cr [options]"
opts.banner = [
"Usage: #{PROGRAM_NAME} [options]",
"",
"Main options:"
].join("\n")
opts.on("-d", "--data-dir DIR", "Content directory") do |dir|
options[:data_dir] = dir
@ -35,6 +41,12 @@ module DocMachine
puts opts
exit
end
opts.separator ""
opts.separator "Commands:"
DocMachine::Builder.add_options(opts)
DocMachine::Scaffolder.add_options(opts)
DocMachine::Planner.add_options(opts)
end
parser.parse(ARGV)
@ -47,20 +59,14 @@ module DocMachine
docker_image = "glenux/docmachine:latest"
if options[:help]?
puts "Usage: script.cr [options]"
puts ""
puts "-d, --data-dir DIR Content directory"
puts "-a, --action ACTION Action (watch, build, shell, etc.)"
puts "-t, --tty Enable TTY mode (needed for shell)"
puts "-v, --verbose Enable verbosity"
puts "-h, --help Show this help"
puts parser.to_s
exit
end
launcher = DocMachine::Launcher.new(options)
launcher.prepare
launcher.start
launcher.wait
builder = DocMachine::Builder.new(options)
builder.prepare
builder.start
builder.wait
end
end
end

11
src/planner/planner.cr Normal file
View file

@ -0,0 +1,11 @@
module DocMachine
class Planner
def self.add_options(opts)
opts.on("content", "Generate content and structure") do
opts.banner = "Usage: #{PROGRAM_NAME} plan [options]"
opts.on("-t", "--test", "Test") { puts "Test" }
end
end
end
end

View file

@ -0,0 +1,12 @@
module DocMachine
class Scaffolder
def self.add_options(opts)
opts.on("scaffold", "Scaffold directory") do
opts.banner = "Usage: #{PROGRAM_NAME} scaffold [options]"
opts.on("-t", "--test", "Test") { puts "Test" }
end
end
end
end