Sha256: 5a79a4a6dfce772cb9eb37a9fda4debeb7d867d8f027e6a658fd21279da0d64e

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

require "thor"

require "jobshop/dummy_app"
require "generators/jobshop/app/app_generator"
require "generators/jobshop/dummy/dummy_generator"

module Jobshop
  class CLI
    class Unbound < Thor
      desc "new", "Create a new Jobshop application"
      default_command def new(*)
        Jobshop::Generators::AppGenerator.start \
          Rails::Generators::ARGVScrubber.new(ARGV).prepare!
      end

      def help
        Jobshop::Generators::AppGenerator.help(shell)
      end
    end

    class Dummy < Thor
      desc "create", "Create the dummy app"
      default_command def create
        ARGV.shift; ARGV.unshift("new", Jobshop::DummyApp.path)
        Jobshop::Generators::DummyGenerator.start \
          Rails::Generators::ARGVScrubber.new(ARGV).prepare!
      end
    end

    class Development < Thor
      register Jobshop::CLI::Dummy, "dummy", "dummy [options]", "Manage dummy app used for tests"
    end

    class << self
      def start
        if [ "-v", "--version" ].include?(ARGV[0])
          require "jobshop/version"
          puts "Jobshop #{Jobshop.gem_version}"
          exit 0
        elsif jobshop_application?
          puts "No tasks available for the application environment yet"
        elsif jobshop_development?
          Jobshop::CLI::Development.start
        else
          Jobshop::CLI::Unbound.start
        end
      end

      private def jobshop_application?
        has_executable? && !has_gemspec?
      end

      private def jobshop_development?
        has_executable? && has_gemspec?
      end

      private def has_executable?
        @has_executable ||= File.file?("bin/jobshop")
      end

      private def has_gemspec?
        @jobshop_development ||= File.file?("jobshop.gemspec")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jobshop-0.0.101 lib/jobshop/cli.rb