Sha256: 2d388fe3ecc5c9cff4b4bcdde4e2e40b1e0f56ee4cf2f95e9baa1a64fdc3d360

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

module Aid
  class Script
    include Aid::Colorize
    include Aid::Inheritable

    def self.name
      klass_name = self.to_s.split('::').last

      klass_name
        .scan(/[A-Z][a-z0-9]*/)
        .map(&:downcase)
        .join('-')
    end

    def exit_with_help!
      puts self.class.help
      exit
    end

    def self.help
      <<~HELP
        Help has not been implemented for "#{name}". Please implement a
        help method like so:

        class #{self} < Aid::Script
          def self.help
            <<-EOF
            My awesome help message here.
            This will be so useful for people.
            EOF
          end
        end
      HELP
    end

    def self.description
      ""
    end

    def help
      self.class.help
    end

    def description
      self.class.description
    end

    attr_reader :argv

    def initialize(*argv)
      @argv = *argv
    end

    def self.run(*argv)
      new(*argv).run
    end

    def run
      raise NotImplementedError
    end

    def exit_code
      0
    end

    def system!(*args)
      puts colorize(:command, args.join(" "))
      system(*args) || abort(colorize(:error, "\n== Command #{args} failed =="))
    end

    def step(name)
      puts colorize(:info, "\n== #{name} ==")
      yield if block_given?
    end

    private

    def aid_directory
      "./.aid"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aid-0.1.2 lib/aid/script.rb