aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/formula.rb8
-rw-r--r--Library/Homebrew/language/go.rb14
-rw-r--r--Library/Homebrew/resource.rb6
-rw-r--r--Library/Homebrew/software_spec.rb4
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