From 44a3d59630fddaa45767174c35ed410984eeb60b Mon Sep 17 00:00:00 2001 From: "Clinton R. Nixon" <crnixon@gmail.com> Date: Tue, 22 Sep 2009 12:31:53 -0400 Subject: [PATCH] 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. --- Library/Homebrew/formula.rb | 15 ++++++++++++--- Library/Homebrew/unittest.rb | 4 ++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 1c08714329..207cd615ff 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -330,9 +330,18 @@ 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 ||= [] diff --git a/Library/Homebrew/unittest.rb b/Library/Homebrew/unittest.rb index 15336ebdeb..41ebfb173c 100755 --- a/Library/Homebrew/unittest.rb +++ b/Library/Homebrew/unittest.rb @@ -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 -- GitLab