cocoapods 0.32.1 → 0.33.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0283bc5d1d675094d9e6fffacee1574fa3a56f77
4
- data.tar.gz: 38a932083669d5f27b6aa630cfec338e0f43651d
3
+ metadata.gz: ff40392dc1f5d3bf6a6bb31da9a0682506d65859
4
+ data.tar.gz: 044a9e333d0eeee8ddf5b3334e1879d22dfc1322
5
5
  SHA512:
6
- metadata.gz: 603ecc9670839b8fde00cc46496cfa18353c39e92ae2b74759d273845cbf2e5b63d6c9f2e9bce0fc75af6905a939da2560d88601f32e748a81d22978e02d5e0b
7
- data.tar.gz: d972cdfc6986cd08328099a46df07e29feafec94e0befa36a0aab9991e516e840a35c812564bdcd7b0c13c3228cb8b247b4afc5ae8cb21757802cc8b92a85309
6
+ metadata.gz: dad9e16a494562952e401a0c350aaa0225707cea4314e870aa314cc7b5283d66d7d662c01eb8f07d17a2c9e2e27b7a770c6f9b38e5741dfaaee208e6f9b33b9c
7
+ data.tar.gz: 8ebab7ed68083acd1c4d52f988a120ab920e1b70ce878dc11b5104cf66309a6d4335b3a2e3b88cfb99e06ced4e18d59888c7cc8165656e89cfb2a2733401f5ea
@@ -2,6 +2,97 @@
2
2
 
3
3
  To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides/installing_cocoapods.html).
4
4
 
