Class: Apiary::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/apiary/cli.rb

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (CLI) initialize(args)

Returns a new instance of CLI



8
9
10
11
12
# File 'lib/apiary/cli.rb', line 8

def initialize(args)
  options = parse_options!(args)
  @command = options.delete(:command)
  run(options)
end

Instance Attribute Details

- (Object) command (readonly)

Returns the value of attribute command



6
7
8
# File 'lib/apiary/cli.rb', line 6

def command
  @command
end

Instance Method Details

- (Object) parse_options!(args)



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/apiary/cli.rb', line 18

def parse_options!(args)
  options = {}
  command = nil
  if args.first && !args.first.start_with?("-")
    command = args.first
  end

  options_parser = OptionParser.new do |opts|
    opts.on("--path [PATH]") do |path|
      raise OptionParser::InvalidOption unless ["fetch", "preview", "publish"].include? command
      options[:path] = path
    end

    opts.on("--output [PATH]") do |path|
      raise OptionParser::InvalidOption unless ["fetch", "preview"].include? command
      options[:output] = path
    end

    opts.on("--api_host API_HOST") do |api_host|
      raise OptionParser::InvalidOption unless ["fetch", "preview", "publish"].include? command
      options[:api_host] = api_host
    end

    opts.on("--api-name API_HOST") do |api_name|
      raise OptionParser::InvalidOption unless ["fetch", "publish"].include? command
      options[:api_name] = api_name
    end

    opts.on("--message COMMIT_MESSAGE") do |commit_message|
      raise OptionParser::InvalidOption if command != "publish"
      options[:commit_message] = commit_message
    end

    opts.on("--browser BROWSER") do |browser|
      raise OptionParser::InvalidOption if command != "preview"
      options[:browser] = browser
    end

    opts.on("--server") do
      raise OptionParser::InvalidOption if command != "preview"
      options[:server] = true
    end

    opts.on("--port [PORT]") do |port|
      raise OptionParser::InvalidOption unless ["fetch", "preview", "publish"].include? command
      options[:port] = port
    end

    opts.on('-v', '--version') do
      raise OptionParser::InvalidOption if command
      command = :version
    end

    opts.on( '-h', '--help') do
      raise OptionParser::InvalidOption if command
      command = :help
    end
  end

  options_parser.parse!
  options[:command] = command || :help
  options

rescue OptionParser::InvalidOption => e
  puts e
  puts Apiary::Command::Help.banner
  exit 1
end

- (Object) run(options)



14
15
16
# File 'lib/apiary/cli.rb', line 14

def run(options)
  Apiary::Command::Runner.run(@command, options)
end