module SpiffyCli

Constants

DEFAULT_CSS_FILE
DEFAULT_DIR
DEFAULT_HTML
DEFAULT_PDF
DEFAULT_TEMPLATE_FILE
DOT_FILE

Public Class Methods

handle(options) click to toggle source
# File lib/spiffy_cli.rb, line 65
def self.handle(options)
  has_dot_file = File.exists?(DOT_FILE)

  if File.exists?(DOT_FILE)
    sets = YAML.load_file(DOT_FILE)
  end

  if ARGV.any?
    sets = ARGV.map do |arg|
      set = sets.find({}) do |set|
        set["markdown_files"].any? do |markdown_file|
          File.fnmatch(markdown_file, arg)
        end
      end
      set.merge({ "markdown_files" => [arg] })
    end
  end

  if !sets
    puts opt_parser
    return
  end

  sets.each do |set|
    set["markdown_files"].each do |input|
      Dir[input].each do |file|
        print "Converting #{file}..."

        output_html = options[:html]
        output_html = set["html"] if output_html.nil?
        output_html = DEFAULT_HTML if output_html.nil?

        output_pdf = options[:pdf]
        output_pdf = set["pdf"] if output_pdf.nil?
        output_pdf = DEFAULT_PDF if output_pdf.nil?

        Spiffy.markup_to_html(file,
                              css_file: options[:css_file] || set["css_file"] || DEFAULT_CSS_FILE,
                              template_file: options[:template_file] || set["template_file"] || DEFAULT_TEMPLATE_FILE,
                              output_html: output_html,
                              output_pdf: output_pdf,
                              output_dir: options[:output_dir] || set["output_dir"])
        puts "done"
      end
    end
  end
end
main() click to toggle source
# File lib/spiffy_cli.rb, line 15
def self.main
  options = {}

  opt_parser = OptionParser.new do |opt|
    opt.banner = "Usage: spiffy [options] [file] [file] ..."
    opt.separator("Version: #{SpiffyVersion::VERSION}")
    opt.separator("")
    opt.separator("Options")

    opt.on("-c", "--css [css]", "CSS to include inline in the HTML file output") do |css|
      options[:css_file] = css
    end

    opt.on("-t", "--template [template]", "Template to wrap the resulting HTML") do |template|
      options[:template_file] = template
    end

    opt.on("-p", "--pdf [on|off]", "Output PDF files (default: off)") do |on_or_off|
      options[:pdf] = on_or_off != "off"
    end

    opt.on("-m", "--html [on|off]", "Output HTML files (default: on)") do |on_or_off|
      options[:html] = on_or_off != "off"
    end

    opt.on("-o", "--out [output directory]", "Output files to this directory") do |output_dir|
      options[:output_dir] = output_dir
    end

    opt.on("-h", "--help", "This usage outline.") do
      puts opt_parser
      options[:help] = true
    end

    opt.separator("")
    
    opt.separator("Alternatively:")
    opt.separator("Create a .spiffy.yml in this directory with options within.")
    opt.separator("See https://github.com/leighmcculloch/spiffy.")
    
    opt.separator("")
  end

  opt_parser.parse!

  return if options[:help]
  
  self.handle(options)
end