# frozen_string_literal: true require "commander" class CreateSlidevPresentation EXAMPLE_SLIDES_URL = "https://raw.githubusercontent.com/renuo/slidev-theme-renuo/main/example.md" SLIDEV_THEME_NAME = "renuo" TEMPLATE_DIRECTORY = "templates/slidev" attr_accessor :presentation_name, :presentation_author def initialize @presentation_name = nil @presentation_author = nil end def run(args) presentation_name = args[0] abort(">> No presentation name given.") unless presentation_name say "# Commands to setup Slidev project with the Renuo theme:".colorize :green @presentation_name = presentation_name @presentation_author = args[1] || "Renuo AG" print_slidev_project_commands end private def print_slidev_project_commands say "mkdir #{@presentation_name}" say "cd #{@presentation_name}" say "curl -o slides.md #{EXAMPLE_SLIDES_URL}" say "echo '#{render("README.md.erb")}' > README.md" say "sed -ig 's/theme: .\\//theme: renuo/' slides.md" say "echo '#{render("package.json.erb")}' > package.json" say "npm install" say "npm run dev" end def render(filename) file_path = File.join(File.dirname(__FILE__), TEMPLATE_DIRECTORY, filename) template = File.read(file_path) renderer = ERB.new(template) renderer.result(binding) end end