class PrettyDoc::Cli

Constants

DEFAULT_OUTPUT_DIR

Public Class Methods

run!(args) click to toggle source
# File lib/pretty_doc/cli.rb, line 9
def run!(args)
  options = OpenStruct.new
  options.template = 'default'
  options.output = output_dir(DEFAULT_OUTPUT_DIR)
  options.files = []
  options.enable_line_numbers = false

  opts_parser = OptionParser.new do |opts|
    opts.banner = 'Pretty document empowered by markdown language.'
    opts.separator ''
    opts.separator 'Usage: pretty_doc [options] files'
    opts.separator ''
    opts.separator 'Options:'
    opts.separator ''

    opts.on_tail('-v', '--version', 'output the version number') do
      puts PrettyDoc::VERSION
      exit
    end

    opts.on_tail('-h', '--help', 'output usage information') do
      puts opts
      exit
    end

    opts.on('-o', '--output [path]', 'output to a given folder, default is `./out`') do |o|
      options.output = output_dir(o || DEFAULT_OUTPUT_DIR)

    end

    opts.on('-t', '--template [folder]', 'choose a template') do |tmpl|
      options.template = tmpl
    end

    opts.on('-l', '--line-numbers', 'enable line numbers for code highlight') do
      options.enable_line_numbers = true
    end
  end

  opts_parser.parse!(args)

  if args.length == 0
    options.files = Dir.glob('./*.md')
  else
    args.each do |arg|
      if File.directory? arg
        arg = File.join(File.expand_path(arg), '*.md')
      end
      options.files.concat(Dir.glob(arg))
    end
  end

  if options.files.length == 0
    puts 'No file found'
    puts opts_parser
    exit
  end

  options.template = PrettyDoc.template(options.template)
  PrettyDoc::Resource::Source.build(options)
end

Private Class Methods

output_dir(path) click to toggle source
# File lib/pretty_doc/cli.rb, line 73
def output_dir(path)
  path = File.expand_path(path)
  if !Dir.exist? path
    puts "Directory #{path} is not exists, creating new..."
    FileUtils.mkdir_p(path)
  else
    path
  end
end