cocoapods 0.33.1 → 0.34.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +171 -46
- data/README.md +9 -9
- data/bin/pod +5 -5
- data/bin/sandbox-pod +2 -6
- data/lib/cocoapods.rb +4 -4
- data/lib/cocoapods/command.rb +12 -10
- data/lib/cocoapods/command/init.rb +12 -13
- data/lib/cocoapods/command/inter_process_communication.rb +6 -17
- data/lib/cocoapods/command/lib.rb +27 -24
- data/lib/cocoapods/command/list.rb +9 -9
- data/lib/cocoapods/command/outdated.rb +4 -9
- data/lib/cocoapods/command/project.rb +57 -19
- data/lib/cocoapods/command/push.rb +0 -1
- data/lib/cocoapods/command/repo.rb +14 -15
- data/lib/cocoapods/command/repo/push.rb +24 -19
- data/lib/cocoapods/command/search.rb +12 -13
- data/lib/cocoapods/command/setup.rb +10 -9
- data/lib/cocoapods/command/spec.rb +67 -63
- data/lib/cocoapods/config.rb +21 -54
- data/lib/cocoapods/downloader.rb +0 -1
- data/lib/cocoapods/executable.rb +3 -8
- data/lib/cocoapods/external_sources.rb +2 -4
- data/lib/cocoapods/external_sources/abstract_external_source.rb +15 -10
- data/lib/cocoapods/external_sources/downloader_source.rb +0 -2
- data/lib/cocoapods/external_sources/path_source.rb +1 -4
- data/lib/cocoapods/external_sources/podspec_source.rb +1 -3
- data/lib/cocoapods/gem_version.rb +1 -2
- data/lib/cocoapods/generator/acknowledgements.rb +5 -8
- data/lib/cocoapods/generator/acknowledgements/markdown.rb +5 -7
- data/lib/cocoapods/generator/acknowledgements/plist.rb +9 -10
- data/lib/cocoapods/generator/bridge_support.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +10 -14
- data/lib/cocoapods/generator/dummy_source.rb +3 -3
- data/lib/cocoapods/generator/prefix_header.rb +15 -16
- data/lib/cocoapods/generator/target_environment_header.rb +122 -36
- data/lib/cocoapods/generator/xcconfig.rb +0 -4
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +74 -65
- data/lib/cocoapods/generator/xcconfig/private_pod_xcconfig.rb +92 -95
- data/lib/cocoapods/generator/xcconfig/public_pod_xcconfig.rb +48 -51
- data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +10 -10
- data/lib/cocoapods/hooks/installer_representation.rb +15 -18
- data/lib/cocoapods/hooks/library_representation.rb +4 -8
- data/lib/cocoapods/hooks/pod_representation.rb +1 -5
- data/lib/cocoapods/hooks_manager.rb +63 -0
- data/lib/cocoapods/installer.rb +60 -47
- data/lib/cocoapods/installer/analyzer.rb +60 -62
- data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +5 -8
- data/lib/cocoapods/installer/file_references_installer.rb +7 -10
- data/lib/cocoapods/installer/hooks_context.rb +74 -0
- data/lib/cocoapods/installer/migrator.rb +99 -0
- data/lib/cocoapods/installer/pod_source_installer.rb +9 -29
- data/lib/cocoapods/installer/target_installer.rb +7 -17
- data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +40 -41
- data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +43 -54
- data/lib/cocoapods/installer/user_project_integrator.rb +54 -10
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +66 -117
- data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb +116 -0
- data/lib/cocoapods/open_uri.rb +1 -2
- data/lib/cocoapods/project.rb +34 -8
- data/lib/cocoapods/resolver.rb +43 -21
- data/lib/cocoapods/sandbox.rb +80 -75
- data/lib/cocoapods/sandbox/file_accessor.rb +3 -8
- data/lib/cocoapods/sandbox/headers_store.rb +6 -7
- data/lib/cocoapods/sandbox/path_list.rb +7 -10
- data/lib/cocoapods/sources_manager.rb +81 -49
- data/lib/cocoapods/target.rb +18 -12
- data/lib/cocoapods/target/aggregate_target.rb +43 -18
- data/lib/cocoapods/target/pod_target.rb +37 -4
- data/lib/cocoapods/user_interface.rb +19 -18
- data/lib/cocoapods/user_interface/error_report.rb +23 -4
- data/lib/cocoapods/validator.rb +30 -33
- metadata +100 -73
- data/lib/cocoapods/command/help.rb +0 -25
data/lib/cocoapods/downloader.rb
CHANGED
data/lib/cocoapods/executable.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
module Pod
|
2
|
-
|
3
2
|
# Module which provides support for running executables.
|
4
3
|
#
|
5
4
|
# In a class it can be used as:
|
@@ -12,7 +11,6 @@ module Pod
|
|
12
11
|
# output of the command.
|
13
12
|
#
|
14
13
|
module Executable
|
15
|
-
|
16
14
|
# Creates the methods for the executable with the given name.
|
17
15
|
#
|
18
16
|
# @param [Symbol] name
|
@@ -21,12 +19,11 @@ module Pod
|
|
21
19
|
# @return [void]
|
22
20
|
#
|
23
21
|
def executable(name)
|
24
|
-
|
25
22
|
define_method(name) do |command|
|
26
23
|
Executable.execute_command(name, command, false)
|
27
24
|
end
|
28
25
|
|
29
|
-
define_method(name.to_s +
|
26
|
+
define_method(name.to_s + '!') do |command|
|
30
27
|
Executable.execute_command(name, command, true)
|
31
28
|
end
|
32
29
|
end
|
@@ -51,7 +48,6 @@ module Pod
|
|
51
48
|
# @todo Find a way to display the live output of the commands.
|
52
49
|
#
|
53
50
|
def self.execute_command(executable, command, raise_on_failure)
|
54
|
-
|
55
51
|
bin = `which #{executable}`.strip
|
56
52
|
raise Informative, "Unable to locate the executable `#{executable}`" if bin.empty?
|
57
53
|
|
@@ -66,7 +62,7 @@ module Pod
|
|
66
62
|
stdout, stderr = Indenter.new, Indenter.new
|
67
63
|
end
|
68
64
|
|
69
|
-
options = {:stdout => stdout, :stderr => stderr, :status => true}
|
65
|
+
options = { :stdout => stdout, :stderr => stderr, :status => true }
|
70
66
|
status = Open4.spawn(full_command, options)
|
71
67
|
output = stdout.join("\n") + stderr.join("\n")
|
72
68
|
unless status.success?
|
@@ -82,10 +78,9 @@ module Pod
|
|
82
78
|
#-------------------------------------------------------------------------#
|
83
79
|
|
84
80
|
# Helper class that allows to write to an {IO} instance taking into account
|
85
|
-
# the UI indentation
|
81
|
+
# the UI indentation level.
|
86
82
|
#
|
87
83
|
class Indenter < ::Array
|
88
|
-
|
89
84
|
# @return [Fixnum] The indentation level of the UI.
|
90
85
|
#
|
91
86
|
attr_accessor :indent
|
@@ -4,12 +4,10 @@ require 'cocoapods/external_sources/path_source'
|
|
4
4
|
require 'cocoapods/external_sources/podspec_source'
|
5
5
|
|
6
6
|
module Pod
|
7
|
-
|
8
7
|
# Provides support for initializing the correct concrete class of an external
|
9
8
|
# source.
|
10
9
|
#
|
11
10
|
module ExternalSources
|
12
|
-
|
13
11
|
# @return [AbstractExternalSource] an initialized instance of the concrete
|
14
12
|
# external source class associated with the option specified in the
|
15
13
|
# hash.
|
@@ -34,8 +32,8 @@ module Pod
|
|
34
32
|
elsif params.key?(:path)
|
35
33
|
PathSource
|
36
34
|
elsif params.key?(:local)
|
37
|
-
UI.warn
|
38
|
-
|
35
|
+
UI.warn 'The `:local` option of the Podfile has been ' \
|
36
|
+
'renamed to `:path` and it is deprecated.'
|
39
37
|
PathSource
|
40
38
|
elsif Downloader.strategy_from_options(params)
|
41
39
|
DownloaderSource
|
@@ -1,10 +1,8 @@
|
|
1
1
|
module Pod
|
2
2
|
module ExternalSources
|
3
|
-
|
4
3
|
# Abstract class that defines the common behaviour of external sources.
|
5
4
|
#
|
6
5
|
class AbstractExternalSource
|
7
|
-
|
8
6
|
# @return [String] the name of the Pod described by this external source.
|
9
7
|
#
|
10
8
|
attr_reader :name
|
@@ -48,14 +46,14 @@ module Pod
|
|
48
46
|
#
|
49
47
|
# @return [void]
|
50
48
|
#
|
51
|
-
def fetch(
|
52
|
-
raise
|
49
|
+
def fetch(_sandbox)
|
50
|
+
raise 'Abstract method'
|
53
51
|
end
|
54
52
|
|
55
53
|
# @return [String] a string representation of the source suitable for UI.
|
56
54
|
#
|
57
55
|
def description
|
58
|
-
raise
|
56
|
+
raise 'Abstract method'
|
59
57
|
end
|
60
58
|
|
61
59
|
protected
|
@@ -98,12 +96,20 @@ module Pod
|
|
98
96
|
#
|
99
97
|
def pre_download(sandbox)
|
100
98
|
title = "Pre-downloading: `#{name}` #{description}"
|
101
|
-
UI.titled_section(title,
|
102
|
-
target = sandbox.
|
99
|
+
UI.titled_section(title, :verbose_prefix => '-> ') do
|
100
|
+
target = sandbox.pod_dir(name)
|
103
101
|
target.rmtree if target.exist?
|
104
|
-
downloader =
|
102
|
+
downloader = Downloader.for_target(target, params)
|
105
103
|
downloader.download
|
106
|
-
|
104
|
+
|
105
|
+
podspec_path = target + "#{name}.podspec"
|
106
|
+
json = false
|
107
|
+
unless Pathname(podspec_path).exist?
|
108
|
+
podspec_path = target + "#{name}.podspec.json"
|
109
|
+
json = true
|
110
|
+
end
|
111
|
+
|
112
|
+
store_podspec(sandbox, target + podspec_path, json)
|
107
113
|
sandbox.store_pre_downloaded_pod(name)
|
108
114
|
if downloader.options_specific?
|
109
115
|
source = params
|
@@ -137,4 +143,3 @@ module Pod
|
|
137
143
|
end
|
138
144
|
end
|
139
145
|
end
|
140
|
-
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module Pod
|
2
2
|
module ExternalSources
|
3
|
-
|
4
3
|
# Provides support for fetching a specification file from a source handled
|
5
4
|
# by the downloader. Supports all the options of the downloader
|
6
5
|
#
|
@@ -8,7 +7,6 @@ module Pod
|
|
8
7
|
# name matching the one of the dependency.
|
9
8
|
#
|
10
9
|
class DownloaderSource < AbstractExternalSource
|
11
|
-
|
12
10
|
# @see AbstractExternalSource#fetch
|
13
11
|
#
|
14
12
|
def fetch(sandbox)
|
@@ -1,18 +1,16 @@
|
|
1
1
|
module Pod
|
2
2
|
module ExternalSources
|
3
|
-
|
4
3
|
# Provides support for fetching a specification file from a path local to
|
5
4
|
# the machine running the installation.
|
6
5
|
#
|
7
6
|
# Works with the {LocalPod::LocalSourcedPod} class.
|
8
7
|
#
|
9
8
|
class PathSource < AbstractExternalSource
|
10
|
-
|
11
9
|
# @see AbstractExternalSource#fetch
|
12
10
|
#
|
13
11
|
def fetch(sandbox)
|
14
12
|
title = "Fetching podspec for `#{name}` #{description}"
|
15
|
-
UI.titled_section(title,
|
13
|
+
UI.titled_section(title, :verbose_prefix => '-> ') do
|
16
14
|
podspec = podspec_path
|
17
15
|
unless podspec.exist?
|
18
16
|
raise Informative, "No podspec found for `#{name}` in " \
|
@@ -55,4 +53,3 @@ module Pod
|
|
55
53
|
end
|
56
54
|
end
|
57
55
|
end
|
58
|
-
|
@@ -1,16 +1,14 @@
|
|
1
1
|
module Pod
|
2
2
|
module ExternalSources
|
3
|
-
|
4
3
|
# Provides support for fetching a specification file from an URL. Can be
|
5
4
|
# http, file, etc.
|
6
5
|
#
|
7
6
|
class PodspecSource < AbstractExternalSource
|
8
|
-
|
9
7
|
# @see AbstractExternalSource#fetch
|
10
8
|
#
|
11
9
|
def fetch(sandbox)
|
12
10
|
title = "Fetching podspec for `#{name}` #{description}"
|
13
|
-
UI.titled_section(title,
|
11
|
+
UI.titled_section(title, :verbose_prefix => '-> ') do
|
14
12
|
is_json = podspec_uri.split('.').last == 'json'
|
15
13
|
require 'open-uri'
|
16
14
|
open(podspec_uri) { |io| store_podspec(sandbox, io.read, is_json) }
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module Pod
|
2
2
|
module Generator
|
3
|
-
|
4
3
|
class Acknowledgements
|
5
|
-
|
6
4
|
# @return [Array<Class>] The classes of the acknowledgements generator
|
7
5
|
# subclasses.
|
8
6
|
#
|
@@ -29,25 +27,25 @@ module Pod
|
|
29
27
|
# @return [String] The title of the acknowledgements file.
|
30
28
|
#
|
31
29
|
def header_title
|
32
|
-
|
30
|
+
'Acknowledgements'
|
33
31
|
end
|
34
32
|
|
35
33
|
# @return [String] A text to present before listing the acknowledgements.
|
36
34
|
#
|
37
35
|
def header_text
|
38
|
-
|
36
|
+
'This application makes use of the following third party libraries:'
|
39
37
|
end
|
40
38
|
|
41
39
|
# @return [String] The title of the foot notes.
|
42
40
|
#
|
43
41
|
def footnote_title
|
44
|
-
|
42
|
+
''
|
45
43
|
end
|
46
44
|
|
47
45
|
# @return [String] the foot notes.
|
48
46
|
#
|
49
47
|
def footnote_text
|
50
|
-
|
48
|
+
'Generated by CocoaPods - http://cocoapods.org'
|
51
49
|
end
|
52
50
|
|
53
51
|
#-----------------------------------------------------------------------#
|
@@ -60,7 +58,7 @@ module Pod
|
|
60
58
|
# acknowledgements should be generated.
|
61
59
|
#
|
62
60
|
def specs
|
63
|
-
file_accessors.map{ |accessor| accessor.spec.root }.uniq
|
61
|
+
file_accessors.map { |accessor| accessor.spec.root }.uniq
|
64
62
|
end
|
65
63
|
|
66
64
|
# Returns the text of the license for the given spec.
|
@@ -101,7 +99,6 @@ module Pod
|
|
101
99
|
end
|
102
100
|
|
103
101
|
#-----------------------------------------------------------------------#
|
104
|
-
|
105
102
|
end
|
106
103
|
end
|
107
104
|
end
|
@@ -1,21 +1,19 @@
|
|
1
1
|
module Pod
|
2
2
|
module Generator
|
3
|
-
|
4
3
|
class Markdown < Acknowledgements
|
5
|
-
|
6
4
|
def self.path_from_basepath(path)
|
7
|
-
Pathname.new(path.dirname + "#{path.basename
|
5
|
+
Pathname.new(path.dirname + "#{path.basename}.markdown")
|
8
6
|
end
|
9
7
|
|
10
8
|
def save_as(path)
|
11
|
-
file = File.new(path,
|
9
|
+
file = File.new(path, 'w')
|
12
10
|
file.write(licenses)
|
13
11
|
file.close
|
14
12
|
end
|
15
13
|
|
16
14
|
def title_from_string(string, level)
|
17
|
-
|
18
|
-
|
15
|
+
unless string.empty?
|
16
|
+
'#' * level << " #{string}"
|
19
17
|
end
|
20
18
|
end
|
21
19
|
|
@@ -29,7 +27,7 @@ module Pod
|
|
29
27
|
licenses_string = "#{title_from_string(header_title, 1)}\n#{header_text}\n"
|
30
28
|
specs.each do |spec|
|
31
29
|
if (license = string_for_spec(spec))
|
32
|
-
license = license.force_encoding(
|
30
|
+
license = license.force_encoding('UTF-8') if license.respond_to?(:force_encoding)
|
33
31
|
licenses_string += license
|
34
32
|
end
|
35
33
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
module Pod
|
2
2
|
module Generator
|
3
|
-
|
4
3
|
class Plist < Acknowledgements
|
5
4
|
def self.path_from_basepath(path)
|
6
|
-
Pathname.new(path.dirname + "#{path.basename
|
5
|
+
Pathname.new(path.dirname + "#{path.basename}.plist")
|
7
6
|
end
|
8
7
|
|
9
8
|
def save_as(path)
|
@@ -15,12 +14,12 @@ module Pod
|
|
15
14
|
{
|
16
15
|
:Title => plist_title,
|
17
16
|
:StringsTable => plist_title,
|
18
|
-
:PreferenceSpecifiers => licenses
|
17
|
+
:PreferenceSpecifiers => licenses,
|
19
18
|
}
|
20
19
|
end
|
21
20
|
|
22
21
|
def plist_title
|
23
|
-
|
22
|
+
'Acknowledgements'
|
24
23
|
end
|
25
24
|
|
26
25
|
def licenses
|
@@ -36,26 +35,26 @@ module Pod
|
|
36
35
|
def hash_for_spec(spec)
|
37
36
|
if (license = license_text(spec))
|
38
37
|
{
|
39
|
-
:Type =>
|
38
|
+
:Type => 'PSGroupSpecifier',
|
40
39
|
:Title => spec.name,
|
41
|
-
:FooterText => license
|
40
|
+
:FooterText => license,
|
42
41
|
}
|
43
42
|
end
|
44
43
|
end
|
45
44
|
|
46
45
|
def header_hash
|
47
46
|
{
|
48
|
-
:Type =>
|
47
|
+
:Type => 'PSGroupSpecifier',
|
49
48
|
:Title => header_title,
|
50
|
-
:FooterText => header_text
|
49
|
+
:FooterText => header_text,
|
51
50
|
}
|
52
51
|
end
|
53
52
|
|
54
53
|
def footnote_hash
|
55
54
|
{
|
56
|
-
:Type =>
|
55
|
+
:Type => 'PSGroupSpecifier',
|
57
56
|
:Title => footnote_title,
|
58
|
-
:FooterText => footnote_text
|
57
|
+
:FooterText => footnote_text,
|
59
58
|
}
|
60
59
|
end
|
61
60
|
end
|
@@ -15,7 +15,7 @@ module Pod
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def save_as(pathname)
|
18
|
-
gen_bridge_metadata %
|
18
|
+
gen_bridge_metadata %(-c "#{search_paths.join(' ')}" -o '#{pathname}' '#{headers.join("' '")}')
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module Pod
|
2
2
|
module Generator
|
3
3
|
class CopyResourcesScript
|
4
|
-
|
5
4
|
# @return [Array<#to_s>] A list of files relative to the project pods
|
6
5
|
# root.
|
7
6
|
#
|
@@ -44,7 +43,7 @@ module Pod
|
|
44
43
|
#
|
45
44
|
EXTERNAL_STRINGS_FILE_MIMINUM_DEPLOYMENT_TARGET = {
|
46
45
|
:ios => Version.new('6.0'),
|
47
|
-
:osx => Version.new('10.8')
|
46
|
+
:osx => Version.new('10.8'),
|
48
47
|
}
|
49
48
|
|
50
49
|
# @return [Bool] Whether the external strings file is supported by the
|
@@ -58,11 +57,11 @@ module Pod
|
|
58
57
|
# @return [String] The install resources shell function.
|
59
58
|
#
|
60
59
|
def install_resources_function
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
60
|
+
if use_external_strings_file?
|
61
|
+
INSTALL_RESOURCES_FUCTION
|
62
|
+
else
|
63
|
+
INSTALL_RESOURCES_FUCTION.gsub(' --reference-external-strings-file', '')
|
64
|
+
end
|
66
65
|
end
|
67
66
|
|
68
67
|
# @return [String] The contents of the copy resources script.
|
@@ -70,14 +69,13 @@ module Pod
|
|
70
69
|
def script
|
71
70
|
script = install_resources_function
|
72
71
|
resources.each do |resource|
|
73
|
-
script += %
|
72
|
+
script += %( install_resource "#{resource}"\n )
|
74
73
|
end
|
75
74
|
script += RSYNC_CALL
|
76
75
|
script += XCASSETS_COMPILE
|
77
76
|
script
|
78
77
|
end
|
79
78
|
|
80
|
-
|
81
79
|
INSTALL_RESOURCES_FUCTION = <<EOS
|
82
80
|
#!/bin/sh
|
83
81
|
set -e
|
@@ -124,7 +122,6 @@ install_resource()
|
|
124
122
|
}
|
125
123
|
EOS
|
126
124
|
|
127
|
-
|
128
125
|
RSYNC_CALL = <<EOS
|
129
126
|
|
130
127
|
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
@@ -134,12 +131,11 @@ fi
|
|
134
131
|
rm -f "$RESOURCES_TO_COPY"
|
135
132
|
EOS
|
136
133
|
|
137
|
-
|
138
134
|
XCASSETS_COMPILE = <<EOS
|
139
135
|
|
140
136
|
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ `xcrun --find actool` ] && [ `find . -name '*.xcassets' | wc -l` -ne 0 ]
|
141
137
|
then
|
142
|
-
case "${TARGETED_DEVICE_FAMILY}" in
|
138
|
+
case "${TARGETED_DEVICE_FAMILY}" in
|
143
139
|
1,2)
|
144
140
|
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
|
145
141
|
;;
|
@@ -151,8 +147,8 @@ then
|
|
151
147
|
;;
|
152
148
|
*)
|
153
149
|
TARGET_DEVICE_ARGS="--target-device mac"
|
154
|
-
;;
|
155
|
-
esac
|
150
|
+
;;
|
151
|
+
esac
|
156
152
|
find "${PWD}" -name "*.xcassets" -print0 | xargs -0 actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
157
153
|
fi
|
158
154
|
EOS
|