lib/skunk/command_factory.rb
# frozen_string_literal: true
require "rubycritic/command_factory"
module Skunk
# Knows how to calculate the command that was request by the CLI user
class CommandFactory < RubyCritic::CommandFactory
COMMAND_CLASS_MODES = %i[version help default compare].freeze
# Returns the command class based on the command that was executed
#
# @param mode
# @return [Class]
def self.command_class(mode)
mode = mode.to_s.split("_").first.to_sym
if COMMAND_CLASS_MODES.include? mode
require "skunk/commands/#{mode}"
Command.const_get(mode.capitalize)
else
require "skunk/commands/default"
Command::Default
end
end
end
end