Browse Source

fix dmg plist parsing problem

should take care of #104

this was a subtle one - after i reorganized the requires, plist/parser
was getting double required, which broke plist parsing and hence dmg
installs
phinze 12 years ago
parent
commit
259ed643f9
  1. 8
      lib/cask.rb
  2. 1
      lib/cask/installer.rb
  3. 13
      test/cask/installer_test.rb
  4. 5
      test/support/Casks/local-transmission.rb
  5. BIN
      test/support/binaries/transmission-2.61.dmg

8
lib/cask.rb

@ -3,9 +3,11 @@ require 'uri'
class Cask; end
class Cask::CLI; end
Dir[File.join(File.dirname(__FILE__), '**', '*.rb')].each { |file|
require file.sub(/^lib\/(.*).rb$/, '\1')
}
libdir = File.dirname(__FILE__)
rubyfiles = Dir[File.join(libdir, '**', '*.rb')]
rubyfiles.each do |file|
require file.sub(/^#{libdir}\/(.*).rb$/, '\1')
end
class Cask
include Cask::Actions

1
lib/cask/installer.rb

@ -22,7 +22,6 @@ class Cask::Installer
def _with_extracted_mountpoints(path)
if _dmg?(path)
require 'plist/parser'
File.open(path) do |dmg|
xml_str = `hdiutil mount -plist -nobrowse -readonly -noidme -mountrandom /tmp '#{dmg.path}'`
hdiutil_info = Plist::parse_xml(xml_str)

13
test/cask/installer_test.rb

@ -14,6 +14,19 @@ describe Cask::Installer do
application = dest_path/'Caffeine.app'
application.must_be :directory?
end
it "works with dmg-based casks" do
transmission = Cask.load('local-transmission')
shutup do
Cask::Installer.install(transmission)
end
dest_path = HOMEBREW_CELLAR/'local-transmission'/transmission.version
dest_path.must_be :directory?
application = dest_path/'Transmission.app'
application.must_be :directory?
end
end
describe "uninstall" do

5
test/support/Casks/local-transmission.rb

@ -0,0 +1,5 @@
class LocalTransmission < Cask
url TestHelper.local_binary('transmission-2.61.dmg')
homepage 'http://example.com/local-transmission'
version '2.61'
end

BIN
test/support/binaries/transmission-2.61.dmg

Binary file not shown.
Loading…
Cancel
Save