diff --git a/lib/compass/commands/stamp_pattern.rb b/lib/compass/commands/stamp_pattern.rb index e091c153..97199a3c 100644 --- a/lib/compass/commands/stamp_pattern.rb +++ b/lib/compass/commands/stamp_pattern.rb @@ -4,8 +4,61 @@ require 'compass/commands/update_project' module Compass module Commands + module StampPatternOptionsParser + def set_options(opts) + opts.banner = %Q{Usage: compass install extension/pattern [path/to/project] [options] + +Description: + Install an extension's pattern into your compass project + +Example: + compass install blueprint/buttons + +Options: +} + super + end + end + class StampPattern < ProjectBase + register :install + + class << self + def option_parser(arguments) + parser = Compass::Exec::CommandOptionParser.new(arguments) + parser.extend(Compass::Exec::GlobalOptionsParser) + parser.extend(Compass::Exec::ProjectOptionsParser) + parser.extend(StampPatternOptionsParser) + end + def usage + option_parser([]).to_s + end + def description(command) + "Install an extension's pattern into your compass project" + end + def parse!(arguments) + parser = option_parser(arguments) + parser.parse! + parse_arguments!(parser, arguments) + parser.options + end + def parse_arguments!(parser, arguments) + if arguments.size == 0 + raise OptionParser::ParseError, "Please specify a pattern." + end + pattern = arguments.shift.split('/', 2) + parser.options[:framework] = pattern[0] + parser.options[:pattern] = pattern[1] + if arguments.size > 0 + parser.options[:project_name] = arguments.shift + end + if arguments.size > 0 + raise OptionParser::ParseError, "Unexpected trailing arguments: #{arguments.join(" ")}" + end + end + + end include InstallerCommand def initialize(working_path, options) @@ -30,4 +83,4 @@ module Compass end end -end \ No newline at end of file +end