Skip to content

Commit

Permalink
Updated Three20 podspec to work with CocoaPods 0.17, #1458
Browse files Browse the repository at this point in the history
  • Loading branch information
jeanregisser authored and umjames committed Jan 26, 2014
1 parent e91827b commit 19e91e0
Showing 1 changed file with 41 additions and 17 deletions.
58 changes: 41 additions & 17 deletions Three20/1.0.11/Three20.podspec
@@ -1,11 +1,17 @@
overrides = Module.new do
require 'set'
overrides = Module.new do

def pattern_list(patterns)
if patterns.is_a?(Array) && (!defined?(Rake) || !patterns.is_a?(Rake::FileList))
patterns
else
[patterns]
end
end

# Give the spec the possibility to define the list of private headers.
# They will go in a 'private' sub directory
def private_header_files=(patterns)
@private_header_files = Pod::Specification::pattern_list(patterns)
@private_headers_set = nil
@private_header_files = self.pattern_list(patterns)
end
attr_reader :private_header_files

Expand All @@ -14,22 +20,31 @@ overrides = Module.new do
#
# If the pattern is the path to a directory, the pattern will
# automatically glob for header files.
def expanded_private_header_files
def expanded_private_header_files(pod_root)
files = []
(@private_header_files ||= []).each do |pattern|
pattern = pod_destroot + pattern
pattern = pod_root + pattern
pattern = pattern + '*.h' if pattern.directory?
Pathname.glob(pattern).each do |file|
files << file.relative_path_from(pod_destroot)
files << file.relative_path_from(pod_root)
end
end
files
end

# We want to put private headers in a 'private' sub directory
def copy_header_mapping(from)
@private_headers_set ||= Set.new expanded_private_header_files
@private_headers_set.include?(from) ? File.join("private", from.basename) : from.basename
def self.extended(o)
o.pre_install do |pod, target_definition|
files = o.expanded_private_header_files(pod.root)
Dir.chdir(pod.root) do
header_dir = o.attributes_hash['header_dir'] || pod.name
private_headers_dest = File.join('src', header_dir, 'Headers', 'private')
FileUtils.mkdir_p(private_headers_dest)
files.each do |file|
FileUtils.mv file, private_headers_dest
end
end
end
end

end
Expand Down Expand Up @@ -116,67 +131,74 @@ Pod::Spec.new do |s|
s.platform = :ios

s.source_files = 'src/Three20/{Sources,Headers}/*.{h,m}'
#s.header_mappings_dir = 'src/Three20/Headers'
s.resources = 'src/Three20.bundle'

s.preferred_dependency = 'UI'

# Full name: Three20/Core
s.subspec 'Core' do |cs|
cs.extend(overrides)
cs.source_files = 'src/Three20Core/{Sources,Headers}/*.{h,m}'
cs.source_files = 'src/Three20Core/{Sources,Headers}/**/*.{h,m}'
cs.private_header_files = 'src/Three20Core/Headers/TTExtensionInfoPrivate.h'
cs.header_dir = 'Three20Core'
cs.header_mappings_dir = 'src/Three20Core/Headers'
end

# Full name: Three20/Network
s.subspec 'Network' do |ns|
ns.extend(overrides)
ns.source_files = 'src/Three20Network/{Sources,Headers}/*.{h,m}'
ns.source_files = 'src/Three20Network/{Sources,Headers}/**/*.{h,m}'
ns.private_header_files = 'src/Three20Network/Headers/{TTRequestLoader,TTURLRequestQueueInternal}.h'
ns.header_dir = 'Three20Network'
ns.header_mappings_dir = 'src/Three20Network/Headers'
ns.dependency 'Three20/Core'
end

