Skip to content
Snippets Groups Projects
abstract_command.rb 873 B
Newer Older
Markus Reiter's avatar
Markus Reiter committed
require_relative "options"

module Hbc
  class CLI
    class AbstractCommand
Markus Reiter's avatar
Markus Reiter committed
      include Options

      option "--[no-]binaries", :binaries,      true
      option "--debug",         :debug,         false
      option "--verbose",       :verbose,       false
      option "--outdated",      :outdated_only, false

      def self.command_name
        @command_name ||= name.sub(/^.*:/, "").gsub(/(.)([A-Z])/, '\1_\2').downcase
AnastasiaSulyagina's avatar
AnastasiaSulyagina committed

      def self.abstract?
        name.split("::").last =~ /^Abstract[^a-z]/
      def self.visible
        true
      end
AnastasiaSulyagina's avatar
AnastasiaSulyagina committed

      def self.help
AnastasiaSulyagina's avatar
AnastasiaSulyagina committed

      def self.needs_init?
        false
      end
      def self.run(*args)
        new(*args).run
      end

Markus Reiter's avatar
Markus Reiter committed
      attr_accessor :args
      private :args=

Markus Reiter's avatar
Markus Reiter committed
      def initialize(*args)
Markus Reiter's avatar
Markus Reiter committed
        @args = process_arguments(*args)
Markus Reiter's avatar
Markus Reiter committed
      end
AnastasiaSulyagina's avatar
AnastasiaSulyagina committed
  end
end