class Jets::CLI::Main

Constants

RESERVED_COMMANDS

Public Class Methods

exit_on_failure?() click to toggle source
# File lib/jets/cli/main.rb, line 13
def self.exit_on_failure?
  true
end

Public Instance Methods

bundle(*args) click to toggle source
# File lib/jets/cli/main.rb, line 21
def bundle(*args)
  exec_command("bundle", *args)
end
console() click to toggle source
# File lib/jets/cli/main.rb, line 36
def console
  exec_command("./bin/console")
end
method_missing(engine_or_gem, *args) click to toggle source
Calls superclass method
# File lib/jets/cli/main.rb, line 57
def method_missing(engine_or_gem, *args)
  options =
    case engine_or_gem.to_s
    when "all"
      {all: true}
    when "all-gems"
      {all_gems: true}
    when "all-engines"
      {all_engines: true}
    when *engines
      {engine: engine_or_gem.to_s}
    when *gems
      {engine: engine_or_gem.to_s, gem: true}
    end

  return super if options.nil?

  self.class.start(args, class_options: options)
end
rails(*args) click to toggle source
# File lib/jets/cli/main.rb, line 45
def rails(*args)
  exec_command("./bin/rails", *args)
end
respond_to_missing?(engine_or_gem, *args) click to toggle source
# File lib/jets/cli/main.rb, line 77
def respond_to_missing?(engine_or_gem, *args)
  case engine_or_gem.to_s
  when "all"
    true
  when "all-gems"
    true
  when "all-engines"
    true
  when *engines
    true
  when *gems
    true
  else
    false
  end
end
yarn(*args) click to toggle source
# File lib/jets/cli/main.rb, line 53
def yarn(*args)
  exec_command("yarn", *args)
end

Private Instance Methods

app_root() click to toggle source
# File lib/jets/cli/main.rb, line 112
def app_root
  # @app_root ||= File.expand_path("../../..", __dir__)
  @app_root ||= if defined?(Rails)
    Rails.root
  else
    Dir.pwd
  end
end
engine() click to toggle source
# File lib/jets/cli/main.rb, line 96
def engine
  @engine ||= options[:engine] || ENV["ENGINE"]
end
engine_root() click to toggle source
# File lib/jets/cli/main.rb, line 108
def engine_root
  @engine_root ||= "#{options[:gem] ? "gems" : "engines"}/#{engine}"
end
engines() click to toggle source
# File lib/jets/cli/main.rb, line 100
def engines
  @engines ||= Dir["*", base: "engines"]
end
exec_command(*args) click to toggle source

rubocop:disable Lint/MixedRegexpCaptureTypes

# File lib/jets/cli/main.rb, line 122
def exec_command(*args)
  if engine.nil? || engine.empty?
    @engine = args.each do |arg|
      next unless match = arg&.match(%r{^(engines|gems)/(?<name>[a-z_]+)}) # rubocop:disable Lint/AssignmentInCondition
      break match[:name]
    end

    if engine
      args.map! { |arg| arg ? arg.sub("#{engine_root}/", "") : arg }
    else
      raise "You did not provide an engine name."
    end
  end

  subshell(engine_root, *args)
end
gems() click to toggle source
# File lib/jets/cli/main.rb, line 104
def gems
  @gems ||= Dir["*", base: "gems"]
end
subshell(dir, command, *args) click to toggle source

rubocop:enable Lint/MixedRegexpCaptureTypes

# File lib/jets/cli/main.rb, line 140
def subshell(dir, command, *args)
  Bundler.with_original_env do
    new_root = File.join(app_root, dir)

    Dir.chdir(new_root) do
      return if Kernel.system(command, *args)
    end
  end

  message = "Command `#{command}` (from #{dir}) returned non-zero exit code"

  $stdout.puts message
  raise ::Jets::CLI::Exceptions::CommandFailed, message unless options[:ignore_failures]
end