diff options
| author | Misty De Meo | 2014-06-02 23:32:42 -0700 | 
|---|---|---|
| committer | Misty De Meo | 2014-09-01 19:56:43 -0700 | 
| commit | 4743fc1662d2e7ca5f952ff10089edad9e52ff07 (patch) | |
| tree | 9213c5fc3384809b101cd372147b7c1a775127b4 /Library | |
| parent | aec47d8a19f58a11d397f5421d9408f52353e530 (diff) | |
| download | brew-4743fc1662d2e7ca5f952ff10089edad9e52ff07.tar.bz2 | |
Add Go language module, resources
This introduces a new GoResource category of resource. GoResources
have a specialized stage method which allows a resource to stage
itself into a gopath.
The new Go language module provides a one-liner to stage all
GoResources present in the formula.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/formula.rb | 8 | ||||
| -rw-r--r-- | Library/Homebrew/language/go.rb | 14 | ||||
| -rw-r--r-- | Library/Homebrew/resource.rb | 6 | ||||
| -rw-r--r-- | Library/Homebrew/software_spec.rb | 4 | 
4 files changed, 28 insertions, 4 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 8a6041030..ef2933291 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -660,12 +660,16 @@ class Formula      end      # Define a named resource using a SoftwareSpec style block -    def resource name, &block +    def resource name, klass=Resource, &block        specs.each do |spec| -        spec.resource(name, &block) unless spec.resource_defined?(name) +        spec.resource(name, klass, &block) unless spec.resource_defined?(name)        end      end +    def go_resource name, &block +      resource name, Resource::Go, &block +    end +      def depends_on dep        specs.each { |spec| spec.depends_on(dep) }      end diff --git a/Library/Homebrew/language/go.rb b/Library/Homebrew/language/go.rb new file mode 100644 index 000000000..c0b4fb0a6 --- /dev/null +++ b/Library/Homebrew/language/go.rb @@ -0,0 +1,14 @@ +require "resource" + +module Language +  module Go +    # Given a set of resources, stages them to a gopath for +    # building go software. +    # The resource names should be the import name of the package, +    # e.g. `resource "github.com/foo/bar"` +    def self.stage_deps resources, target +      godeps = resources.grep(Resource::Go) +      godeps.each {|resource| resource.stage target} +    end +  end +end diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 66372ad3e..97dcdf976 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -130,4 +130,10 @@ class Resource        raise TypeError, "version '#{val.inspect}' should be a string"      end    end + +  class Go < Resource +    def stage target +      super(target/name) +    end +  end  end diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb index 3dbcc0cc5..b2071e119 100644 --- a/Library/Homebrew/software_spec.rb +++ b/Library/Homebrew/software_spec.rb @@ -69,10 +69,10 @@ class SoftwareSpec      resources.has_key?(name)    end -  def resource name, &block +  def resource name, klass=Resource, &block      if block_given?        raise DuplicateResourceError.new(name) if resource_defined?(name) -      res = Resource.new(name, &block) +      res = klass.new(name, &block)        resources[name] = res        dependency_collector.add(res)      else  | 
