From 71c97bb2e4a9d503439a46684a4295a886780d4c Mon Sep 17 00:00:00 2001 From: phinze Date: Thu, 23 May 2013 21:03:37 -0500 Subject: [PATCH] support new one-arg link syntax refs #304 going forward, casks should use link 'Foo.app' rather than link :app, 'Foo.app' --- lib/cask.rb | 6 +----- lib/cask/dsl.rb | 13 ++++++------- test/cask/dsl_test.rb | 20 ++++++++++++++------ test/support/Casks/bad-checksum.rb | 1 + test/support/Casks/basic-cask.rb | 2 +- test/support/Casks/local-caffeine.rb | 2 +- test/support/Casks/local-transmission.rb | 1 + test/support/Casks/missing-checksum.rb | 1 + test/support/Casks/no-checksum.rb | 1 + test/support/Casks/with-caveats.rb | 1 + test/support/Casks/with-macosx-dir.rb | 1 + 11 files changed, 29 insertions(+), 20 deletions(-) diff --git a/lib/cask.rb b/lib/cask.rb index 595185c74..7b449e3d5 100644 --- a/lib/cask.rb +++ b/lib/cask.rb @@ -95,11 +95,7 @@ class Cask end def linkable_apps - if linkables.has_key? :app - linkables[:app].map { |app| Pathname.glob("#{destination_path}/**/#{app}").first } - else - Pathname.glob("#{destination_path}/**/*.app") - end + linkables.map { |app| Pathname.glob("#{destination_path}/**/#{app}").first } end def installable_pkgs diff --git a/lib/cask/dsl.rb b/lib/cask/dsl.rb index 3641e8dfd..206e2d747 100644 --- a/lib/cask/dsl.rb +++ b/lib/cask/dsl.rb @@ -34,15 +34,14 @@ module Cask::DSL end def linkables - @linkables ||= Hash.new(Set.new) + @linkables ||= Set.new end - def link(type, *files) - if files == [:none] - linkables[type] = [] - else - linkables[type] += files - end + def link(*args) + # handle old-style casks using link :app, 'Foo.app' + args.shift if args.first.is_a? Symbol + + linkables.merge args end def installables diff --git a/test/cask/dsl_test.rb b/test/cask/dsl_test.rb index 0078c3d03..d2e7ccab8 100644 --- a/test/cask/dsl_test.rb +++ b/test/cask/dsl_test.rb @@ -49,22 +49,30 @@ describe Cask::DSL do end end + it "allows you to specify linkables in the old way, for backcompat" do + CaskWithOldSchoolLinkables = Class.new(Cask) + CaskWithOldSchoolLinkables.class_eval do + link :app, 'Foo.app' + link :app, 'Bar.app' + end + + instance = CaskWithOldSchoolLinkables.new + Array(instance.linkables).sort.must_equal %w[Bar.app Foo.app] + end + it "allows you to specify linkables" do CaskWithLinkables = Class.new(Cask) CaskWithLinkables.class_eval do - link :app, 'Foo.app' - link :app, 'Bar.app' + link 'Foo.app' + link 'Bar.app' end instance = CaskWithLinkables.new - Array(instance.linkables[:app]).sort.must_equal %w[Bar.app Foo.app] + Array(instance.linkables).sort.must_equal %w[Bar.app Foo.app] end it "allow linkables to be set to empty" do CaskWithNoLinkables = Class.new(Cask) - CaskWithNoLinkables.class_eval do - link :app, :none - end instance = CaskWithNoLinkables.new Array(instance.linkable_apps).must_equal %w[] diff --git a/test/support/Casks/bad-checksum.rb b/test/support/Casks/bad-checksum.rb index 68f37a831..9bcf6e36e 100644 --- a/test/support/Casks/bad-checksum.rb +++ b/test/support/Casks/bad-checksum.rb @@ -3,4 +3,5 @@ class BadChecksum < TestCask homepage 'http://example.com/local-caffeine' version '1.2.3' sha1 'badbadbadbadbadbadbadbadbadbad' + link 'Caffeine.app' end diff --git a/test/support/Casks/basic-cask.rb b/test/support/Casks/basic-cask.rb index 42f4cf7b0..9e8dd7078 100644 --- a/test/support/Casks/basic-cask.rb +++ b/test/support/Casks/basic-cask.rb @@ -3,5 +3,5 @@ class BasicCask < TestCask homepage 'http://example.com/' version '1.2.3' sha1 '0123456789012345678901234567890123456789' - link :app, 'TestCask.app' + link 'TestCask.app' end diff --git a/test/support/Casks/local-caffeine.rb b/test/support/Casks/local-caffeine.rb index 4265edba4..f7aaff8b7 100644 --- a/test/support/Casks/local-caffeine.rb +++ b/test/support/Casks/local-caffeine.rb @@ -4,6 +4,6 @@ class LocalCaffeine < TestCask version '1.2.3' sha1 'd2fbdad1619934313026fc831e6c6e3dd97ac030' - link :app, 'Caffeine.app' + link 'Caffeine.app' end diff --git a/test/support/Casks/local-transmission.rb b/test/support/Casks/local-transmission.rb index 581c6814d..3ef5fe166 100644 --- a/test/support/Casks/local-transmission.rb +++ b/test/support/Casks/local-transmission.rb @@ -3,4 +3,5 @@ class LocalTransmission < TestCask homepage 'http://example.com/local-transmission' version '2.61' sha1 'ac6cf624c3a4a3b1a692e95fa8de672b8be43391' + link 'Transmission.app' end diff --git a/test/support/Casks/missing-checksum.rb b/test/support/Casks/missing-checksum.rb index f8f015045..8d5aa6c7b 100644 --- a/test/support/Casks/missing-checksum.rb +++ b/test/support/Casks/missing-checksum.rb @@ -2,4 +2,5 @@ class MissingChecksum < TestCask url TestHelper.local_binary('caffeine.zip') homepage 'http://example.com/local-caffeine' version '1.2.3' + link 'Caffeine.app' end diff --git a/test/support/Casks/no-checksum.rb b/test/support/Casks/no-checksum.rb index 9b931df84..6e1a427c5 100644 --- a/test/support/Casks/no-checksum.rb +++ b/test/support/Casks/no-checksum.rb @@ -3,4 +3,5 @@ class NoChecksum < TestCask homepage 'http://example.com/local-caffeine' version '1.2.3' no_checksum + link 'Caffeine.app' end diff --git a/test/support/Casks/with-caveats.rb b/test/support/Casks/with-caveats.rb index c4a4fe6f4..5051dbc68 100644 --- a/test/support/Casks/with-caveats.rb +++ b/test/support/Casks/with-caveats.rb @@ -3,6 +3,7 @@ class WithCaveats < TestCask homepage 'http://example.com/local-caffeine' version '1.2.3' sha1 'd2fbdad1619934313026fc831e6c6e3dd97ac030' + link 'Caffeine.app' def caveats; <<-EOS.undent Here are some things you might want to know. diff --git a/test/support/Casks/with-macosx-dir.rb b/test/support/Casks/with-macosx-dir.rb index 29aac7765..99f01a7f6 100644 --- a/test/support/Casks/with-macosx-dir.rb +++ b/test/support/Casks/with-macosx-dir.rb @@ -3,4 +3,5 @@ class WithMacosxDir < TestCask homepage 'http://example.com/MyFancyApp' version '1.2.3' sha1 'b0475c34136c8e00ceb4b95c245291d53d5deab3' + link 'MyFancyApp.app' end