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 | 70cfa78f18a1806e53b44374c0362dc02439425f (patch) | |
| tree | adfe981ae9a8b2aaa6c5b90538af14ce278d4aac | |
| parent | 7d1b8643afba1e5d1274f5a2b8c6a7ab6434cd49 (diff) | |
| download | homebrew-70cfa78f18a1806e53b44374c0362dc02439425f.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.
| -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 | 
