Sha256: 7ccd8b28cb1fb6745625ba7b928c02bb9929437ddcf56d29ce5a1ec0a90e6d01

Contents?: true

Size: 2 KB

Versions: 6

Compression:

Stored size: 2 KB

Contents

require File.join(File.dirname(__FILE__), 'options')
require File.join(File.dirname(__FILE__), 'resource')

module HammerCLI::Apipie

  class Command < HammerCLI::AbstractCommand

    include HammerCLI::Apipie::Resource
    include HammerCLI::Apipie::Options

    def initialize(*args)
      super
      setup_identifier_options
    end

    def setup_identifier_options
      self.class.identifier_option(:id, "resource id")
      self.class.identifier_option(:name, "resource name")
      self.class.identifier_option(:label, "resource label")
    end

    def self.identifiers(*keys)
      @identifiers ||= {}
      keys.each do |key|
        if key.is_a? Hash
          @identifiers.merge!(key)
        else
          @identifiers.update(key => key)
        end
      end
    end

    def validate_options
      super
      if self.class.declared_identifiers
        validator.any(*self.class.declared_identifiers.values).required
      end
    end

    def self.desc(desc=nil)
      super(desc) || resource.docs_for(action)["apis"][0]["short_description"]
    rescue
      " "
    end

    protected

    def get_identifier
      self.class.declared_identifiers.keys.each do |identifier|
        value = find_option("--"+identifier.to_s).of(self).read
        return [value, identifier] if value
      end
      [nil, nil]
    end

    def self.identifier?(key)
      if @identifiers
        return true if @identifiers.keys.include? key
      else
        return true if superclass.respond_to?(:identifier?, true) and superclass.identifier?(key)
      end
      return false
    end

    def self.declared_identifiers
      if @identifiers
        return @identifiers
      elsif superclass.respond_to?(:declared_identifiers, true)
        superclass.declared_identifiers
      else
        {}
      end
    end

    private

    def self.identifier_option(name, desc)
      attr_name = declared_identifiers[name]
      option "--"+name.to_s, name.to_s.upcase, desc, :attribute_name => attr_name if self.identifier? name
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
hammer_cli-0.0.14 lib/hammer_cli/apipie/command.rb
hammer_cli-0.0.13 lib/hammer_cli/apipie/command.rb
hammer_cli-0.0.12 lib/hammer_cli/apipie/command.rb
hammer_cli-0.0.11 lib/hammer_cli/apipie/command.rb
hammer_cli-0.0.10 lib/hammer_cli/apipie/command.rb
hammer_cli-0.0.9 lib/hammer_cli/apipie/command.rb