cocoapods 0.36.0.beta.1 → 0.36.0.beta.2
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 +67 -5
- data/bin/pod +11 -10
- data/bin/sandbox-pod +1 -1
- data/lib/cocoapods.rb +1 -1
- data/lib/cocoapods/command/lib.rb +0 -1
- data/lib/cocoapods/command/outdated.rb +1 -3
- data/lib/cocoapods/command/repo.rb +5 -267
- data/lib/cocoapods/command/repo/add.rb +53 -0
- data/lib/cocoapods/command/repo/lint.rb +73 -0
- data/lib/cocoapods/command/repo/list.rb +95 -0
- data/lib/cocoapods/command/repo/remove.rb +36 -0
- data/lib/cocoapods/command/repo/update.rb +27 -0
- data/lib/cocoapods/command/setup.rb +1 -1
- data/lib/cocoapods/command/spec.rb +5 -546
- data/lib/cocoapods/command/spec/cat.rb +51 -0
- data/lib/cocoapods/command/spec/create.rb +279 -0
- data/lib/cocoapods/command/spec/edit.rb +87 -0
- data/lib/cocoapods/command/spec/lint.rb +105 -0
- data/lib/cocoapods/command/spec/which.rb +43 -0
- data/lib/cocoapods/downloader.rb +0 -2
- data/lib/cocoapods/external_sources/podspec_source.rb +13 -3
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +22 -11
- data/lib/cocoapods/generator/embed_frameworks_script.rb +3 -0
- data/lib/cocoapods/generator/header.rb +3 -3
- data/lib/cocoapods/generator/target_environment_header.rb +1 -1
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +7 -7
- data/lib/cocoapods/generator/xcconfig/public_pod_xcconfig.rb +1 -1
- data/lib/cocoapods/hooks_manager.rb +4 -4
- data/lib/cocoapods/installer.rb +17 -4
- data/lib/cocoapods/installer/analyzer.rb +19 -12
- data/lib/cocoapods/installer/pod_source_installer.rb +1 -1
- data/lib/cocoapods/installer/target_installer.rb +1 -1
- data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +9 -8
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +2 -2
- data/lib/cocoapods/sandbox.rb +0 -2
- data/lib/cocoapods/sandbox/headers_store.rb +1 -1
- data/lib/cocoapods/sources_manager.rb +8 -7
- data/lib/cocoapods/target.rb +1 -1
- data/lib/cocoapods/target/aggregate_target.rb +1 -0
- data/lib/cocoapods/target/pod_target.rb +1 -1
- data/lib/cocoapods/user_interface/error_report.rb +10 -0
- data/lib/cocoapods/validator.rb +15 -4
- metadata +17 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86bf745ff3beb43f547d72bdc3bb5561250836ef
|
4
|
+
data.tar.gz: 527fecbbab8649bf447a7fb6ea5130340a9ffd65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 691fb6ca9b5324b5a1ac63a496e9cb87429941ce7d178b45501649890a5029a9eeb1801850e9a73e655405c016a40da7cfaa53326f63825123939e501f6ad9c5
|
7
|
+
data.tar.gz: bf435ded4cbcaca3b11a79aa9df3aecfcc65b9f54f070f98bf451f98a8dc2b010ce58d2353cb117f7a5488e8bf51b10ff8f9461aac0d7f6b9ec652544d3f64c1
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,69 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
|
|
4
4
|
|
5
5
|
To install release candidates run `[sudo] gem install cocoapods --pre`
|
6
6
|
|
7
|
+
## 0.36.0.beta.2
|
8
|
+
|
9
|
+
[Xcodeproj](https://github.com/CocoaPods/Xcodeproj/compare/0.21.0...0.21.2)
|
10
|
+
|
11
|
+
##### Breaking
|
12
|
+
|
13
|
+
* Changes the default spec repositories used from all configured spec
|
14
|
+
repositories, to the master spec repository when no spec repositories
|
15
|
+
are explicitly configured in a Podfile.
|
16
|
+
[Kyle Fuller](https://github.com/kylef)
|
17
|
+
[#2946](https://github.com/CocoaPods/CocoaPods/issues/2946)
|
18
|
+
|
19
|
+
##### Enhancements
|
20
|
+
|
21
|
+
* Set the APPLICATION_EXTENSION_API_ONLY build setting if integrating with an app extension target.
|
22
|
+
[Boris Bügling](https://github.com/neonichu)
|
23
|
+
[#2980](https://github.com/CocoaPods/CocoaPods/issues/2980)
|
24
|
+
|
25
|
+
* Xcodebuild warnings will now be reported as `warning` during linting
|
26
|
+
instead of `note`.
|
27
|
+
[Hugo Tunius](https://github.com/K0nserv)
|
28
|
+
|
29
|
+
* Copy only the resources required for the current build configuration.
|
30
|
+
[Samuel Giddins](https://github.com/segiddins)
|
31
|
+
[#2391](https://github.com/CocoaPods/CocoaPods/issues/2391)
|
32
|
+
|
33
|
+
##### Bug Fixes
|
34
|
+
|
35
|
+
* Ensure that linting fails if xcodebuild doesn't successfully build your Pod.
|
36
|
+
[Kyle Fuller](https://github.com/kylef)
|
37
|
+
[#2981](https://github.com/CocoaPods/CocoaPods/issues/2981)
|
38
|
+
[cocoapods-trunk#33](https://github.com/CocoaPods/cocoapods-trunk/issues/33)
|
39
|
+
|
40
|
+
* Clone the master spec repository when no spec repositories are explicitly
|
41
|
+
defined in the Podfile. This fixes problems using CocoaPods for the first
|
42
|
+
time without any explicit spec repositories.
|
43
|
+
[Kyle Fuller](https://github.com/kylef)
|
44
|
+
[#2946](https://github.com/CocoaPods/CocoaPods/issues/2946)
|
45
|
+
|
46
|
+
* Xcodebuild warnings with the string `error` in them will no longer be
|
47
|
+
linted as errors if they are in fact warnings.
|
48
|
+
[Hugo Tunius](https://github.com/K0nserv)
|
49
|
+
[#2579](https://github.com/CocoaPods/CocoaPods/issues/2579)
|
50
|
+
|
51
|
+
* Any errors which occur during fetching of external podspecs over HTTP
|
52
|
+
will now be gracefully handled.
|
53
|
+
[Hugo Tunius](https://github.com/K0nserv)
|
54
|
+
[#2823](https://github.com/CocoaPods/CocoaPods/issues/2823)
|
55
|
+
|
56
|
+
* When updating spec repositories only update the git sourced repos.
|
57
|
+
[Dustin Clark](https://github.com/clarkda)
|
58
|
+
[#2558](https://github.com/CocoaPods/CocoaPods/issues/2558)
|
59
|
+
|
60
|
+
* Pods referenced via the `:podspec` option will have their podspecs properly
|
61
|
+
parsed in the local directory if the path points to a local file.
|
62
|
+
[Samuel Giddins](https://github.com/segiddins)
|
63
|
+
|
64
|
+
* Fix an issue where using Swift frameworks in an Objective-C host application
|
65
|
+
causes an error because the Swift frameworks we're not code signed.
|
66
|
+
[Joseph Ross](https://github.com/jrosssavant)
|
67
|
+
[#3008](https://github.com/CocoaPods/CocoaPods/issues/3008)
|
68
|
+
|
69
|
+
|
7
70
|
## 0.36.0.beta.1
|
8
71
|
|
9
72
|
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.35.0...0.36.0.beta.1)
|
@@ -76,10 +139,6 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
|
|
76
139
|
|
77
140
|
##### Bug Fixes
|
78
141
|
|
79
|
-
* Fix resource bundles for not build targets.
|
80
|
-
[Boris Bügling](https://github.com/neonichu)
|
81
|
-
[#2934](https://github.com/CocoaPods/CocoaPods/issues/2934)
|
82
|
-
|
83
142
|
* Fix updating a pod that has subspec dependencies.
|
84
143
|
[Samuel Giddins](https://github.com/segiddins)
|
85
144
|
[#2879](https://github.com/CocoaPods/CocoaPods/issues/2879)
|
@@ -99,7 +158,7 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
|
|
99
158
|
[Samuel Giddins](https://github.com/segiddins)
|
100
159
|
[#1919](https://github.com/CocoaPods/CocoaPods/issues/1919)
|
101
160
|
|
102
|
-
* Fix the reading of podspecs that come from the `:git`, `:svn`,
|
161
|
+
* Fix the reading of podspecs that come from the `:git`, `:svn`, `:http`, or
|
103
162
|
`:hg` options in your `Podfile` that used context-dependent ruby code, such as
|
104
163
|
reading a file to determine the specification version.
|
105
164
|
[Samuel Giddins](https://github.com/segiddins)
|
@@ -174,6 +233,9 @@ For more details, see :memo: [CocoaPods 0.35](http://blog.cocoapods.org/CocoaPod
|
|
174
233
|
copying resources to main application bundle.
|
175
234
|
[Yan Rabovik](https://github.com/rabovik)
|
176
235
|
|
236
|
+
* Fix uninitialized constant Class::YAML crash in some cases.
|
237
|
+
[Tim Shadel](https://github.com/timshadel)
|
238
|
+
|
177
239
|
##### Enhancements
|
178
240
|
|
179
241
|
* `pod search`, `pod spec which`, `pod spec cat` and `pod spec edit`
|
data/bin/pod
CHANGED
@@ -26,16 +26,17 @@ require 'cocoapods'
|
|
26
26
|
|
27
27
|
if profile_filename = ENV['PROFILE']
|
28
28
|
require 'ruby-prof'
|
29
|
-
reporter =
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
29
|
+
reporter =
|
30
|
+
case (profile_extname = File.extname(profile_filename))
|
31
|
+
when '.txt'
|
32
|
+
RubyProf::FlatPrinterWithLineNumbers
|
33
|
+
when '.html'
|
34
|
+
RubyProf::GraphHtmlPrinter
|
35
|
+
when '.callgrind'
|
36
|
+
RubyProf::CallTreePrinter
|
37
|
+
else
|
38
|
+
raise "Unknown profiler format indicated by extension: #{profile_extname}"
|
39
|
+
end
|
39
40
|
File.open(profile_filename, 'w') do |io|
|
40
41
|
reporter.new(RubyProf.profile { Pod::Command.run(ARGV) }).print(io)
|
41
42
|
end
|
data/bin/sandbox-pod
CHANGED
@@ -153,7 +153,7 @@ class Profile
|
|
153
153
|
File.expand_path('../..', developer_prefix)
|
154
154
|
end
|
155
155
|
|
156
|
-
# TODO raise SAFE level (0) to 4 if possible.
|
156
|
+
# TODO: raise SAFE level (0) to 4 if possible.
|
157
157
|
def generate
|
158
158
|
ERB.new(PROFILE_ERB_TEMPLATE, 0, '>').result(binding)
|
159
159
|
end
|
data/lib/cocoapods.rb
CHANGED
@@ -7,7 +7,7 @@ require 'xcodeproj'
|
|
7
7
|
require 'active_support/core_ext/string/strip'
|
8
8
|
require 'active_support/core_ext/string/inflections'
|
9
9
|
require 'active_support/core_ext/array/conversions'
|
10
|
-
# TODO check what this actually does by the time we're going to add support for
|
10
|
+
# TODO: check what this actually does by the time we're going to add support for
|
11
11
|
# other locales.
|
12
12
|
require 'i18n'
|
13
13
|
if I18n.respond_to?(:enforce_available_locales=)
|
@@ -67,10 +67,8 @@ module Pod
|
|
67
67
|
if source_version > lockfile_version
|
68
68
|
matching_spec = unlocked_pods.find { |s| s.name == pod_name }
|
69
69
|
matching_version =
|
70
|
-
matching_spec ? matching_spec.version :
|
70
|
+
matching_spec ? matching_spec.version : '(unused)'
|
71
71
|
[pod_name, lockfile_version, matching_version, source_version]
|
72
|
-
else
|
73
|
-
nil
|
74
72
|
end
|
75
73
|
end.compact.uniq
|
76
74
|
end
|
@@ -1,5 +1,10 @@
|
|
1
1
|
require 'fileutils'
|
2
|
+
require 'cocoapods/command/repo/add'
|
3
|
+
require 'cocoapods/command/repo/lint'
|
4
|
+
require 'cocoapods/command/repo/list'
|
2
5
|
require 'cocoapods/command/repo/push'
|
6
|
+
require 'cocoapods/command/repo/remove'
|
7
|
+
require 'cocoapods/command/repo/update'
|
3
8
|
|
4
9
|
module Pod
|
5
10
|
class Command
|
@@ -11,273 +16,6 @@ module Pod
|
|
11
16
|
self.summary = 'Manage spec-repositories'
|
12
17
|
self.default_subcommand = 'list'
|
13
18
|
|
14
|
-
class Add < Repo
|
15
|
-
self.summary = 'Add a spec repo.'
|
16
|
-
|
17
|
-
self.description = <<-DESC
|
18
|
-
Clones `URL` in the local spec-repos directory at `~/.cocoapods/repos/`. The
|
19
|
-
remote can later be referred to by `NAME`.
|
20
|
-
DESC
|
21
|
-
|
22
|
-
self.arguments = [
|
23
|
-
CLAide::Argument.new('NAME', true),
|
24
|
-
CLAide::Argument.new('URL', true),
|
25
|
-
CLAide::Argument.new('BRANCH', false),
|
26
|
-
]
|
27
|
-
|
28
|
-
def self.options
|
29
|
-
[
|
30
|
-
['--shallow', 'Create a shallow clone (fast clone, but no push capabilities)'],
|
31
|
-
].concat(super)
|
32
|
-
end
|
33
|
-
|
34
|
-
def initialize(argv)
|
35
|
-
@shallow = argv.flag?('shallow', false)
|
36
|
-
@name, @url, @branch = argv.shift_argument, argv.shift_argument, argv.shift_argument
|
37
|
-
super
|
38
|
-
end
|
39
|
-
|
40
|
-
def validate!
|
41
|
-
super
|
42
|
-
unless @name && @url
|
43
|
-
help! 'Adding a repo needs a `NAME` and a `URL`.'
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def run
|
48
|
-
prefix = @shallow ? 'Creating shallow clone of' : 'Cloning'
|
49
|
-
UI.section("#{prefix} spec repo `#{@name}` from `#{@url}`#{" (branch `#{@branch}`)" if @branch}") do
|
50
|
-
config.repos_dir.mkpath
|
51
|
-
Dir.chdir(config.repos_dir) do
|
52
|
-
command = "clone '#{@url}' #{@name}"
|
53
|
-
command << ' --depth=1' if @shallow
|
54
|
-
git!(command)
|
55
|
-
end
|
56
|
-
Dir.chdir(dir) { git!("checkout #{@branch}") } if @branch
|
57
|
-
SourcesManager.check_version_information(dir)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
#-----------------------------------------------------------------------#
|
63
|
-
|
64
|
-
class Update < Repo
|
65
|
-
self.summary = 'Update a spec repo.'
|
66
|
-
|
67
|
-
self.description = <<-DESC
|
68
|
-
Updates the local clone of the spec-repo `NAME`. If `NAME` is omitted
|
69
|
-
this will update all spec-repos in `~/.cocoapods/repos`.
|
70
|
-
DESC
|
71
|
-
|
72
|
-
self.arguments = [
|
73
|
-
CLAide::Argument.new('NAME', false),
|
74
|
-
]
|
75
|
-
|
76
|
-
def initialize(argv)
|
77
|
-
@name = argv.shift_argument
|
78
|
-
super
|
79
|
-
end
|
80
|
-
|
81
|
-
def run
|
82
|
-
SourcesManager.update(@name, true)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
#-----------------------------------------------------------------------#
|
87
|
-
|
88
|
-
class Lint < Repo
|
89
|
-
self.summary = 'Validates all specs in a repo.'
|
90
|
-
|
91
|
-
self.description = <<-DESC
|
92
|
-
Lints the spec-repo `NAME`. If a directory is provided it is assumed
|
93
|
-
to be the root of a repo. Finally, if `NAME` is not provided this
|
94
|
-
will lint all the spec-repos known to CocoaPods.
|
95
|
-
DESC
|
96
|
-
|
97
|
-
self.arguments = [
|
98
|
-
CLAide::Argument.new(%w(NAME DIRECTORY), false),
|
99
|
-
]
|
100
|
-
|
101
|
-
def self.options
|
102
|
-
[['--only-errors', 'Lint presents only the errors']].concat(super)
|
103
|
-
end
|
104
|
-
|
105
|
-
def initialize(argv)
|
106
|
-
@name = argv.shift_argument
|
107
|
-
@only_errors = argv.flag?('only-errors')
|
108
|
-
super
|
109
|
-
end
|
110
|
-
|
111
|
-
# @todo Part of this logic needs to be ported to cocoapods-core so web
|
112
|
-
# services can validate the repo.
|
113
|
-
#
|
114
|
-
# @todo add UI.print and enable print statements again.
|
115
|
-
#
|
116
|
-
def run
|
117
|
-
if @name
|
118
|
-
dirs = File.exist?(@name) ? [Pathname.new(@name)] : [dir]
|
119
|
-
else
|
120
|
-
dirs = config.repos_dir.children.select(&:directory?)
|
121
|
-
end
|
122
|
-
dirs.each do |dir|
|
123
|
-
SourcesManager.check_version_information(dir)
|
124
|
-
UI.puts "\nLinting spec repo `#{dir.realpath.basename}`\n".yellow
|
125
|
-
|
126
|
-
validator = Source::HealthReporter.new(dir)
|
127
|
-
validator.pre_check do |_name, _version|
|
128
|
-
UI.print '.'
|
129
|
-
end
|
130
|
-
report = validator.analyze
|
131
|
-
UI.puts
|
132
|
-
UI.puts
|
133
|
-
|
134
|
-
report.pods_by_warning.each do |message, versions_by_name|
|
135
|
-
UI.puts "-> #{message}".yellow
|
136
|
-
versions_by_name.each { |name, versions| UI.puts " - #{name} (#{versions * ', '})" }
|
137
|
-
UI.puts
|
138
|
-
end
|
139
|
-
|
140
|
-
report.pods_by_error.each do |message, versions_by_name|
|
141
|
-
UI.puts "-> #{message}".red
|
142
|
-
versions_by_name.each { |name, versions| UI.puts " - #{name} (#{versions * ', '})" }
|
143
|
-
UI.puts
|
144
|
-
end
|
145
|
-
|
146
|
-
UI.puts "Analyzed #{report.analyzed_paths.count} podspecs files.\n\n"
|
147
|
-
if report.pods_by_error.count.zero?
|
148
|
-
UI.puts 'All the specs passed validation.'.green << "\n\n"
|
149
|
-
else
|
150
|
-
raise Informative, "#{report.pods_by_error.count} podspecs failed validation."
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
#-----------------------------------------------------------------------#
|
157
|
-
|
158
|
-
class Remove < Repo
|
159
|
-
self.summary = 'Remove a spec repo'
|
160
|
-
|
161
|
-
self.description = <<-DESC
|
162
|
-
Deletes the remote named `NAME` from the local spec-repos directory at `~/.cocoapods/repos/.`
|
163
|
-
DESC
|
164
|
-
|
165
|
-
self.arguments = [
|
166
|
-
CLAide::Argument.new('NAME', true),
|
167
|
-
]
|
168
|
-
|
169
|
-
def initialize(argv)
|
170
|
-
@name = argv.shift_argument
|
171
|
-
super
|
172
|
-
end
|
173
|
-
|
174
|
-
def validate!
|
175
|
-
super
|
176
|
-
help! 'Deleting a repo needs a `NAME`.' unless @name
|
177
|
-
help! "repo #{@name} does not exist" unless File.directory?(dir)
|
178
|
-
help! "You do not have permission to delete the #{@name} repository." \
|
179
|
-
'Perhaps try prefixing this command with sudo.' unless File.writable?(dir)
|
180
|
-
end
|
181
|
-
|
182
|
-
def run
|
183
|
-
UI.section("Removing spec repo `#{@name}`") do
|
184
|
-
FileUtils.rm_rf(dir)
|
185
|
-
end
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
#-----------------------------------------------------------------------#
|
190
|
-
|
191
|
-
class List < Repo
|
192
|
-
self.summary = 'List repos'
|
193
|
-
|
194
|
-
self.description = <<-DESC
|
195
|
-
List the repos from the local spec-repos directory at `~/.cocoapods/repos/.`
|
196
|
-
DESC
|
197
|
-
|
198
|
-
def self.options
|
199
|
-
[["--count-only", "Show the total number of repos"]].concat(super)
|
200
|
-
end
|
201
|
-
|
202
|
-
def initialize(argv)
|
203
|
-
@count_only = argv.flag?('count-only')
|
204
|
-
super
|
205
|
-
end
|
206
|
-
|
207
|
-
# @output Examples:
|
208
|
-
#
|
209
|
-
# master
|
210
|
-
# - type: git (origin)
|
211
|
-
# - URL: https://github.com/CocoaPods/Specs.git
|
212
|
-
# - path: /Users/lascorbe/.cocoapods/repos/master
|
213
|
-
#
|
214
|
-
# test
|
215
|
-
# - type: local copy
|
216
|
-
# - path: /Users/lascorbe/.cocoapods/repos/test
|
217
|
-
#
|
218
|
-
def run
|
219
|
-
sources = SourcesManager.all
|
220
|
-
print_sources(sources) unless @count_only
|
221
|
-
print_count_of_sources(sources)
|
222
|
-
end
|
223
|
-
|
224
|
-
private
|
225
|
-
|
226
|
-
# Pretty-prints the source at the given path.
|
227
|
-
#
|
228
|
-
# @param [String,Pathname] path
|
229
|
-
# The path of the source to be printed.
|
230
|
-
#
|
231
|
-
# @return [void]
|
232
|
-
#
|
233
|
-
def print_source_at_path(path)
|
234
|
-
Dir.chdir(path) do
|
235
|
-
if SourcesManager.git_repo?(path)
|
236
|
-
remote_name = branch_remote_name(branch_name)
|
237
|
-
if remote_name
|
238
|
-
UI.puts "- Type: git (#{remote_name})"
|
239
|
-
url = url_of_git_repo(remote_name)
|
240
|
-
UI.puts "- URL: #{url}"
|
241
|
-
else
|
242
|
-
UI.puts "- Type: git (no remote information available)"
|
243
|
-
end
|
244
|
-
else
|
245
|
-
UI.puts "- Type: local copy"
|
246
|
-
end
|
247
|
-
UI.puts "- Path: #{path}"
|
248
|
-
end
|
249
|
-
end
|
250
|
-
|
251
|
-
# Pretty-prints the given sources.
|
252
|
-
#
|
253
|
-
# @param [Array<Source>] sources
|
254
|
-
# The sources that should be printed.
|
255
|
-
#
|
256
|
-
# @return [void]
|
257
|
-
#
|
258
|
-
def print_sources(sources)
|
259
|
-
sources.each do |source|
|
260
|
-
UI.title source.name do
|
261
|
-
print_source_at_path source.repo
|
262
|
-
end
|
263
|
-
end
|
264
|
-
UI.puts "\n"
|
265
|
-
end
|
266
|
-
|
267
|
-
# Pretty-prints the number of sources.
|
268
|
-
#
|
269
|
-
# @param [Array<Source>] sources
|
270
|
-
# The sources whose count should be printed.
|
271
|
-
#
|
272
|
-
# @return [void]
|
273
|
-
#
|
274
|
-
def print_count_of_sources(sources)
|
275
|
-
number_of_repos = sources.length
|
276
|
-
repo_string = number_of_repos != 1 ? 'repos' : 'repo'
|
277
|
-
UI.puts "#{number_of_repos} #{repo_string}".green
|
278
|
-
end
|
279
|
-
end
|
280
|
-
|
281
19
|
#-----------------------------------------------------------------------#
|
282
20
|
|
283
21
|
extend Executable
|