Sha256: eeea63f1335d18c9249ef0e2728140ea1e1ca07f9102ccd36991ad23457f32ad

Contents?: true

Size: 1.31 KB

Versions: 4

Compression:

Stored size: 1.31 KB

Contents

# 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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
renuo-cli-4.5.0 lib/renuo/cli/app/create_slidev_presentation.rb
renuo-cli-4.3.0 lib/renuo/cli/app/create_slidev_presentation.rb
renuo-cli-4.2.1 lib/renuo/cli/app/create_slidev_presentation.rb
renuo-cli-4.2.0 lib/renuo/cli/app/create_slidev_presentation.rb