docmachine-cli/src/scaffold/run.cr

62 lines
1.4 KiB
Crystal
Raw Normal View History

2023-03-27 16:01:20 +02:00
# Core
require "file_utils"
# Internal
require "./config"
# Shards
require "term-prompt"
module DocMachine::Scaffold
2023-03-27 16:01:20 +02:00
class Run
private property config : DocMachine::Scaffold::Config
2023-03-27 16:01:20 +02:00
def initialize(@config)
end
# Verify parameters
def prepare()
if ! File.directory? @config.target_directory
2023-04-25 12:28:16 +02:00
Log.error { "ERROR: target must be a directory" }
2023-03-27 16:01:20 +02:00
exit 1
end
2023-04-25 12:28:16 +02:00
Log.info { "Target directory: #{@config.target_directory}" }
2023-03-27 16:01:20 +02:00
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()
2023-04-25 12:28:16 +02:00
Log.info { "== Scaffolding #{@config.target_directory}" }
2023-03-27 16:01:20 +02:00
p = Path.new(@config.target_directory)
cwd = Dir.current
["docs", "slides", "images"].each do |dir|
p_sub = p.join(dir)
2023-04-25 12:28:16 +02:00
Log.info { "-- creating #{p_sub}" }
2023-03-27 16:01:20 +02:00
FileUtils.mkdir_p(p_sub)
end
["docs", "slides"].each do |dir|
p_sub = p.join(dir)
FileUtils.cd(p_sub)
2023-04-25 12:28:16 +02:00
Log.info { "-- creating link to images in #{p_sub}" }
2023-03-27 16:01:20 +02:00
if File.symlink? "images"
FileUtils.rm "images"
end
FileUtils.ln_sf(Path.new("..","images"), Path.new("images"))
FileUtils.cd(cwd)
end
2023-04-25 12:28:16 +02:00
Log.info { "-- creating README.md" }
2023-03-27 16:01:20 +02:00
FileUtils.touch("README.md")
end
# Verify parameters
def wait()
end
end
end