# Full name: Three20/Style
s.subspec 'Style' do |ss|
ss.extend(overrides)
ss.source_files = 'src/Three20Style/{Sources,Headers}/*.{h,m}'
ss.source_files = 'src/Three20Style/{Sources,Headers}/**/*.{h,m}'
ss.private_header_files = 'src/Three20Style/Headers/{TTShapeInternal,TTStyledNodeInternal,TTStyleInternal}.h'
ss.header_dir = 'Three20Style'
ss.header_mappings_dir = 'src/Three20Style/Headers'
ss.dependency 'Three20/Core'
ss.dependency 'Three20/Network'
end

# Full name: Three20/UICommon
s.subspec 'UICommon' do |ucs|
ucs.extend(overrides)
ucs.source_files = source_files = 'src/Three20UICommon/{Sources,Headers}/*.{h,m}'
ucs.source_files = source_files = 'src/Three20UICommon/{Sources,Headers}/**/*.{h,m}'
ucs.private_header_files = 'src/Three20UICommon/Headers/UIViewControllerGarbageCollection.h'
ucs.header_dir = 'Three20UICommon'
ucs.header_mappings_dir = 'src/Three20UICommon/Headers'
ucs.dependency 'Three20/Core'
ucs.framework = 'UIKit', 'CoreGraphics'
end

# Full name: Three20/UINavigator
s.subspec 'UINavigator' do |uns|
uns.extend(overrides)
uns.source_files = 'src/Three20UINavigator/{Sources,Headers}/*.{h,m}'
uns.source_files = 'src/Three20UINavigator/{Sources,Headers}/**/*.{h,m}'
uns.private_header_files = 'src/Three20UINavigator/Headers/{TTBaseNavigatorInternal,TTURLArguments,' \
'TTURLArgumentType,TTURLLiteral,TTURLPatternInternal,TTURLPatternText,' \
'TTURLSelector,TTURLWildcard,UIViewController+TTNavigatorGarbageCollection}.h'
uns.header_dir = 'Three20UINavigator'
uns.header_mappings_dir = 'src/Three20UINavigator/Headers'
uns.dependency 'Three20/Core'
uns.dependency 'Three20/UICommon'
end

# Full name: Three20/UI
s.subspec 'UI' do |us|
us.extend(overrides)
us.source_files = 'src/Three20UI/{Sources,Headers}/*.{h,m}'
us.source_files = 'src/Three20UI/{Sources,Headers}/**/*.{h,m}'
us.private_header_files = 'src/Three20UI/Headers/{TTButtonContent,TTImageLayer,TTImageViewInternal,' \
'TTLauncherHighlightView,TTLauncherScrollView,TTNavigatorWindow,' \
'TTSearchTextFieldInternal,TTTabBarInternal,TTTextEditorInternal,TTTextView}.h'
us.header_dir = 'Three20UI'
us.header_mappings_dir = 'src/Three20UI/Headers'
us.framework = 'QuartzCore'
us.dependency 'Three20/Core'
us.dependency 'Three20/Network'
Expand All @@ -193,6 +215,7 @@ Pod::Spec.new do |s|
css.source_files = 'src/extThree20CSSStyle/{Sources,Headers,ThirdPart}/*.{h,m}'
css.private_header_files = 'src/extThree20CSSStyle/Headers/CssTokens.h'
css.header_dir = 'extThree20CSSStyle'
css.header_mappings_dir = 'src/extThree20CSSStyle/Headers'
css.resources = 'src/extThree20CSSStyle/Resources/extThree20CSSStyle.bundle'
css.dependency 'Three20/Core'
css.dependency 'Three20/Network'
Expand All @@ -202,8 +225,9 @@ Pod::Spec.new do |s|
# Full name: Three20/ext/JSON
ext.subspec 'JSON' do |js|
js.extend(overrides)
js.source_files = 'src/extThree20JSON/{Source,Headers}/*.{h,m}'
js.source_files = 'src/extThree20JSON/{Source,Headers}/**/*.{h,m}'
js.header_dir = 'extThree20JSON'
js.header_mappings_dir = 'src/extThree20JSON/Headers'
js.dependency 'Three20/Core'
js.dependency 'Three20/Network'
end
Expand Down

0 comments on commit 19e91e0

Please sign in to comment.