Class: Docfu::Application

Inherits:
Object
  • Object
show all
Includes:
Mixlib::CLI
Defined in:
lib/docfu/application.rb

Overview

The commandline docfu application.

Constant Summary collapse

DEFAULT_ALIASES =

Default aliases for running docfu commands.

{
  :create_new_project => ['new', 'create', 'n'],
  :generate_output    => ['generate', 'make', 'g']
}

Instance Method Summary collapse

Instance Method Details

#aliases(cmd) ⇒ Object



72
73
74
75
# File 'lib/docfu/application.rb', line 72

def aliases(cmd)
  DEFAULT_ALIASES.each { |k, v| return k if v.include?(cmd) }
  nil
end

#create_new_projectObject



86
87
88
89
90
91
92
93
# File 'lib/docfu/application.rb', line 86

def create_new_project
  project_folder = (ARGV.size >= 2) ? ARGV.last : nil
  puts "Creating new project #{project_folder}"
  Docfu::Skeleton.setup_directory_structure(project_folder)
  Docfu::Skeleton.write_config_yml(project_folder)
  Docfu::Skeleton.write_info_yml(project_folder, config)
  puts "Complete."
end

#generate_outputObject



95
96
97
98
99
100
101
102
# File 'lib/docfu/application.rb', line 95

def generate_output
  gen_type = (ARGV.size >= 2) ? ARGV.last : 'pdf'
  invalid_type_error unless ['pdf', 'ebook', 'html'].include? gen_type
  out = Docfu.const_get(gen_type.capitalize).new
  out.check_missing_commands
  out.check_valid_project
  out.generate(config[:language].split(','), config[:debug])
end

#invalid_type_errorObject



104
105
106
107
# File 'lib/docfu/application.rb', line 104

def invalid_type_error
  puts "Error: invalid type. Please use one of `pdf, ebook, html`."
  exit 0
end

#runObject



66
67
68
69
70
# File 'lib/docfu/application.rb', line 66

def run
  trap("INT") { exit 0 }
  parse_options
  run_commands
end

#run_commandsObject



77
78
79
80
81
82
83
84
# File 'lib/docfu/application.rb', line 77

def run_commands
  if ARGV.size == 0 || aliases(ARGV.first).nil?
    puts self.opt_parser.help
    exit 0
  else
    send(aliases(ARGV.first).to_sym)
  end
end