Browse Source

support new one-arg link syntax

refs #304

going forward, casks should use

    link 'Foo.app'

rather than

    link :app, 'Foo.app'
phinze 12 years ago
parent
commit
71c97bb2e4
  1. 6
      lib/cask.rb
  2. 13
      lib/cask/dsl.rb
  3. 20
      test/cask/dsl_test.rb
  4. 1
      test/support/Casks/bad-checksum.rb
  5. 2
      test/support/Casks/basic-cask.rb
  6. 2
      test/support/Casks/local-caffeine.rb
  7. 1
      test/support/Casks/local-transmission.rb
  8. 1
      test/support/Casks/missing-checksum.rb
  9. 1
      test/support/Casks/no-checksum.rb
  10. 1
      test/support/Casks/with-caveats.rb
  11. 1
      test/support/Casks/with-macosx-dir.rb

6
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

13
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

20
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[]

1
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

2
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

2
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

1
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

1
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

1
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

1
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.

1
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

Loading…
Cancel
Save