Sha256: 61427862b2058bcbb3d044390fd60c984638350e4e93addc0a922368b42fc90e

Contents?: true

Size: 1.46 KB

Versions: 8

Compression:

Stored size: 1.46 KB

Contents

require 'optparse'
require_relative 'generator'

module Sinator

  class Command
    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

    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
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
sinator-4.0.0 lib/sinator/command.rb
sinator-3.1.1 lib/sinator/command.rb
sinator-3.1.0 lib/sinator/command.rb
sinator-3.0.4 lib/sinator/command.rb
sinator-3.0.3 lib/sinator/command.rb
sinator-3.0.2 lib/sinator/command.rb
sinator-3.0.1 lib/sinator/command.rb
sinator-3.0.0 lib/sinator/command.rb