feat: prepare for future commands
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
eb41a2e594
commit
801e58ca27
4 changed files with 57 additions and 14 deletions
|
@ -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
|
32
src/cli.cr
32
src/cli.cr
|
@ -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
11
src/planner/planner.cr
Normal 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
|
12
src/scaffolder/scaffolder.cr
Normal file
12
src/scaffolder/scaffolder.cr
Normal 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
|
Loading…
Reference in a new issue