Sha256: cbd4782e3ad2a6129a7ec3cf84f64a015f4ec6d4005a6ebba6b38a31094050f0

Contents?: true

Size: 1.75 KB

Versions: 5

Compression:

Stored size: 1.75 KB

Contents

#!/usr/bin/env ruby

require 'active_support/core_ext/hash'
require 'thor'
require_relative '../lib/schema_dev/config'
require_relative '../lib/schema_dev/runner'

def runner
    $config ||= SchemaDev::Config.load
    $runner ||= SchemaDev::Runner.new($config)
end

class CLI < Thor

  def self.matrix_options
    method_option :dry_run, aliases: "-n", type: :boolean, desc: "Show what the commands would be without running them"
    method_option :quick, type: :boolean, desc: "Only execute on the 'quick' choice: #{$config ? $config.quick.inspect : "[from schema_dev.yml]"}"
    method_option :ruby, type: :string, desc: "Only execute for the specified version of ruby"
    method_option :rails, type: :string, desc: "Only execute for the specified version of rails"
    method_option :db, type: :string, desc: "Only execute for the specified database"
  end

  desc "travis", "create .travis.yml based on schema_dev.yml values"
  def travis
    runner.travis
  end

  desc "gemfiles", "create gemfiles/* hierarchy based on schema_dev.yml values"
  def gemfiles
    runner.gemfiles
  end

  desc "matrix", "run a command over the matrix"
  matrix_options
  def matrix(*args)
    runner.run(args, **options.to_h.symbolize_keys)
  end

  desc "bundle", "shorthand for '#{$0} matrix bundle ...'"
  matrix_options
  def bundle(*args)
    runner.run('bundle', args, **options.to_h.symbolize_keys)
  end

  desc "rake", "shorthand for '#{$0} matrix bundle exec rake ...'"
  matrix_options
  def rake(*args)
    runner.run('bundle', 'exec', 'rake', args, **options.to_h.symbolize_keys)
  end

  desc "rspec", "shorthand for '#{$0} bundle exec rspec ...'"
  matrix_options
  def rspec(*args)
    runner.run('bundle', 'exec', 'rspec', args, **options.to_h.symbolize_keys)
  end

end

CLI.start(ARGV)

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
schema_dev-1.2.2 bin/schema_dev
schema_dev-1.2.1 bin/schema_dev
schema_dev-1.2.0 bin/schema_dev
schema_dev-1.1.0 bin/schema_dev
schema_dev-1.0.3 bin/schema_dev