Sha256: 45e335c9b660a4c29cc41773ab0aabb4d6419ddc7ff38575a07fc2953374d769

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

#!/usr/bin/env ruby

$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')

require 'shining'

ACTIONS   = {
  :new_on!            => ['build'],
  :new_slide!         => ['slide'],
  :compile_templates! => ['compile'],
  :vendorize          => ['vendor', 'vendorize']
}

def bail! reason
  Shining.error reason
  exit -2
end

def figure_what_to_do!
  help_and_exit! if ARGV.empty?
  if ACTIONS.values.flatten.include? ARGV.first
    action = ACTIONS.select { |action, args| args.include? ARGV.first }.flatten.first
    send action, *ARGV[1..(ARGV.length - 1)]
  else
    new_on! ARGV.first
  end
end

def help_and_exit!
  STDERR.puts <<-HELP
Shine - Generates a new Shining presentation
  Usage:
    shine <directory>
  Example:
    shine mycoolpreso
  HELP
  exit -1
end

def new_on! dir
  Shining::Preso.new dir
end

def new_slide! name, format = 'html'
  preso = Shining::Preso.open Dir.pwd
  preso.new_slide "#{name}.#{format}", :with => ['styles', 'script']
end

def vendorize
  preso = Shining::Preso.open Dir.pwd
  bail! 'This preso seems vendorized already.' if preso.vendorized?
  preso.vendorize!
end

def compile_templates!
  preso = Shining::Preso.open Dir.pwd
  preso.compile_templates!
end

def shining?
  File.exists?(Dir.pwd/'config.json') and File.directory?(Dir.pwd/'slides')
end

figure_what_to_do!

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shining-1.0.1 bin/shine