Added small DSL for formulas

You can now use "url", "version", "homepage", and any checksums as
class methods, like so:

    class Dos2unix <Formula
      url 'http://www.sfr-fresh.com/linux/misc/old/dos2unix-3.1.tar.gz'
      md5 '25ff56bab202de63ea6f6c211c416e96'
      homepage 'http://www.sfr-fresh.com/linux/misc/'
    end

The previous usage ("@url = 'http://example.com/tarball.tgz'") still
works, maintaining compatibility with previous formulas.

"dos2unix.rb" is translated into the new format as an example.
This commit is contained in:
Clinton R. Nixon 2009-09-22 12:31:53 -04:00
parent 6f4c61e326
commit 44a3d59630
2 changed files with 14 additions and 5 deletions

View File

@ -330,8 +330,17 @@ private
end
class <<self
attr_reader :url, :version, :homepage, :head, :deps
attr_reader *CHECKSUM_TYPES
def self.attr_rw(*attrs)
attrs.each do |attr|
class_eval %Q{
def #{attr}(val=nil)
val.nil? ? @#{attr} : @#{attr} = val
end
}
end
end
attr_rw :url, :version, :homepage, :head, :deps, *CHECKSUM_TYPES
def depends_on name, *args
@deps ||= []

View File

@ -75,8 +75,8 @@ class TestBallOverrideBrew <Formula
end
class TestScriptFileFormula <ScriptFileFormula
@url="file:///#{Pathname.new(ABS__FILE__).realpath}"
@version="1"
url "file:///#{Pathname.new(ABS__FILE__).realpath}"
version "1"
def initialize
super