Sha256: 6572c0a9c1aea571af9bc69e924495085a3c1fdf3cf2f2927d8c996fa94556b8

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

#!/usr/bin/env ruby
# frozen_string_literal: true

lib = File.expand_path('../lib', __dir__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)

require 'thor'
require 'logger'

require 'quicken'
require 'quicken/cli/init'
require 'quicken/commands/autoloader'

LOGGER = Logger.new(STDOUT)
LOGGER.level = Logger::WARN
LOGGER.formatter = proc { |severity, datetime, progname, msg|
  "#{severity} [#{datetime}] - [#{progname.upcase}] #{msg}\n"
}

module Quicken
  class App < Thor
    class_option :debug, type: :boolean, aliases: [:d]

    option :version, type: :boolean, aliases: [:v]
    no_commands do
      def version
        puts "Quicken #{Quicken::VERSION}"
      end
    end

    def initialize *args
      super
      LOGGER.level = Logger::DEBUG if options.debug?
    end

    register Quicken::CLI::Init, :init, 'init', 'Initialize a new recipe'

    option :recipe, type: :string, aliases: [:f]
    desc 'create', 'Create a new project based on a recipe'
    def create
      recipe = options.recipe || './recipe.yml'
      cmd = Quicken::Commands::Run.call recipe
      handle_errors cmd.errors unless cmd.success?
    end

    default_command :help

    private

    def handle_errors errors
      errors.each { |error| LOGGER.error(error[0]) { error[1] } }
    end
  end
end

Quicken::App.start ARGV

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
quicken-ruby-0.1.1 exe/qk