class Nymphia::CLI

Public Class Methods

new(argv) click to toggle source
# File lib/nymphia/cli.rb, line 10
def initialize(argv)
  @argv = argv.dup
  parser.parse!(@argv)
end
start(argv) click to toggle source
# File lib/nymphia/cli.rb, line 6
def self.start(argv)
  new(argv).run
end

Public Instance Methods

run() click to toggle source
# File lib/nymphia/cli.rb, line 15
def run
  validate_args!

  dsl_code_file = File.open(@file_path)
  absolute_dsl_file_path = File.absolute_path(dsl_code_file.path)
  dsl_code = dsl_code_file.read

  dsl = Nymphia::DSL.new(dsl_code, absolute_dsl_file_path)
  dsl.compile

  if @output_file_path
    File.open(@output_file_path, 'w') do |file|
      dsl.render(file)
    end
  else
    dsl.render(STDOUT)
  end
end

Private Instance Methods

parser() click to toggle source
# File lib/nymphia/cli.rb, line 36
def parser
  @parser ||= OptionParser.new do |opts|
    opts.banner = 'nymphia'
    opts.version = Nymphia::VERSION
    opts.on('-f', '--file=FILE', 'Your DSL code file') { |f| @file_path = f }
    opts.on('-o', '--output=FILE', 'Output file (default: stdout)') { |o| @output_file_path = o }
  end
end
validate_args!() click to toggle source
# File lib/nymphia/cli.rb, line 45
def validate_args!
  unless @file_path
    raise ArgumentError.new('-f (--file) options is required.')
  end
end