docmachine-utils/src/scaffold/run.cr
Glenn Y. Rolland 3f985f2751
All checks were successful
continuous-integration/drone/push Build is passing
feat: use Log library instead of puts
2023-04-25 12:28:16 +02:00

62 lines
1.4 KiB
Crystal

# Core
require "file_utils"
# Internal
require "./config"
# Shards
require "term-prompt"
module DocMachine::Scaffold
class Run
private property config : DocMachine::Scaffold::Config
def initialize(@config)
end
# Verify parameters
def prepare()
if ! File.directory? @config.target_directory
Log.error { "ERROR: target must be a directory" }
exit 1
end
Log.info { "Target directory: #{@config.target_directory}" }
if !@config.force
prompt = Term::Prompt.new
confirm = prompt.no?("Are you sure you want to proceed?")
exit 1 if !confirm
end
end
def start()
Log.info { "== Scaffolding #{@config.target_directory}" }
p = Path.new(@config.target_directory)
cwd = Dir.current
["docs", "slides", "images"].each do |dir|
p_sub = p.join(dir)
Log.info { "-- creating #{p_sub}" }
FileUtils.mkdir_p(p_sub)
end
["docs", "slides"].each do |dir|
p_sub = p.join(dir)
FileUtils.cd(p_sub)
Log.info { "-- creating link to images in #{p_sub}" }
if File.symlink? "images"
FileUtils.rm "images"
end
FileUtils.ln_sf(Path.new("..","images"), Path.new("images"))
FileUtils.cd(cwd)
end
Log.info { "-- creating README.md" }
FileUtils.touch("README.md")
end
# Verify parameters
def wait()
end
end
end