cocoapods 0.16.4 → 0.17.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 +7 -0
- data/CHANGELOG.md +108 -0
- data/README.md +3 -3
- data/bin/pod +1 -1
- data/lib/cocoapods.rb +31 -31
- data/lib/cocoapods/command.rb +62 -107
- data/lib/cocoapods/command/inter_process_communication.rb +103 -0
- data/lib/cocoapods/command/list.rb +45 -44
- data/lib/cocoapods/command/outdated.rb +28 -25
- data/lib/cocoapods/command/project.rb +90 -0
- data/lib/cocoapods/command/push.rb +50 -32
- data/lib/cocoapods/command/repo.rb +125 -155
- data/lib/cocoapods/command/search.rb +23 -12
- data/lib/cocoapods/command/setup.rb +103 -64
- data/lib/cocoapods/command/spec.rb +329 -90
- data/lib/cocoapods/config.rb +197 -44
- data/lib/cocoapods/downloader.rb +47 -34
- data/lib/cocoapods/executable.rb +98 -41
- data/lib/cocoapods/external_sources.rb +325 -0
- data/lib/cocoapods/file_list.rb +8 -1
- data/lib/cocoapods/gem_version.rb +7 -0
- data/lib/cocoapods/generator/acknowledgements.rb +71 -7
- data/lib/cocoapods/generator/acknowledgements/markdown.rb +10 -9
- data/lib/cocoapods/generator/acknowledgements/plist.rb +9 -8
- data/lib/cocoapods/generator/copy_resources_script.rb +2 -2
- data/lib/cocoapods/generator/documentation.rb +153 -37
- data/lib/cocoapods/generator/prefix_header.rb +82 -0
- data/lib/cocoapods/generator/target_header.rb +58 -0
- data/lib/cocoapods/generator/xcconfig.rb +130 -0
- data/lib/cocoapods/hooks/installer_representation.rb +123 -0
- data/lib/cocoapods/hooks/library_representation.rb +79 -0
- data/lib/cocoapods/hooks/pod_representation.rb +74 -0
- data/lib/cocoapods/installer.rb +398 -147
- data/lib/cocoapods/installer/analyzer.rb +556 -0
- data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +253 -0
- data/lib/cocoapods/installer/file_references_installer.rb +179 -0
- data/lib/cocoapods/installer/pod_source_installer.rb +289 -0
- data/lib/cocoapods/installer/target_installer.rb +307 -112
- data/lib/cocoapods/installer/user_project_integrator.rb +140 -176
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +193 -0
- data/lib/cocoapods/library.rb +195 -0
- data/lib/cocoapods/open_uri.rb +16 -14
- data/lib/cocoapods/project.rb +175 -52
- data/lib/cocoapods/resolver.rb +151 -164
- data/lib/cocoapods/sandbox.rb +276 -54
- data/lib/cocoapods/sandbox/file_accessor.rb +210 -0
- data/lib/cocoapods/sandbox/headers_store.rb +96 -0
- data/lib/cocoapods/sandbox/path_list.rb +178 -0
- data/lib/cocoapods/sources_manager.rb +218 -0
- data/lib/cocoapods/user_interface.rb +82 -18
- data/lib/cocoapods/{command → user_interface}/error_report.rb +5 -5
- data/lib/cocoapods/validator.rb +379 -0
- metadata +74 -55
- data/lib/cocoapods/command/install.rb +0 -55
- data/lib/cocoapods/command/linter.rb +0 -317
- data/lib/cocoapods/command/update.rb +0 -25
- data/lib/cocoapods/dependency.rb +0 -285
- data/lib/cocoapods/downloader/git.rb +0 -276
- data/lib/cocoapods/downloader/http.rb +0 -99
- data/lib/cocoapods/downloader/mercurial.rb +0 -26
- data/lib/cocoapods/downloader/subversion.rb +0 -42
- data/lib/cocoapods/local_pod.rb +0 -620
- data/lib/cocoapods/lockfile.rb +0 -274
- data/lib/cocoapods/platform.rb +0 -127
- data/lib/cocoapods/podfile.rb +0 -551
- data/lib/cocoapods/source.rb +0 -223
- data/lib/cocoapods/specification.rb +0 -579
- data/lib/cocoapods/specification/set.rb +0 -175
- data/lib/cocoapods/specification/statistics.rb +0 -112
- data/lib/cocoapods/user_interface/ui_pod.rb +0 -130
- data/lib/cocoapods/version.rb +0 -26
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6013129b296437d543853413a5ee6e835811f6e1
|
4
|
+
data.tar.gz: dd3f63d981dbd29df23b124c6002730de9c71745
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2c7de94a11c4a79a00f46ff265e2a281058142511d671c5b284c504d8162a666bbcd2b39e807193e9dc57a36574a9e3a4d96f2650d3415e2e3a6939e50382046
|
7
|
+
data.tar.gz: 8c18695b3ad7b32d16f6fc4d0ae95d6295b46e7e8309c8511222560d3dfa8e0e7e1d0314243f00e7d7381641731243321b02cac727d5f56d7f6080c1b1a04173
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,110 @@
|
|
1
|
+
## 0.17.0.rc1
|
2
|
+
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/master...0.17)
|
3
|
+
• [Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.5.0...master)
|
4
|
+
• [cocoapods-core](https://github.com/CocoaPods/Core)
|
5
|
+
• [cocoapods-downloader](https://github.com/CocoaPods/cocoapods-downloader)
|
6
|
+
|
7
|
+
###### __Notice__
|
8
|
+
|
9
|
+
At some point in future the master repo will be switched to the YAML format of
|
10
|
+
specifications. This means that specifications with hooks (or any other kind of
|
11
|
+
dynamic logic) will not be accepted. Please let us know if there is need for
|
12
|
+
other DSL attributes or any other kind of support.
|
13
|
+
|
14
|
+
Currently the following specifications fail to load as they depended on the
|
15
|
+
CocoaPods internals and need to be updated:
|
16
|
+
|
17
|
+
- LibComponentLogging-pods/0.0.1/LibComponentLogging-pods.podspec
|
18
|
+
- RestKit/0.9.3/RestKit.podspec
|
19
|
+
- Three20/1.0.11/Three20.podspec
|
20
|
+
|
21
|
+
Other specifications, might present compatibility issues for the reasons
|
22
|
+
presented below.
|
23
|
+
|
24
|
+
###### __Breaking__
|
25
|
+
|
26
|
+
- Subspecs do **not** inherit the files patterns from the parent spec anymore.
|
27
|
+
This feature made the implementation more complicated and was not easy to
|
28
|
+
explain to podspecs maintainers. Compatibility can be easily fixed by adding
|
29
|
+
a 'Core' subspec.
|
30
|
+
- Support for inline podspecs has been removed.
|
31
|
+
- The support for Rake::FileList is being deprecated, in favor of a more
|
32
|
+
consistent DSL. Rake::FileList also presented issues because it would access
|
33
|
+
the file system as soon as it was converted to an array.
|
34
|
+
- The hooks architecture has been re-factored and might present
|
35
|
+
incompatibilities (please open an issue if appropriate).
|
36
|
+
- The `requires_arc` attribute default value is transitioning from `false` to
|
37
|
+
`true`. In the meanwhile a value is needed to pass the lint.
|
38
|
+
- Deprecated `copy_header_mapping` hook.
|
39
|
+
- Deprecated `exclude_header_search_paths` attribute.
|
40
|
+
- External sources are not supported in the dependencies of specifications
|
41
|
+
anymore. Actually they never have been supported, they just happened to work.
|
42
|
+
|
43
|
+
###### DSL
|
44
|
+
|
45
|
+
- Podfile:
|
46
|
+
- It is not needed to specify the platform anymore (unless not integrating)
|
47
|
+
as CocoaPods now can infer the platform from the integrated targets.
|
48
|
+
- Specification:
|
49
|
+
- `preferred_dependency` has been renamed to `default_subspec`.
|
50
|
+
- Added `exclude_files` attribute.
|
51
|
+
- Added `screenshots` attribute.
|
52
|
+
- Added default values for attributes like `source_files`.
|
53
|
+
|
54
|
+
###### Enhancements
|
55
|
+
|
56
|
+
- Released preview [documentation](docs.cocoapods.org).
|
57
|
+
- CocoaPods now has support for working in teams and not committing the Pods
|
58
|
+
folder, as it will keep track of the status of the Pods folder.
|
59
|
+
[#552](https://github.com/CocoaPods/CocoaPods/issues/552)
|
60
|
+
- Simplified installation: no specific version of ruby gems is required anymore.
|
61
|
+
- The workspace is written only if needed greatly reducing the occasions in
|
62
|
+
which Xcode asks to revert.
|
63
|
+
- The Lockfile is sorted reducing the SCM noise.
|
64
|
+
[#591](https://github.com/CocoaPods/CocoaPods/issues/591)
|
65
|
+
- Added Podfile, Frameworks, and Resources to the Pods project.
|
66
|
+
[#647](https://github.com/CocoaPods/CocoaPods/issues/647)
|
67
|
+
[#588](https://github.com/CocoaPods/CocoaPods/issues/588)
|
68
|
+
- Adds new subcommand `pod spec cat NAME` to print a spec file to standard output.
|
69
|
+
- Specification hooks are only called when the specification is installed.
|
70
|
+
- The `--no-clean` option of the `pod spec lint` command now displays the Pods
|
71
|
+
project for inspection.
|
72
|
+
- It is now possible to specify default values for the configuration in
|
73
|
+
`~/.cocoapods/config.yaml` ([default values](https://github.com/CocoaPods/CocoaPods/blob/master/lib/cocoapods/config.rb#L17)).
|
74
|
+
- CocoaPods now checks the checksums of the installed specifications and
|
75
|
+
reinstalls them if needed.
|
76
|
+
- Support for YAML formats of the Podfile and the Specification.
|
77
|
+
- Added new command `pod ipc` to provide support for inter process
|
78
|
+
communication through YAML formats.
|
79
|
+
- CocoaPods now detects if the folder of a Pod is empty and reinstalls it.
|
80
|
+
[#534](https://github.com/CocoaPods/CocoaPods/issues/534)
|
81
|
+
- Install hooks and the `prefix_header_contents` attribute are supported in subspecs.
|
82
|
+
[#617](https://github.com/CocoaPods/CocoaPods/issues/617)
|
83
|
+
- Dashes are now supported in the versions of the Pods.
|
84
|
+
[#293](https://github.com/CocoaPods/CocoaPods/issues/293)
|
85
|
+
|
86
|
+
###### Bug fixes
|
87
|
+
|
88
|
+
- CocoaPods is not confused anymore by target definitions with different activated subspec.
|
89
|
+
[#535](https://github.com/CocoaPods/CocoaPods/issues/535)
|
90
|
+
- CocoaPods is not confused anymore by to dependencies from external sources.
|
91
|
+
[#548](https://github.com/CocoaPods/CocoaPods/issues/548)
|
92
|
+
- The git cache will always update against the remote if a tag is requested,
|
93
|
+
resolving issues where library maintainers where updating the tag after a
|
94
|
+
lint and would be confused by CocoaPods using the cached commit for the tag.
|
95
|
+
[#407](https://github.com/CocoaPods/CocoaPods/issues/407)
|
96
|
+
[#596](https://github.com/CocoaPods/CocoaPods/issues/596)
|
97
|
+
|
98
|
+
###### Codebase
|
99
|
+
|
100
|
+
- Major clean up and refactor of the whole code base.
|
101
|
+
- Extracted the core classes into
|
102
|
+
[cocoapods-core](https://github.com/CocoaPods/Core) gem.
|
103
|
+
- Extracted downloader into
|
104
|
+
[cocoapods-downloader](https://github.com/CocoaPods/cocoapods-downloader).
|
105
|
+
- Extracted command-line command & option handling into
|
106
|
+
[CLAide](https://github.com/CocoaPods/CLAide).
|
107
|
+
|
1
108
|
## 0.16.4
|
2
109
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.16.3...0.16.4)
|
3
110
|
|
@@ -317,6 +424,7 @@
|
|
317
424
|
- The subversion downloader now does an export instead of a checkout, which
|
318
425
|
makes it play nicer with SCMs that store metadata in each directory.
|
319
426
|
[#245](https://github.com/CocoaPods/CocoaPods/issues/245)
|
427
|
+
- Now the Podfile is added to the Pods project for convenient editing.
|
320
428
|
|
321
429
|
###### Bug fixes
|
322
430
|
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# CocoaPods – an Objective-C library manager
|
2
2
|
|
3
|
-
| CocoaPods | Xcodeproj | Specs |
|
4
|
-
| :---: | :---: | :---: |
|
5
|
-
[](https://travis-ci.org/CocoaPods/CocoaPods)|[](http://travis-ci.org/CocoaPods/Xcodeproj)|[](http://travis-ci.org/CocoaPods/Specs)|[](https://gemnasium.com/CocoaPods/CocoaPods)
|
6
6
|
|
7
7
|
|
8
8
|
CocoaPods manages library dependencies for your Xcode project.
|
data/bin/pod
CHANGED
data/lib/cocoapods.rb
CHANGED
@@ -1,60 +1,60 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
|
-
# Better to fail early and clear then during installation of pods.
|
4
|
-
#
|
5
|
-
# RubyGems 1.3.6 (which ships with OS X >= 10.7) up to 1.4.0 have a couple of
|
6
|
-
# bugs related to comparing prerelease versions.
|
7
|
-
#
|
8
|
-
# E.g. https://github.com/CocoaPods/CocoaPods/issues/398
|
9
|
-
unless Gem::Version::Requirement.new('>= 1.4.0').satisfied_by?(Gem::Version.new(Gem::VERSION))
|
10
|
-
STDERR.puts "\e[1;31m" + "Your RubyGems version (#{Gem::VERSION}) is too old, please update with: `gem update --system`" + "\e[0m"
|
11
|
-
exit 1
|
12
|
-
end
|
13
|
-
|
14
3
|
module Pod
|
15
|
-
|
4
|
+
require 'cocoapods/gem_version'
|
16
5
|
|
17
|
-
|
18
|
-
|
6
|
+
# Indicates a runtime error **not** caused by a bug.
|
7
|
+
#
|
8
|
+
class PlainInformative < StandardError; end
|
19
9
|
|
10
|
+
# Indicates a runtime error **not** caused by a bug which should be
|
11
|
+
# highlighted to the user.
|
12
|
+
#
|
20
13
|
class Informative < PlainInformative
|
21
14
|
def message
|
22
|
-
#
|
23
|
-
super !~ /\[!\]/ ? "[!] #{super}\n".red : super
|
15
|
+
"[!] #{super}".red
|
24
16
|
end
|
25
17
|
end
|
26
18
|
|
19
|
+
require 'cocoapods-core'
|
20
|
+
require 'xcodeproj'
|
21
|
+
require 'cocoapods/downloader'
|
22
|
+
require 'cocoapods/file_list'
|
23
|
+
require 'cocoapods/config'
|
24
|
+
|
27
25
|
autoload :Command, 'cocoapods/command'
|
28
|
-
autoload :Config, 'cocoapods/config'
|
29
|
-
autoload :Dependency, 'cocoapods/dependency'
|
30
|
-
autoload :Downloader, 'cocoapods/downloader'
|
31
26
|
autoload :Executable, 'cocoapods/executable'
|
27
|
+
autoload :ExternalSources, 'cocoapods/external_sources'
|
32
28
|
autoload :Installer, 'cocoapods/installer'
|
33
|
-
autoload :
|
34
|
-
autoload :
|
35
|
-
autoload :Platform, 'cocoapods/platform'
|
36
|
-
autoload :Podfile, 'cocoapods/podfile'
|
29
|
+
autoload :SourcesManager, 'cocoapods/sources_manager'
|
30
|
+
autoload :Library, 'cocoapods/library'
|
37
31
|
autoload :Project, 'cocoapods/project'
|
38
32
|
autoload :Resolver, 'cocoapods/resolver'
|
39
33
|
autoload :Sandbox, 'cocoapods/sandbox'
|
40
|
-
autoload :Source, 'cocoapods/source'
|
41
|
-
autoload :Spec, 'cocoapods/specification'
|
42
|
-
autoload :Specification, 'cocoapods/specification'
|
43
34
|
autoload :UI, 'cocoapods/user_interface'
|
44
|
-
autoload :
|
35
|
+
autoload :Validator, 'cocoapods/validator'
|
45
36
|
|
46
37
|
autoload :Pathname, 'pathname'
|
47
|
-
autoload :FileList, 'cocoapods/file_list'
|
48
38
|
|
49
39
|
module Generator
|
40
|
+
autoload :Acknowledgements, 'cocoapods/generator/acknowledgements'
|
50
41
|
autoload :BridgeSupport, 'cocoapods/generator/bridge_support'
|
51
42
|
autoload :CopyResourcesScript, 'cocoapods/generator/copy_resources_script'
|
52
43
|
autoload :Documentation, 'cocoapods/generator/documentation'
|
53
|
-
autoload :Acknowledgements, 'cocoapods/generator/acknowledgements'
|
54
|
-
autoload :Plist, 'cocoapods/generator/acknowledgements/plist'
|
55
|
-
autoload :Markdown, 'cocoapods/generator/acknowledgements/markdown'
|
56
44
|
autoload :DummySource, 'cocoapods/generator/dummy_source'
|
45
|
+
autoload :Markdown, 'cocoapods/generator/acknowledgements/markdown'
|
46
|
+
autoload :Plist, 'cocoapods/generator/acknowledgements/plist'
|
47
|
+
autoload :PrefixHeader, 'cocoapods/generator/prefix_header'
|
48
|
+
autoload :TargetHeader, 'cocoapods/generator/target_header'
|
49
|
+
autoload :XCConfig, 'cocoapods/generator/xcconfig'
|
57
50
|
end
|
51
|
+
|
52
|
+
module Hooks
|
53
|
+
autoload :InstallerRepresentation, 'cocoapods/hooks/installer_representation'
|
54
|
+
autoload :LibraryRepresentation, 'cocoapods/hooks/library_representation'
|
55
|
+
autoload :PodRepresentation, 'cocoapods/hooks/pod_representation'
|
56
|
+
end
|
57
|
+
|
58
58
|
end
|
59
59
|
|
60
60
|
if ENV['COCOA_PODS_ENV'] == 'development'
|
data/lib/cocoapods/command.rb
CHANGED
@@ -1,142 +1,88 @@
|
|
1
1
|
require 'colored'
|
2
|
+
require 'claide'
|
2
3
|
|
3
4
|
module Pod
|
4
|
-
class
|
5
|
-
|
6
|
-
|
7
|
-
autoload :List, 'cocoapods/command/list'
|
8
|
-
autoload :Linter, 'cocoapods/command/linter'
|
9
|
-
autoload :Outdated, 'cocoapods/command/outdated'
|
10
|
-
autoload :Push, 'cocoapods/command/push'
|
11
|
-
autoload :Repo, 'cocoapods/command/repo'
|
12
|
-
autoload :Search, 'cocoapods/command/search'
|
13
|
-
autoload :Setup, 'cocoapods/command/setup'
|
14
|
-
autoload :Spec, 'cocoapods/command/spec'
|
15
|
-
autoload :Update, 'cocoapods/command/update'
|
16
|
-
|
17
|
-
class Help < Informative
|
18
|
-
def initialize(command_class, argv, unrecognized_command = nil)
|
19
|
-
@command_class, @argv, @unrecognized_command = command_class, argv, unrecognized_command
|
20
|
-
end
|
21
|
-
|
22
|
-
def message
|
23
|
-
message = [
|
24
|
-
'',
|
25
|
-
@command_class.banner.gsub(/\$ pod (.*)/, '$ pod \1'.green),
|
26
|
-
'',
|
27
|
-
'Options:',
|
28
|
-
'',
|
29
|
-
options,
|
30
|
-
"\n",
|
31
|
-
].join("\n")
|
32
|
-
message << "[!] Unrecognized command: `#{@unrecognized_command}'\n".red if @unrecognized_command
|
33
|
-
message << "[!] Unrecognized argument#{@argv.count > 1 ? 's' : ''}: `#{@argv.join(' - ')}'\n".red unless @argv.empty?
|
34
|
-
message
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def options
|
40
|
-
options = @command_class.options
|
41
|
-
keys = options.map(&:first)
|
42
|
-
key_size = keys.inject(0) { |size, key| key.size > size ? key.size : size }
|
43
|
-
options.map { |key, desc| " #{key.ljust(key_size)} #{desc}" }.join("\n")
|
44
|
-
end
|
45
|
-
end
|
5
|
+
class PlainInformative
|
6
|
+
include CLAide::InformativeError
|
7
|
+
end
|
46
8
|
|
47
|
-
|
48
|
-
def options; select { |x| x.to_s[0,1] == '-' }; end
|
49
|
-
def arguments; self - options; end
|
50
|
-
def option(name); !!delete(name); end
|
51
|
-
def shift_argument; (arg = arguments[0]) && delete(arg); end
|
52
|
-
end
|
9
|
+
class Command < CLAide::Command
|
53
10
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
banner + commands.map { |cmd| " * $ pod #{cmd.green} --help" }.join("\n")
|
58
|
-
end
|
11
|
+
self.abstract_command = true
|
12
|
+
self.command = 'pod'
|
13
|
+
self.description = 'CocoaPods, the Objective-C library package manager.'
|
59
14
|
|
60
15
|
def self.options
|
61
16
|
[
|
62
|
-
['--
|
63
|
-
['--
|
64
|
-
|
65
|
-
['--verbose', 'Print more information while working'],
|
66
|
-
['--version', 'Prints the version of CocoaPods'],
|
67
|
-
]
|
17
|
+
['--silent', 'Show nothing'],
|
18
|
+
['--version', 'Show the version of CocoaPods'],
|
19
|
+
].concat(super)
|
68
20
|
end
|
69
21
|
|
70
|
-
def self.
|
71
|
-
|
72
|
-
unless
|
73
|
-
Setup.new(ARGV.new).
|
22
|
+
def self.parse(argv)
|
23
|
+
command = super
|
24
|
+
unless SourcesManager.master_repo_functional? || command.is_a?(Setup) || ENV['SKIP_SETUP']
|
25
|
+
Setup.new(CLAide::ARGV.new([])).run
|
74
26
|
end
|
75
|
-
|
76
|
-
UI.puts
|
77
|
-
|
78
|
-
rescue Interrupt
|
79
|
-
puts "[!] Cancelled".red
|
80
|
-
Config.instance.verbose? ? raise : exit(1)
|
81
|
-
|
82
|
-
rescue Exception => e
|
83
|
-
if e.is_a?(PlainInformative) || ENV['COCOA_PODS_ENV'] == 'development' # also catches Informative
|
84
|
-
puts e.message
|
85
|
-
puts *e.backtrace if Config.instance.verbose? || ENV['COCOA_PODS_ENV'] == 'development'
|
86
|
-
else
|
87
|
-
puts ErrorReport.report(e)
|
88
|
-
end
|
89
|
-
exit 1
|
27
|
+
command
|
90
28
|
end
|
91
29
|
|
92
|
-
def self.
|
93
|
-
argv = ARGV.new(argv)
|
94
|
-
if argv.
|
30
|
+
def self.run(argv)
|
31
|
+
argv = CLAide::ARGV.new(argv)
|
32
|
+
if argv.flag?('version')
|
95
33
|
puts VERSION
|
96
34
|
exit!(0)
|
97
35
|
end
|
36
|
+
super(argv)
|
37
|
+
UI.print_warnings
|
38
|
+
end
|
98
39
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
String.send(:define_method, :colorize) { |string , _| string } if argv.option( '--no-color' )
|
104
|
-
|
105
|
-
command_class = case command_argument = argv.shift_argument
|
106
|
-
when 'install' then Install
|
107
|
-
when 'list' then List
|
108
|
-
when 'outdated' then Outdated
|
109
|
-
when 'push' then Push
|
110
|
-
when 'repo' then Repo
|
111
|
-
when 'search' then Search
|
112
|
-
when 'setup' then Setup
|
113
|
-
when 'spec' then Spec
|
114
|
-
when 'update' then Update
|
115
|
-
end
|
116
|
-
|
117
|
-
if command_class.nil?
|
118
|
-
raise Help.new(self, argv, command_argument)
|
119
|
-
elsif show_help
|
120
|
-
raise Help.new(command_class, argv)
|
40
|
+
def self.report_error(error)
|
41
|
+
if error.is_a?(Interrupt)
|
42
|
+
puts "[!] Cancelled".red
|
43
|
+
Config.instance.verbose? ? raise : exit(1)
|
121
44
|
else
|
122
|
-
|
45
|
+
puts UI::ErrorReport.report(error)
|
46
|
+
exit 1
|
123
47
|
end
|
124
48
|
end
|
125
49
|
|
126
|
-
|
127
|
-
|
50
|
+
# @todo If a command is run inside another one some settings which where
|
51
|
+
# true might return false.
|
52
|
+
#
|
53
|
+
# @todo We should probably not even load colored unless needed.
|
54
|
+
#
|
128
55
|
def initialize(argv)
|
129
|
-
|
56
|
+
config.silent = argv.flag?('silent', config.silent)
|
57
|
+
config.verbose = argv.flag?('verbose', config.verbose?)
|
58
|
+
String.send(:define_method, :colorize) { |string , _| string } unless self.colorize_output?
|
59
|
+
super
|
130
60
|
end
|
131
61
|
|
62
|
+
#-------------------------------------------------------------------------#
|
63
|
+
|
64
|
+
include Config::Mixin
|
65
|
+
|
132
66
|
private
|
133
67
|
|
68
|
+
# Checks that the podfile exists.
|
69
|
+
#
|
70
|
+
# @raise If the podfile does not exists.
|
71
|
+
#
|
72
|
+
# @return [void]
|
73
|
+
#
|
134
74
|
def verify_podfile_exists!
|
135
75
|
unless config.podfile
|
136
76
|
raise Informative, "No `Podfile' found in the current working directory."
|
137
77
|
end
|
138
78
|
end
|
139
79
|
|
80
|
+
# Checks that the lockfile exists.
|
81
|
+
#
|
82
|
+
# @raise If the lockfile does not exists.
|
83
|
+
#
|
84
|
+
# @return [void]
|
85
|
+
#
|
140
86
|
def verify_lockfile_exists!
|
141
87
|
unless config.lockfile
|
142
88
|
raise Informative, "No `Podfile.lock' found in the current working directory, run `pod install'."
|
@@ -145,3 +91,12 @@ module Pod
|
|
145
91
|
end
|
146
92
|
end
|
147
93
|
|
94
|
+
require 'cocoapods/command/list'
|
95
|
+
require 'cocoapods/command/outdated'
|
96
|
+
require 'cocoapods/command/project'
|
97
|
+
require 'cocoapods/command/push'
|
98
|
+
require 'cocoapods/command/repo'
|
99
|
+
require 'cocoapods/command/search'
|
100
|
+
require 'cocoapods/command/setup'
|
101
|
+
require 'cocoapods/command/spec'
|
102
|
+
require 'cocoapods/command/inter_process_communication'
|
@@ -0,0 +1,103 @@
|
|
1
|
+
module Pod
|
2
|
+
class Command
|
3
|
+
class IPC < Command
|
4
|
+
|
5
|
+
self.abstract_command = true
|
6
|
+
self.summary = 'Inter-process communication'
|
7
|
+
|
8
|
+
#-----------------------------------------------------------------------#
|
9
|
+
|
10
|
+
class Spec < IPC
|
11
|
+
|
12
|
+
self.summary = 'Converts a podspec to YAML.'
|
13
|
+
self.description = 'Converts a podspec to YAML and prints it to STDOUT.'
|
14
|
+
self.arguments = 'PATH'
|
15
|
+
|
16
|
+
def initialize(argv)
|
17
|
+
@path = argv.shift_argument
|
18
|
+
super
|
19
|
+
end
|
20
|
+
|
21
|
+
def validate!
|
22
|
+
super
|
23
|
+
help! "A specification path is required." unless @path
|
24
|
+
end
|
25
|
+
|
26
|
+
def run
|
27
|
+
spec = Specification.from_file(@path)
|
28
|
+
UI.puts spec.to_yaml
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
#-----------------------------------------------------------------------#
|
34
|
+
|
35
|
+
class Podfile < IPC
|
36
|
+
|
37
|
+
self.summary = 'Converts a Podfile to YAML.'
|
38
|
+
self.description = 'Converts a Podfile to YAML and prints it to STDOUT.'
|
39
|
+
self.arguments = 'PATH'
|
40
|
+
|
41
|
+
def initialize(argv)
|
42
|
+
@path = argv.shift_argument
|
43
|
+
super
|
44
|
+
end
|
45
|
+
|
46
|
+
def validate!
|
47
|
+
super
|
48
|
+
help! "A Podfile path is required." unless @path
|
49
|
+
end
|
50
|
+
|
51
|
+
def run
|
52
|
+
podfile = Pod::Podfile.from_file(@path)
|
53
|
+
UI.puts podfile.to_yaml
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
#-----------------------------------------------------------------------#
|
59
|
+
|
60
|
+
class List < IPC
|
61
|
+
|
62
|
+
self.summary = 'Lists the specifications know to CocoaPods.'
|
63
|
+
self.description = <<-DESC
|
64
|
+
Prints to STDOUT a YAML dictionary where the keys are the name of the
|
65
|
+
specifications and the values are a dictionary with the following
|
66
|
+
keys.
|
67
|
+
|
68
|
+
- defined_in_file
|
69
|
+
- version
|
70
|
+
- authors
|
71
|
+
- summary
|
72
|
+
- description
|
73
|
+
- platforms
|
74
|
+
DESC
|
75
|
+
|
76
|
+
def run
|
77
|
+
sets = SourcesManager.all_sets
|
78
|
+
result = {}
|
79
|
+
sets.each do |set|
|
80
|
+
begin
|
81
|
+
spec = set.specification
|
82
|
+
result[spec.name] = {
|
83
|
+
'defined_in_file' => spec.defined_in_file.to_s,
|
84
|
+
'version' => spec.version,
|
85
|
+
'authors' => spec.authors,
|
86
|
+
'summary' => spec.summary,
|
87
|
+
'description' => spec.description,
|
88
|
+
'platforms' => spec.available_platforms.map { |p| p.name.to_s },
|
89
|
+
}
|
90
|
+
rescue DSLError
|
91
|
+
next
|
92
|
+
end
|
93
|
+
end
|
94
|
+
UI.puts result.to_yaml
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
#-----------------------------------------------------------------------#
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|