Class: Sinator::Command

Inherits:
Object
  • Object
show all
Defined in:
lib/sinator/command.rb

Class Method Summary collapse

Class Method Details

.parse(options) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
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
# File 'lib/sinator/command.rb', line 7

def self.parse(options)
  options = %w(--help) if options.empty? || options.nil?
  args = {}
  result = nil

  option_parser = OptionParser.new do |opts|
    opts.banner = "Usage: sinator [options]"

    opts.on("-h", "--help", "Print this help") do
      result = opts.to_s
    end

    opts.on("-v", "--version", "Show version") do
      result = Sinator::VERSION
    end

    opts.on("-nNAME", "--name=NAME", "generate app with name from this option") do |name|
      args[:name] = name
    end

    opts.on("-tDIR", "--target=DIR", "instead of current directory, generate app in target DIR") do |target|
      args[:target] = target
    end

    opts.on("-d", "--database", "add sequel orm for postgres sql") do
      args[:database] = true
    end

  end

  option_parser.parse! options

  result = run(args) unless args[:name].nil?

  result
end

.run(args) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/sinator/command.rb', line 44

def self.run(args)
  generator = Sinator::Generator.new args[:name],
    destination: args[:target], with_database: args[:database]

  generator.generate_app
  generator.generate_rakefile
  generator.generate_gemfile
  generator.generate_bundle_config
  generator.generate_puma_config

  msg = "#{args[:name]} is successfully generated"
  msg << " in #{args[:target]}" if args[:target]

  msg
end