Sha256: b50626ec27b0ca1c811f603d0beedfd6544385b95642c07a2a3929db6e08f901

Contents?: true

Size: 1.95 KB

Versions: 8

Compression:

Stored size: 1.95 KB

Contents

# frozen_string_literal: true

require 'fileutils'
require 'tmpdir'
require 'rubygems'

module DeclareSchema
  module Command
    BANNER = <<~EOS
      Usage:
          declare_schema new <app_name> [rails_opt]              Creates a new declare_schema Application
          declare_schema generate|g <generator> [ARGS] [options] Fires the declare_schema:<generator>
          declare_schema destroy <generator> [ARGS] [options]    Tries to undo generated code
          declare_schema --help|-h                               This help screen

    EOS

    class << self
      def run(gem, args, version, **gemfile_options)
        command = args.shift

        case command

        when nil
          puts "\nThe command is missing!\n\n"
          puts BANNER
          exit(1)

        when /^--help|-h$/
          puts BANNER
          exit

        when 'new'
          app_name = args.shift or begin
            puts "\nThe application name is missing!\n\n"
            puts BANNER
            exit(1)
          end
          template_path = File.join(Dir.tmpdir, "declare_schema_app_template")
          File.open(template_path, 'w') do |file|
            file.puts ["gem '#{gem}', '>= #{version}'", (gemfile_options.inspect unless gemfile_options.empty?)].compact.join(', ')
          end
          puts "Generating Rails infrastructure..."
          puts("rails new #{app_name} #{args * ' '} -m #{template_path}")
          system("rails new #{app_name} #{args * ' '} -m #{template_path}")
          File.delete(template_path)

        when /^(g|generate|destroy)$/
          cmd = Regexp.last_match(1)
          if args.empty?
            puts "\nThe generator name is missing!\n\n"
            puts BANNER
            exit(1)
          else
            system("bundle exec rails #{cmd} declare_schema:#{args * ' '}")
          end

        else
          puts "\n  => '#{command}' is an unknown command!\n\n"
          puts BANNER
          exit(1)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
declare_schema-2.3.1 lib/declare_schema/command.rb
declare_schema-2.3.0 lib/declare_schema/command.rb
declare_schema-2.3.0.pre.is.0 lib/declare_schema/command.rb
declare_schema-2.2.1 lib/declare_schema/command.rb
declare_schema-2.2.0.colin.1 lib/declare_schema/command.rb
declare_schema-2.2.0 lib/declare_schema/command.rb
declare_schema-2.1.0 lib/declare_schema/command.rb
declare_schema-2.1.0.pre.1 lib/declare_schema/command.rb