5
+ ## 0.33.0
6
+
7
+ ##### Breaking
8
+
9
+ * The deprecated `pre_install` and the `pod_install` hooks of the specification
10
+ class have been removed.
11
+ [Fabio Pelosin][irrationalfab]
12
+ [#2151](https://github.com/CocoaPods/CocoaPods/issues/2151)
13
+ [#2153](https://github.com/CocoaPods/CocoaPods/pull/2153)
14
+
15
+ ##### Enhancements
16
+
17
+ * Added the `cocoapods-trunk` plugin which introduces the `trunk` subcommand.
18
+ [Fabio Pelosin][irrationalfab]
19
+ [#2151](https://github.com/CocoaPods/CocoaPods/issues/2151)
20
+ [#2153](https://github.com/CocoaPods/CocoaPods/pull/2153)
21
+
22
+ * The `pod push` sub-command has been moved to the `pod repo push` sub-command.
23
+ Moreover pushing to the master repo from it has been disabled.
24
+ [Fabio Pelosin][irrationalfab]
25
+ [#2151](https://github.com/CocoaPods/CocoaPods/issues/2151)
26
+ [#2153](https://github.com/CocoaPods/CocoaPods/pull/2153)
27
+
28
+ * Overhauled command line interface. Add support for auto-completion script
29
+ (d). If auto-completion is enabled for your shell you can configure it for
30
+ CocoaPods with the following command:
31
+
32
+ rm -f /usr/local/share/zsh/site-functions/_pod
33
+ dpod --completion-script > /usr/local/share/zsh/site-functions/_pod
34
+ exec zsh
35
+
36
+ Currently only the Z shell is supported.
37
+ [Fabio Pelosin][irrationalfab]
38
+ [CLAide#25](https://github.com/CocoaPods/CLAide/issues/25)
39
+ [CLAide#20](https://github.com/CocoaPods/CLAide/issues/20)
40
+ [CLAide#19](https://github.com/CocoaPods/CLAide/issues/19)
41
+ [CLAide#17](https://github.com/CocoaPods/CLAide/issues/17)
42
+ [CLAide#12](https://github.com/CocoaPods/CLAide/issues/12)
43
+
44
+ * The `--version` flag is now only supported for the root `pod` command. If
45
+ used in conjunction with the `--verbose` flag the version of the detected
46
+ plugins will be printed as well.
47
+ [Fabio Pelosin][irrationalfab]
48
+ [CLAide#13](https://github.com/CocoaPods/CLAide/issues/13)
49
+ [CLAide#14](https://github.com/CocoaPods/CLAide/issues/14)
50
+
51
+ * The extremely meta `cocoaPods-plugins` is now installed by default providing
52
+ information about the available and the installed plug-ins.
53
+ [David Grandinetti](https://github.com/dbgrandi)
54
+ [Olivier Halligon](https://github.com/AliSoftware)
55
+ [Fabio Pelosin][irrationalfab]
56
+ [#2092](https://github.com/CocoaPods/CocoaPods/issues/2092)
57
+
58
+ * Validate the reachability of `social_media_url`, `documentation_url` and
59
+ `docset_url` in podspecs we while linting a specification.
60
+ [Kyle Fuller](https://github.com/kylef)
61
+ [#2025](https://github.com/CocoaPods/CocoaPods/issues/2025)
62
+
63
+ * Print the current version when the repo/lockfile requires a higher version.
64
+ [Samuel E. Giddins](https://github.com/segiddins)
65
+ [#2049](https://github.com/CocoaPods/CocoaPods/issues/2049)
66
+
67
+ * Show `help` when running the `pod` command instead of defaulting to `pod
68
+ install`.
69
+ [Kyle Fuller](https://github.com/kylef)
70
+ [#1771](https://github.com/CocoaPods/CocoaPods/issues/1771)
71
+
72
+ ##### Bug Fixes
73
+
74
+ * Show the actual executable when external commands fail.
75
+ [Boris Bügling][neonichu]
76
+ [#2102](https://github.com/CocoaPods/CocoaPods/issues/2102)
77
+
78
+ * Fixed support for file references in the workspace generated by CocoaPods.
79
+ [Kyle Fuller][kylef]
80
+ [Fabio Pelosin][irrationalfab]
81
+ [Xcodeproj#105](https://github.com/CocoaPods/Xcodeproj/pull/150)
82
+
83
+ * Show a helpful error message when reading version information with merge
84
+ conflict.
85
+ [Samuel E. Giddins][segiddins]
86
+ [#1853](https://github.com/CocoaPods/CocoaPods/issues/1853)
87
+
88
+ * Show deprecated specs when invoking `pod outdated`.
89
+ [Samuel E. Giddins](https://github.com/segiddins)
90
+ [#2003](https://github.com/CocoaPods/CocoaPods/issues/2003)
91
+
92
+ * Fixes an issue where `pod repo update` may start an un-committed merge.
93
+ [Kyle Fuller][kylef]
94
+ [#2024](https://github.com/CocoaPods/CocoaPods/issues/2024)
95
+
5
96
  ## 0.32.1
6
97
 
7
98
  ##### Bug Fixes
@@ -10,7 +101,6 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
10
101
  [Fabio Pelosin][irrationalfab]
11
102
  [#2050](https://github.com/CocoaPods/CocoaPods/issues/2050)
12
103
 
13
-
14
104
  ## 0.32.0
15
105
 
16
106
  [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/master...0.31.1)
@@ -103,6 +193,10 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
103
193
 
104
194
 
105
195
 
196
+ * Warn when including deprecated pods
197
+ [Samuel E. Giddins](https://github.com/segiddins)
198
+ [#2003](https://github.com/CocoaPods/CocoaPods/issues/2003)
199
+
106
200
  ## 0.31.1
107
201
  [CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.31.1...0.31.0)
108
202
  • [CocoaPods-Core](https://github.com/CocoaPods/Core/compare/0.31.1...0.31.0)
@@ -2314,4 +2408,6 @@ allowing you to automate Xcode related tasks.
2314
2408
  [7]: https://github.com/CocoaPods/CocoaPods/compare/0.3.10...0.5.0
2315
2409
 
2316
2410
  [irrationalfab]: https://github.com/irrationalfab
2411
+ [kylef]: (https://github.com/kylef)
2412
+ [neonichu]: (https://github.com/neonichu)
2317
2413
 
@@ -14,23 +14,24 @@ module Pod
14
14
  require 'cocoapods/command/list'
15
15
  require 'cocoapods/command/outdated'
16
16
  require 'cocoapods/command/project'
17
- require 'cocoapods/command/push'
18
17
  require 'cocoapods/command/repo'
19
18
  require 'cocoapods/command/search'
20
19
  require 'cocoapods/command/setup'
21
20
  require 'cocoapods/command/spec'
22
21
  require 'cocoapods/command/init'
23
22
 
23
+ # TODO: remove
24
+ require 'cocoapods/command/push'
25
+
24
26
  self.abstract_command = true
25
- self.default_subcommand = 'install'
26
27
  self.command = 'pod'
28
+ self.version = VERSION
27
29
  self.description = 'CocoaPods, the Objective-C library package manager.'
28
30
  self.plugin_prefix = 'cocoapods'
29
31
 
30
32
  def self.options
31
33
  [
32
34
  ['--silent', 'Show nothing'],
33
- ['--version', 'Show the version of CocoaPods'],
34
35
  ].concat(super)
35
36
  end
36
37
 
@@ -44,13 +45,6 @@ module Pod
44
45
 
45
46
  def self.run(argv)
46
47
  help! "You cannot run CocoaPods as root." if Process.uid == 0
47
-
48
- argv = CLAide::ARGV.new(argv)
49
- if argv.flag?('version')
50
- UI.puts VERSION
51
- exit 0
52
- end
53
-
54
48
  super(argv)
55
49
  UI.print_warnings
56
50
  end
@@ -2,7 +2,9 @@ module Pod
2
2
  class Command
3
3
  class Help < Command
4
4
  self.summary = 'Show help for the given command.'
5
- self.arguments = '[COMMAND]'
5
+ self.arguments = [
6
+ ['COMMAND', :optional]
7
+ ]
6
8
 
7
9
  def initialize(argv)
8
10
  @help_command = Pod::Command.parse(argv)
@@ -17,7 +17,9 @@ module Pod
17
17
  (test targets) files which should be stored in the
18
18
  `~/.cocoapods/templates` folder.
19
19
  DESC
20
- self.arguments = '[XCODEPROJ]'
20
+ self.arguments = [
21
+ ['XCODEPROJ', :optional]
22
+ ]
21
23
 
22
24
  def initialize(argv)
23
25
  @podfile_path = Pathname.pwd + "Podfile"
@@ -15,7 +15,9 @@ module Pod
15
15
 
16
16
  self.summary = 'Converts a podspec to JSON.'
17
17
  self.description = 'Converts a podspec to JSON and prints it to STDOUT.'
18
- self.arguments = 'PATH'
18
+ self.arguments = [
19
+ ['PATH', :required]
20
+ ]
19
21
 
20
22
  def initialize(argv)
21
23
  @path = argv.shift_argument
@@ -40,7 +42,9 @@ module Pod
40
42
 
41
43
  self.summary = 'Converts a Podfile to YAML.'
42
44
  self.description = 'Converts a Podfile to YAML and prints it to STDOUT.'
43
- self.arguments = 'PATH'
45
+ self.arguments = [
46
+ ['PATH', :required]
47
+ ]
44
48
 
45
49
  def initialize(argv)
46
50
  @path = argv.shift_argument
@@ -63,11 +67,11 @@ module Pod
63
67
 
64
68
  class List < IPC
65
69
 
66
- self.summary = 'Lists the specifications know to CocoaPods.'
70
+ self.summary = 'Lists the specifications known to CocoaPods.'
67
71
  self.description = <<-DESC
68
72
  Prints to STDOUT a YAML dictionary where the keys are the name of the
69
- specifications and the values are a dictionary with the following
70
- keys.
73
+ specifications and each corresponding value is a dictionary with
74
+ the following keys:
71
75
 
72
76
  - defined_in_file
73
77
  - version
@@ -14,7 +14,10 @@ module Pod
14
14
  If a `TEMPLATE_URL`, pointing to a git repo containing a compatible template, is specified, it will be used in place of the default one.
15
15
  DESC
16
16
 
17
- self.arguments = 'NAME [TEMPLATE_URL]'
17
+ self.arguments = [
18
+ ['NAME', :required],
19
+ ['TEMPLATE_URL', :optional]
20
+ ]
18
21
 
19
22
  def initialize(argv)
20
23
  @name = argv.shift_argument
@@ -23,21 +23,6 @@ module Pod
23
23
  # @todo fix.
24
24
  #
25
25
  def run
26
- verify_podfile_exists!
27
- verify_lockfile_exists!
28
-
29
- lockfile = config.lockfile
30
- pods = lockfile.pod_names
31
- updates = []
32
- pods.each do |pod_name|
33
- set = SourcesManager.search(Dependency.new(pod_name))
34
- next unless set
35
- source_version = set.versions.first
36
- lockfile_version = lockfile.version(pod_name)
37
- if source_version > lockfile_version
38
- updates << [pod_name, lockfile_version, source_version]
39
- end
40
- end
41
26
 
42
27
  if updates.empty?
43
28
  UI.puts "No updates are available.".yellow
@@ -48,7 +33,71 @@ module Pod
48
33
  end
49
34
  end
50
35
  end
36
+
37
+ if deprecated_pods.any?
38
+ UI.section 'The following pods are deprecated:' do
39
+ deprecated_pods.each do |spec|
40
+ if spec.deprecated_in_favor_of
41
+ UI.puts "- #{spec.name}" \
42
+ " (in favor of #{spec.deprecated_in_favor_of})"
43
+ else
44
+ UI.puts "- #{spec.name}"
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ private
53
+
54
+ def updates
55
+ @updates ||= begin
56
+ spec_sets.map do |set|
57
+ spec = set.specification
58
+ source_version = set.versions.first
59
+ pod_name = spec.name
60
+ lockfile_version = lockfile.version(pod_name)
61
+ if source_version > lockfile_version
62
+ [pod_name, lockfile_version, source_version]
63
+ else
64
+ nil
65
+ end
66
+ end.compact.uniq
67
+ end
68
+ end
69
+
70
+ def deprecated_pods
71
+ @deprecated_pods ||= begin
72
+ spec_sets.map(&:specification).select do |spec|
73
+ spec.deprecated || spec.deprecated_in_favor_of
74
+ end.compact.uniq
75
+ end
51
76
  end
77
+
78
+ def spec_sets
79
+ @spec_sets ||= begin
80
+ installed_pods.map do |pod_name|
81
+ SourcesManager.search(Dependency.new(pod_name))
82
+ end.compact.uniq
83
+ end
84
+ end
85
+
86
+ def installed_pods
87
+ @installed_pods ||= begin
88
+ verify_podfile_exists!
89
+
90
+ lockfile.pod_names
91
+ end
92
+ end
93
+
94
+ def lockfile
95
+ @lockfile ||= begin
96
+ verify_lockfile_exists!
97
+ config.lockfile
98
+ end
99
+ end
100
+
52
101
  end
53
102
  end
54
103
  end
@@ -8,7 +8,7 @@ module Pod
8
8
  module Options
9
9
  def options
10
10
  [
11
- ["--no-clean", "Leave SCM dirs like `.git' and `.svn' intact after downloading"],
11
+ ["--no-clean", "Leave SCM dirs like `.git` and `.svn` intact after downloading"],
12
12
  ["--no-integrate", "Skip integration of the Pods libraries in the Xcode project(s)"],
13
13
  ["--no-repo-update", "Skip running `pod repo update` before install"],
14
14
  ].concat(super)
@@ -49,15 +49,15 @@ module Pod
49
49
  self.summary = 'Install project dependencies'
50
50
 
51
51
  self.description = <<-DESC
52
- Downloads all dependencies defined in `Podfile' and creates an Xcode
53
- Pods library project in `./Pods'.
52
+ Downloads all dependencies defined in `Podfile` and creates an Xcode
53
+ Pods library project in `./Pods`.
54
54
 
55
55
  The Xcode project file should be specified in your `Podfile` like this:
56
56
 
57
- xcodeproj 'path/to/XcodeProject'
57
+ xcodeproj 'path/to/XcodeProject'
58
58
 
59
59
  If no xcodeproj is specified, then a search for an Xcode project will
60
- be made. If more than one Xcode project is found, the command will
60
+ be made. If more than one Xcode project is found, the command will
61
61
  raise an error.
62
62
 
63
63
  This will configure the project to reference the Pods static library,
@@ -85,7 +85,9 @@ module Pod
85
85
  be used to install changes to the Podfile.
86
86
  DESC
87
87
 
88
- self.arguments = '[POD_NAMES...]'
88
+ self.arguments = [
89
+ ['POD_NAMES...', :optional]
90
+ ]
89
91
 
90
92
  def initialize(argv)
91
93
  @pods = argv.arguments! unless argv.arguments.empty?
@@ -104,7 +106,7 @@ module Pod
104
106
  raise Informative, (missing_pods.length > 1 \
105
107
  ? "Pods %s are not installed and cannot be updated" \
106
108
  : "Pod %s is not installed and cannot be updated"
107
- ) % missing_pods.map { |p| "`#{p}'" }.join(', ')
109
+ ) % missing_pods.map { |p| "`#{p}`" }.join(', ')
108
110
  end
109
111
 
110
112
  run_install_with_update(:pods => @pods)
@@ -1,177 +1,22 @@
1
- require 'fileutils'
2
- require 'active_support/core_ext/string/inflections'
3
-
4
1
  module Pod
5
2
  class Command
6
3
  class Push < Command
7
- self.summary = 'Push new specifications to a spec-repo'
8
-
9
- self.description = <<-DESC
10
- Validates NAME.podspec or `*.podspec' in the current working dir, creates
11
- a directory and version folder for the pod in the local copy of
12
- REPO (~/.cocoapods/repos/[REPO]), copies the podspec file into the version
13
- directory, and finally it pushes REPO to its remote.
14
- DESC
4
+ self.summary = 'Temporary alias for the `pod repo push` command'
15
5
 
16
- self.arguments = 'REPO [NAME.podspec]'
17
-
18
- def self.options
19
- [ ["--allow-warnings", "Allows pushing even if there are warnings"],
20
- ["--local-only", "Does not perform the step of pushing REPO to its remote"] ].concat(super)
21
- end
22
6
 
23
7
  def initialize(argv)
24
- @allow_warnings = argv.flag?('allow-warnings')
25
- @local_only = argv.flag?('local-only')
26
- @repo = argv.shift_argument
27
- if @repo.nil?
28
- @repo = "master"
29
- elsif @repo.end_with? ".podspec"
30
- @podspec = @repo
31
- @repo = "master"
32
- else
33
- @podspec = argv.shift_argument
34
- end
8
+ @push_command = Repo::Push.new(argv)
35
9
  super
36
10
  end
37
11
 
38
12
  def validate!
39
- super
40
- help! "A spec-repo name is required." unless @repo
13
+ UI.puts '[!] The `pod push` command has been moved to `pod repo push`.'.ansi.yellow
14
+ @push_command.validate!
41
15
  end
42
16
 
43
17
  def run
44
- validate_podspec_files
45
- check_repo_status
46
- update_repo
47
- add_specs_to_repo
48
- push_repo unless @local_only
49
- end
50
-
51
- #-----------------------------------------------------------------------#
52
-
53
- private
54
-
55
- # @!group Push sub-steps
56
-
57
- extend Executable
58
- executable :git
59
-
60
- # Performs a full lint against the podspecs.
61
- #
62
- def validate_podspec_files
63
- UI.puts "\nValidating #{'spec'.pluralize(count)}".yellow
64
- podspec_files.each do |podspec|
65
- validator = Validator.new(podspec)
66
- validator.only_errors = @allow_warnings
67
- begin
68
- validator.validate
69
- rescue Exception
70
- raise Informative, "The `#{podspec}` specification does not validate."
71
- end
72
- raise Informative, "The `#{podspec}` specification does not validate." unless validator.validated?
73
- end
74
- end
75
-
76
- # Checks that the repo is clean.
77
- #
78
- # @raise If the repo is not clean.
79
- #
80
- # @todo Add specs for staged and unstaged files.
81
- #
82
- # @todo Gracefully handle the case where source is not under git
83
- # source control.
84
- #
85
- # @return [void]
86
- #
87
- def check_repo_status
88
- clean = Dir.chdir(repo_dir) { `git status --porcelain 2>&1` } == ''
89
- raise Informative, "The repo `#{@repo}` is not clean" unless clean
90
- end
91
-
92
- # Updates the git repo against the remote.
93
- #
94
- # @return [void]
95
- #
96
- def update_repo
97
- UI.puts "Updating the `#{@repo}' repo\n".yellow
98
- Dir.chdir(repo_dir) { UI.puts `git pull 2>&1` }
18
+ @push_command.run
99
19
  end
100
-
101
- # Commits the podspecs to the source, which should be a git repo.
102
- #
103
- # @note The pre commit hook of the repo is skipped as the podspecs have
104
- # already been linted.
105
- #
106
- # @return [void]
107
- #
108
- def add_specs_to_repo
109
- UI.puts "\nAdding the #{'spec'.pluralize(count)} to the `#{@repo}' repo\n".yellow
110
- podspec_files.each do |spec_file|
111
- spec = Pod::Specification.from_file(spec_file)
112
- output_path = File.join(repo_dir, spec.name, spec.version.to_s)
113
- if Pathname.new(output_path).exist?
114
- message = "[Fix] #{spec}"
115
- elsif Pathname.new(File.join(repo_dir, spec.name)).exist?
116
- message = "[Update] #{spec}"
117
- else
118
- message = "[Add] #{spec}"
119
- end
120
-
121
- FileUtils.mkdir_p(output_path)
122
- FileUtils.cp(spec_file, output_path)
123
- Dir.chdir(repo_dir) do
124
- # only commit if modified
125
- if git!("status --porcelain 2>&1").include?(spec.name)
126
- UI.puts " - #{message}"
127
- git!("add #{spec.name}")
128
- git!("commit --no-verify -m '#{message}'")
129
- else
130
- UI.puts " - [No change] #{spec}"
131
- end
132
- end
133
- end
134
- end
135
-
136
- # Pushes the git repo against the remote.
137
- #
138
- # @return [void]
139
- #
140
- def push_repo
141
- UI.puts "\nPushing the `#{@repo}' repo\n".yellow
142
- Dir.chdir(repo_dir) { UI.puts `git push origin master 2>&1` }
143
- end
144
-
145
- #-----------------------------------------------------------------------#
146
-
147
- private
148
-
149
- # @!group Private helpers
150
-
151
- # @return [Pathname] The directory of the repository.
152
- #
153
- def repo_dir
154
- dir = config.repos_dir + @repo
155
- raise Informative, "`#{@repo}` repo not found" unless dir.exist?
156
- dir
157
- end
158
-
159
- # @return [Array<Pathname>] The path of the specifications to push.
160
- #
161
- def podspec_files
162
- files = Pathname.glob(@podspec || "*.podspec")
163
- raise Informative, "Couldn't find any .podspec file in current directory" if files.empty?
164
- files
165
- end
166
-
167
- # @return [Integer] The number of the podspec files to push.
168
- #
169
- def count
170
- podspec_files.count
171
- end
172
-
173
- #-----------------------------------------------------------------------#
174
-
175
20
  end
176
21
  end
177
22
  end