Skip to content
Browse files

Add shortcuts to the spec for frameworks and libraries. Closes #5.

  • Loading branch information...
1 parent 08c2979 commit e91db0ae3da686e8a162364e7335f9b193601445 @alloy alloy committed Sep 19, 2011
View
16 lib/cocoapods/specification.rb
@@ -21,7 +21,7 @@ def self.from_podspec(path)
def initialize(&block)
@dependencies = []
- @xcconfig = {}
+ @xcconfig = Xcode::Config.new
instance_eval(&block) if block_given?
end
@@ -87,9 +87,21 @@ def dependency(name, *version_requirements)
end
def xcconfig(hash)
- @xcconfig = hash
+ @xcconfig.merge!(hash)
end
+ def frameworks(*frameworks)
+ frameworks.unshift('')
+ xcconfig 'OTHER_LDFLAGS' => frameworks.join(' -framework ').strip
+ end
+ alias_method :framework, :frameworks
+
+ def libraries(*libraries)
+ libraries.unshift('')
+ xcconfig 'OTHER_LDFLAGS' => libraries.join(' -l ').strip
+ end
+ alias_method :library, :libraries
+
# Not attributes
include Config::Mixin
View
8 lib/cocoapods/xcode/config.rb
@@ -1,17 +1,17 @@
module Pod
module Xcode
class Config
- def initialize(xcconfig_hash = {})
+ def initialize(xcconfig = {})
@attributes = {}
- merge!(xcconfig_hash)
+ merge!(xcconfig)
end
def to_hash
@attributes
end
- def merge!(xcconfig_hash)
- xcconfig_hash.each do |key, value|
+ def merge!(xcconfig)
+ xcconfig.to_hash.each do |key, value|
if existing_value = @attributes[key]
@attributes[key] = "#{existing_value} #{value}"
else
View
2 spec/functional/command_spec.rb
@@ -52,7 +52,7 @@ def command.master_repo_url; SpecHelper.fixture('spec-repos/master'); end
spec.read(:source).should == { :git => 'http://example.com/Bananas.git', :tag => '1.0.0' }
spec.read(:description).should == 'An optional longer description of Bananas.'
spec.read(:source_files).should == [Pathname.new('Classes'), Pathname.new('Classes/**/*.{h,m}')]
- spec.read(:xcconfig).should == { 'OTHER_LDFLAGS' => '-framework SomeRequiredFramework' }
+ spec.read(:xcconfig).to_hash.should == { 'OTHER_LDFLAGS' => '-framework SomeRequiredFramework' }
spec.read(:dependencies).should == [Pod::Dependency.new('SomeLibraryThatBananasDependsOn', '>= 1.0.0')]
end
View
18 spec/unit/specification_spec.rb
@@ -92,11 +92,27 @@
end
it "returns the pod's xcconfig settings" do
- @spec.read(:xcconfig).should == {
+ @spec.read(:xcconfig).to_hash.should == {
'OTHER_LDFLAGS' => '-framework SystemConfiguration'
}
end
+ it "has a shortcut to add frameworks to the xcconfig" do
+ @spec.frameworks('CFNetwork', 'CoreText')
+ @spec.read(:xcconfig).to_hash.should == {
+ 'OTHER_LDFLAGS' => '-framework SystemConfiguration ' \
+ '-framework CFNetwork ' \
+ '-framework CoreText'
+ }
+ end
+
+ it "has a shortcut to add libraries to the xcconfig" do
+ @spec.libraries('z', 'xml2')
+ @spec.read(:xcconfig).to_hash.should == {
+ 'OTHER_LDFLAGS' => '-framework SystemConfiguration -l z -l xml2'
+ }
+ end
+
it "returns that it's equal to another specification if the name and version are equal" do
@spec.should == Pod::Spec.new { name 'BananaLib'; version '1.0' }
@spec.should.not == Pod::Spec.new { name 'OrangeLib'; version '1.0' }

0 comments on commit e91db0a

Please sign in to comment.
Something went wrong with that request. Please try again.