cocoapods-try 0.1.0 → 0.2.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 +4 -4
- data/.rubocop.yml +51 -0
- data/.travis.yml +4 -5
- data/CHANGELOG.md +30 -1
- data/Gemfile +4 -3
- data/LICENSE +1 -1
- data/README.md +9 -6
- data/Rakefile +37 -4
- data/{cocoapods-docs.gemspec → cocoapods-try.gemspec} +1 -1
- data/lib/cocoapods_try.rb +4 -1
- data/lib/pod/command/try.rb +95 -43
- data/spec/command/try_spec.rb +77 -15
- data/spec/spec_helper.rb +4 -2
- metadata +15 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6852926d0e2280157a7d754c29ded139c053e96
|
4
|
+
data.tar.gz: d374de7456ab6faae9787a99f29beee01191d0ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c8fd308506bf958b5c0bddee407b45346b89e33737aceac8eeea750d3345fd83ae9b7fa038171c00defff0bf3d0a1469e3126192252a49e45ad9f744416e39b
|
7
|
+
data.tar.gz: 6eb9e69bef6993e259d41a6c043f61a8bb1ce1573da09f7e07d2a34364aae98e964541019d61b138bc95c9bcedaf169fc5fa11a369030f63e4676535d600a18e
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
HashSyntax:
|
2
|
+
EnforcedStyle: hash_rockets
|
3
|
+
|
4
|
+
StringLiterals:
|
5
|
+
Enabled: false
|
6
|
+
EnforcedStyle: double_quotes
|
7
|
+
|
8
|
+
SignalException:
|
9
|
+
EnforcedStyle: only_raise
|
10
|
+
|
11
|
+
ConstantName:
|
12
|
+
Enabled: false
|
13
|
+
|
14
|
+
IfUnlessModifier:
|
15
|
+
Enabled: false
|
16
|
+
|
17
|
+
EmptyLinesAroundBody:
|
18
|
+
Enabled: false
|
19
|
+
|
20
|
+
AsciiComments:
|
21
|
+
Enabled: false
|
22
|
+
|
23
|
+
Proc:
|
24
|
+
Enabled: false
|
25
|
+
|
26
|
+
BracesAroundHashParameters:
|
27
|
+
Enabled: false
|
28
|
+
|
29
|
+
Encoding:
|
30
|
+
Enabled: false
|
31
|
+
|
32
|
+
TrailingComma:
|
33
|
+
EnforcedStyleForMultiline: comma
|
34
|
+
|
35
|
+
FileName:
|
36
|
+
Enabled: false
|
37
|
+
|
38
|
+
#------------------------------------------------------------------------------
|
39
|
+
# Needs fixing
|
40
|
+
#------------------------------------------------------------------------------
|
41
|
+
|
42
|
+
ClassLength:
|
43
|
+
Max: 200
|
44
|
+
|
45
|
+
MethodLength:
|
46
|
+
Max: 18
|
47
|
+
|
48
|
+
LineLength:
|
49
|
+
Enabled: false
|
50
|
+
|
51
|
+
|
data/.travis.yml
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
language: objective-c
|
2
2
|
env:
|
3
3
|
# This is what 10.8.x comes with and we want to support that.
|
4
|
-
- RVM_RUBY_VERSION=system NOEXEC_DISABLE=1 RUBY_VERSION_SPECIFIC='sudo
|
5
|
-
- RVM_RUBY_VERSION=
|
4
|
+
- RVM_RUBY_VERSION=system NOEXEC_DISABLE=1 RUBY_VERSION_SPECIFIC='sudo ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2' SSL_CERT_FILE=/usr/local/share/cacert.pem GIT_AUTHOR_NAME=CocoaPods GIT_AUTHOR_EMAIL=cocoapods@example.com PYTHONPATH=/usr/local/lib/python2.7/site-packages
|
5
|
+
- RVM_RUBY_VERSION=2.0.0-p247 NOEXEC_DISABLE=1 RUBY_VERSION_SPECIFIC='sudo gem install bundler --no-ri --no-rdoc' GIT_AUTHOR_NAME=CocoaPods GIT_AUTHOR_EMAIL=cocoapods@example.com PYTHONPATH=/usr/local/lib/python2.7/site-packages
|
6
6
|
before_install:
|
7
7
|
- curl http://curl.haxx.se/ca/cacert.pem -o /usr/local/share/cacert.pem
|
8
|
-
- sh -c 'if [ "$RVM_RUBY_VERSION" != "system" ]; then rvm install $RVM_RUBY_VERSION --without-tcl --without-tk; fi'
|
9
8
|
- source ~/.rvm/scripts/rvm && rvm use $RVM_RUBY_VERSION
|
10
|
-
install: eval $RUBY_VERSION_SPECIFIC &&
|
11
|
-
script: bundle exec rake
|
9
|
+
install: eval $RUBY_VERSION_SPECIFIC && rake bootstrap[use_bundle_dir]
|
10
|
+
script: bundle exec rake spec
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,32 @@
|
|
1
1
|
# Cocoapods::Try Changelog
|
2
2
|
|
3
|
-
##
|
3
|
+
## 0.2.0
|
4
|
+
|
5
|
+
### Enhancements
|
6
|
+
|
7
|
+
* Added support for the specification of an URL instead of the name of a Pod.
|
8
|
+
[David Grandinetti](https://github.com/dbgrandi)
|
9
|
+
[Fabio Pelosin](https://github.com/irrationalfab)
|
10
|
+
|
11
|
+
## 0.1.2
|
12
|
+
|
13
|
+
### Enhancements
|
14
|
+
|
15
|
+
* Prefer workspaces over projects.
|
16
|
+
[Kyle Fuller](https://github.com/kylef)
|
17
|
+
|
18
|
+
* Open workspaces if available.
|
19
|
+
[Kyle Fuller](https://github.com/kylef)
|
20
|
+
|
21
|
+
### Fixes
|
22
|
+
|
23
|
+
* Don't consider workspaces in bundles.
|
24
|
+
[Eloy Durán](https://github.com/alloy)
|
25
|
+
|
26
|
+
* Typo fixes.
|
27
|
+
[Mark Townsend](https://github.com/markltownsend)
|
28
|
+
|
29
|
+
## 0.1.0
|
30
|
+
|
31
|
+
* Initial implementation.
|
32
|
+
[Fabio Pelosin](https://github.com/fabiopelosin)
|
data/Gemfile
CHANGED
@@ -6,7 +6,8 @@ group :development do
|
|
6
6
|
gem 'cocoapods'
|
7
7
|
gem 'bacon'
|
8
8
|
gem 'mocha-on-bacon'
|
9
|
-
gem '
|
10
|
-
|
11
|
-
|
9
|
+
gem 'prettybacon'
|
10
|
+
if RUBY_VERSION >= '1.9.3'
|
11
|
+
gem 'rubocop'
|
12
|
+
end
|
12
13
|
end
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
# Cocoapods try
|
2
2
|
|
3
|
-
[](https://travis-ci.org/CocoaPods/cocoapods-try)
|
4
|
+
[](https://codeclimate.com/github/CocoaPods/cocoapods-try)
|
4
5
|
|
5
6
|
CocoaPods plugin which allows to quickly try the demo project of a Pod.
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
$ git clone THIS_REPO_URL
|
10
|
-
$ cd THIS_REPO
|
11
|
-
$ rake install
|
8
|
+

|
12
9
|
|
13
10
|
## Usage
|
14
11
|
|
15
12
|
$ pod try POD_NAME
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
$ gem install cocoapods-try
|
17
|
+
|
18
|
+
|
data/Rakefile
CHANGED
@@ -1,12 +1,45 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
task :default => "spec"
|
4
|
+
|
5
|
+
# Bootstrap
|
6
|
+
#-----------------------------------------------------------------------------#
|
7
|
+
|
8
|
+
task :bootstrap, :use_bundle_dir? do |t, args|
|
9
|
+
if args[:use_bundle_dir?]
|
10
|
+
sh "bundle install --path ./travis_bundle_dir"
|
11
|
+
else
|
12
|
+
sh "bundle install"
|
13
|
+
end
|
5
14
|
end
|
6
15
|
|
16
|
+
# Spec
|
17
|
+
#-----------------------------------------------------------------------------#
|
18
|
+
|
7
19
|
desc "Runs all the specs"
|
8
|
-
task :
|
20
|
+
task :spec do
|
21
|
+
start_time = Time.now
|
9
22
|
sh "bundle exec bacon #{specs('**')}"
|
23
|
+
duration = Time.now - start_time
|
24
|
+
puts "Tests completed in #{duration}s"
|
25
|
+
Rake::Task["rubocop"].invoke
|
10
26
|
end
|
11
27
|
|
12
|
-
|
28
|
+
def specs(dir)
|
29
|
+
FileList["spec/#{dir}/*_spec.rb"].shuffle.join(' ')
|
30
|
+
end
|
31
|
+
|
32
|
+
# Rubocop
|
33
|
+
#-----------------------------------------------------------------------------#
|
34
|
+
|
35
|
+
desc 'Checks code style'
|
36
|
+
task :rubocop do
|
37
|
+
if RUBY_VERSION >= '1.9.3'
|
38
|
+
require 'rubocop'
|
39
|
+
cli = Rubocop::CLI.new
|
40
|
+
result = cli.run(FileList['{spec,lib}/**/*.rb'])
|
41
|
+
abort('RuboCop failed!') unless result == 0
|
42
|
+
else
|
43
|
+
puts "[!] Ruby > 1.9 is required to run style checks"
|
44
|
+
end
|
45
|
+
end
|
@@ -6,7 +6,7 @@ require 'cocoapods_try.rb'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "cocoapods-try"
|
8
8
|
spec.version = CocoapodsTry::VERSION
|
9
|
-
spec.authors = ["
|
9
|
+
spec.authors = ["Fabio Pelosin"]
|
10
10
|
spec.summary = %q{CocoaPods plugin which allows to quickly try the demo project of a Pod.}
|
11
11
|
spec.homepage = "https://github.com/cocoapods/cocoapods-try"
|
12
12
|
spec.license = "MIT"
|
data/lib/cocoapods_try.rb
CHANGED
data/lib/pod/command/try.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
|
2
|
+
# The CocoaPods namespace
|
3
|
+
#
|
1
4
|
module Pod
|
2
5
|
class Command
|
3
6
|
|
@@ -7,10 +10,12 @@ module Pod
|
|
7
10
|
self.summary = "Try a Pod!"
|
8
11
|
|
9
12
|
self.description = <<-DESC
|
10
|
-
|
13
|
+
Downloads the Pod with the given NAME (or Git URL), install its
|
14
|
+
depedencies if needed and opens its demo project. If a Git URL is
|
15
|
+
provided the head of the repo is used.
|
11
16
|
DESC
|
12
17
|
|
13
|
-
self.arguments = '
|
18
|
+
self.arguments = 'NAME_OR_URL'
|
14
19
|
|
15
20
|
def initialize(argv)
|
16
21
|
@name = argv.shift_argument
|
@@ -19,14 +24,21 @@ module Pod
|
|
19
24
|
|
20
25
|
def validate!
|
21
26
|
super
|
22
|
-
help! "A Pod name is required." unless @name
|
27
|
+
help! "A Pod name or URL is required." unless @name
|
23
28
|
end
|
24
29
|
|
25
30
|
def run
|
26
|
-
|
27
|
-
|
31
|
+
sandbox = Sandbox.new(TRY_TMP_DIR)
|
32
|
+
if git_url?(@name)
|
33
|
+
spec = spec_with_url(@name)
|
34
|
+
sandbox.store_pre_downloaded_pod(spec.name)
|
35
|
+
else
|
36
|
+
update_specs_repos
|
37
|
+
spec = spec_with_name(@name)
|
38
|
+
end
|
39
|
+
|
28
40
|
UI.title "Trying #{spec.name}" do
|
29
|
-
pod_dir = install_pod(spec,
|
41
|
+
pod_dir = install_pod(spec, sandbox)
|
30
42
|
proj = pick_demo_project(pod_dir)
|
31
43
|
file = install_podfile(proj)
|
32
44
|
if file
|
@@ -63,6 +75,28 @@ module Pod
|
|
63
75
|
end
|
64
76
|
end
|
65
77
|
|
78
|
+
# Returns the specification found in the given Git repository URL by
|
79
|
+
# downloading the repository.
|
80
|
+
#
|
81
|
+
# @param [String] url
|
82
|
+
# The URL for the pod Git repository.
|
83
|
+
#
|
84
|
+
# @return [Specification] The specification.
|
85
|
+
#
|
86
|
+
def spec_with_url(url)
|
87
|
+
name = url.split('/').last
|
88
|
+
name = name.chomp(".git") if name.end_with?(".git")
|
89
|
+
|
90
|
+
target_dir = TRY_TMP_DIR + name
|
91
|
+
target_dir.rmtree if target_dir.exist?
|
92
|
+
|
93
|
+
downloader = Pod::Downloader.for_target(target_dir, { :git => url })
|
94
|
+
downloader.download
|
95
|
+
|
96
|
+
spec_file = target_dir + "#{name}.podspec"
|
97
|
+
Pod::Specification.from_file(spec_file)
|
98
|
+
end
|
99
|
+
|
66
100
|
# Installs the specification in the given directory.
|
67
101
|
#
|
68
102
|
# @param [Specification] The specification of the Pod.
|
@@ -71,16 +105,17 @@ module Pod
|
|
71
105
|
#
|
72
106
|
# @return [Pathname] The path where the Pod was installed
|
73
107
|
#
|
74
|
-
def install_pod(spec,
|
75
|
-
sandbox = Sandbox.new(dir)
|
108
|
+
def install_pod(spec, sandbox)
|
76
109
|
specs = { :ios => spec, :osx => spec }
|
77
110
|
installer = Installer::PodSourceInstaller.new(sandbox, specs)
|
78
111
|
installer.aggressive_cache = config.aggressive_cache?
|
79
112
|
installer.install!
|
80
|
-
|
113
|
+
sandbox.root + spec.name
|
81
114
|
end
|
82
115
|
|
83
|
-
# Picks a project suitable for the demo purposes in the
|
116
|
+
# Picks a project or workspace suitable for the demo purposes in the
|
117
|
+
# given directory.
|
118
|
+
#
|
84
119
|
# To decide the project simple heuristics are used according to the name,
|
85
120
|
# if no project is found this method raises and `Informative` otherwise
|
86
121
|
# if more than one project is found the choice is presented to the user.
|
@@ -91,30 +126,29 @@ module Pod
|
|
91
126
|
# @return [String] The path of the project.
|
92
127
|
#
|
93
128
|
def pick_demo_project(dir)
|
94
|
-
|
95
|
-
|
96
|
-
if glob_match.count == 0
|
129
|
+
projs = projects_in_dir(dir)
|
130
|
+
if projs.count == 0
|
97
131
|
raise Informative, "Unable to find any project in the source files" \
|
98
|
-
"of the Pod: `#{dir}`"
|
99
|
-
elsif
|
100
|
-
|
101
|
-
elsif (
|
102
|
-
|
103
|
-
elsif (
|
104
|
-
|
132
|
+
" of the Pod: `#{dir}`"
|
133
|
+
elsif projs.count == 1
|
134
|
+
projs.first
|
135
|
+
elsif (workspaces = projs.grep(/(demo|example).*\.xcworkspace$/i)).count == 1
|
136
|
+
workspaces.first
|
137
|
+
elsif (projects = projs.grep(/demo|example/i)).count == 1
|
138
|
+
projects.first
|
105
139
|
else
|
106
140
|
message = "Which project would you like to open"
|
107
|
-
selection_array =
|
141
|
+
selection_array = projs.map do |p|
|
108
142
|
Pathname.new(p).relative_path_from(dir).to_s
|
109
143
|
end
|
110
144
|
index = choose_from_array(selection_array, message)
|
111
|
-
|
145
|
+
projs[index]
|
112
146
|
end
|
113
147
|
end
|
114
148
|
|
115
|
-
# Performs a CocoaPods installation for the given project if Podfile is
|
116
|
-
# Shells out to avoid issues with the config of the process
|
117
|
-
# try command.
|
149
|
+
# Performs a CocoaPods installation for the given project if Podfile is
|
150
|
+
# found. Shells out to avoid issues with the config of the process
|
151
|
+
# running the try command.
|
118
152
|
#
|
119
153
|
# @return [String] proj
|
120
154
|
# The path of the project.
|
@@ -125,11 +159,18 @@ module Pod
|
|
125
159
|
def install_podfile(proj)
|
126
160
|
return unless proj
|
127
161
|
dirname = Pathname.new(proj).dirname
|
128
|
-
|
129
|
-
if
|
162
|
+
podfile_path = dirname + 'Podfile'
|
163
|
+
if podfile_path.exist?
|
130
164
|
Dir.chdir(dirname) do
|
131
165
|
perform_cocoapods_installation
|
132
|
-
|
166
|
+
|
167
|
+
podfile = Pod::Podfile.from_file(podfile_path)
|
168
|
+
|
169
|
+
if podfile.workspace_path
|
170
|
+
File.expand_path(podfile.workspace_path)
|
171
|
+
else
|
172
|
+
proj.chomp(File.extname(proj.to_s)) + '.xcworkspace'
|
173
|
+
end
|
133
174
|
end
|
134
175
|
else
|
135
176
|
proj
|
@@ -163,21 +204,6 @@ module Pod
|
|
163
204
|
`open "#{path}"`
|
164
205
|
end
|
165
206
|
|
166
|
-
# Selects the entries in the given array which includes the given string
|
167
|
-
# (case insensitive check).
|
168
|
-
#
|
169
|
-
# @param [Array] array
|
170
|
-
# The array to filter.
|
171
|
-
#
|
172
|
-
# @param [String] string
|
173
|
-
# The string that should be used to filter the array.
|
174
|
-
#
|
175
|
-
# @return [Array] The selection.
|
176
|
-
#
|
177
|
-
def filter_array(array, string)
|
178
|
-
array.select { |p| p.downcase.include?(string.downcase) }
|
179
|
-
end
|
180
|
-
|
181
207
|
# Presents a choice among the elements of an array to the user.
|
182
208
|
#
|
183
209
|
# @param [Array<#to_s>] array
|
@@ -211,6 +237,32 @@ module Pod
|
|
211
237
|
UI.puts `pod install`
|
212
238
|
end
|
213
239
|
|
240
|
+
# @return [Bool] Wether the given string is the name of a Pod or an URL
|
241
|
+
# for a Git repo.
|
242
|
+
#
|
243
|
+
def git_url?(name)
|
244
|
+
prefixes = ['https://', 'http://']
|
245
|
+
if prefixes.any? { |prefix| name.start_with?(prefix) }
|
246
|
+
true
|
247
|
+
else
|
248
|
+
false
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
# @return [Array<String>] The list of the workspaces and projects in a
|
253
|
+
# given directory excluding The Pods project and the projects
|
254
|
+
# that have a sister workspace.
|
255
|
+
#
|
256
|
+
def projects_in_dir(dir)
|
257
|
+
glob_match = Dir.glob("#{dir}/**/*.xc{odeproj,workspace}")
|
258
|
+
glob_match = glob_match.reject do |p|
|
259
|
+
next true if p.include?('Pods.xcodeproj')
|
260
|
+
next true if p.end_with?('.xcodeproj/project.xcworkspace')
|
261
|
+
sister_workspace = p.chomp(File.extname(p.to_s)) + '.xcworkspace'
|
262
|
+
p.end_with?('.xcodeproj') && glob_match.include?(sister_workspace)
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
214
266
|
#-------------------------------------------------------------------#
|
215
267
|
|
216
268
|
end
|
data/spec/command/try_spec.rb
CHANGED
@@ -1,31 +1,50 @@
|
|
1
1
|
require File.expand_path('../../spec_helper', __FILE__)
|
2
2
|
|
3
|
+
# The CocoaPods namespace
|
4
|
+
#
|
3
5
|
module Pod
|
4
6
|
describe Command::Try do
|
5
7
|
|
6
8
|
#-------------------------------------------------------------------------#
|
7
9
|
|
8
|
-
describe "
|
10
|
+
describe "Try" do
|
9
11
|
it "registers it self" do
|
10
|
-
Command.parse(%w
|
12
|
+
Command.parse(%w(try)).should.be.instance_of Command::Try
|
11
13
|
end
|
12
14
|
|
13
15
|
it "presents the help if no name is provided" do
|
14
16
|
command = Pod::Command.parse(['try'])
|
15
17
|
should.raise CLAide::Help do
|
16
18
|
command.validate!
|
17
|
-
end.message.should.match
|
19
|
+
end.message.should.match(/A Pod name or URL is required/)
|
18
20
|
end
|
19
21
|
|
20
|
-
it "
|
22
|
+
it "allows the user to try the Pod with the given name" do
|
21
23
|
Config.instance.skip_repo_update = false
|
22
|
-
command = Pod::Command.parse(
|
24
|
+
command = Pod::Command.parse(%w(try ARAnalytics))
|
23
25
|
Installer::PodSourceInstaller.any_instance.expects(:install!)
|
24
26
|
command.expects(:update_specs_repos)
|
25
27
|
command.expects(:pick_demo_project).returns("/tmp/Proj.xcodeproj")
|
26
28
|
command.expects(:open_project).with('/tmp/Proj.xcodeproj')
|
27
29
|
command.run
|
28
30
|
end
|
31
|
+
|
32
|
+
it "allows the user to try the Pod with the given Git URL" do
|
33
|
+
require 'cocoapods-downloader/git'
|
34
|
+
Pod::Downloader::GitHub.any_instance.expects(:download)
|
35
|
+
spec_file = '/tmp/CocoaPods/Try/ARAnalytics/ARAnalytics.podspec'
|
36
|
+
stub_spec = stub(:name => 'ARAnalytics')
|
37
|
+
Pod::Specification.stubs(:from_file).with(Pathname(spec_file)).returns(stub_spec)
|
38
|
+
|
39
|
+
Config.instance.skip_repo_update = false
|
40
|
+
command = Pod::Command.parse(['try', 'https://github.com/orta/ARAnalytics.git'])
|
41
|
+
Installer::PodSourceInstaller.any_instance.expects(:install!)
|
42
|
+
command.expects(:update_specs_repos).never
|
43
|
+
command.expects(:pick_demo_project).returns("/tmp/Proj.xcodeproj")
|
44
|
+
command.expects(:open_project).with('/tmp/Proj.xcodeproj')
|
45
|
+
command.run
|
46
|
+
end
|
47
|
+
|
29
48
|
end
|
30
49
|
|
31
50
|
#-------------------------------------------------------------------------#
|
@@ -41,11 +60,27 @@ module Pod
|
|
41
60
|
spec.name.should == "ARAnalytics"
|
42
61
|
end
|
43
62
|
|
63
|
+
describe "#spec_at_url" do
|
64
|
+
|
65
|
+
it "returns a spec for an https git repo" do
|
66
|
+
require 'cocoapods-downloader/git'
|
67
|
+
Pod::Downloader::GitHub.any_instance.expects(:download)
|
68
|
+
spec_file = '/tmp/CocoaPods/Try/ARAnalytics/ARAnalytics.podspec'
|
69
|
+
stub_spec = stub
|
70
|
+
Pod::Specification.stubs(:from_file).with(Pathname(spec_file)).returns(stub_spec)
|
71
|
+
spec = @sut.spec_with_url('https://github.com/orta/ARAnalytics.git')
|
72
|
+
spec.should == stub_spec
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
44
77
|
it "installs the pod" do
|
45
78
|
Installer::PodSourceInstaller.any_instance.expects(:install!)
|
46
79
|
spec = stub(:name => 'ARAnalytics')
|
47
|
-
|
48
|
-
|
80
|
+
sandbox_root = Pathname.new('/tmp/CocoaPods/Try')
|
81
|
+
sandbox = Sandbox.new(sandbox_root)
|
82
|
+
path = @sut.install_pod(spec, sandbox)
|
83
|
+
path.should == sandbox.root + "ARAnalytics"
|
49
84
|
end
|
50
85
|
|
51
86
|
describe "#pick_demo_project" do
|
@@ -53,35 +88,35 @@ module Pod
|
|
53
88
|
projects = []
|
54
89
|
Dir.stubs(:glob).returns(projects)
|
55
90
|
should.raise Informative do
|
56
|
-
@sut.pick_demo_project(stub
|
57
|
-
end.message.should.match
|
91
|
+
@sut.pick_demo_project(stub)
|
92
|
+
end.message.should.match(/Unable to find any project/)
|
58
93
|
end
|
59
94
|
|
60
95
|
it "picks a demo project" do
|
61
96
|
projects = ['Demo.xcodeproj']
|
62
97
|
Dir.stubs(:glob).returns(projects)
|
63
|
-
path = @sut.pick_demo_project(stub
|
98
|
+
path = @sut.pick_demo_project(stub)
|
64
99
|
path.should == "Demo.xcodeproj"
|
65
100
|
end
|
66
101
|
|
67
102
|
it "is not case sensitive" do
|
68
103
|
projects = ['demo.xcodeproj']
|
69
104
|
Dir.stubs(:glob).returns(projects)
|
70
|
-
path = @sut.pick_demo_project(stub
|
105
|
+
path = @sut.pick_demo_project(stub)
|
71
106
|
path.should == "demo.xcodeproj"
|
72
107
|
end
|
73
108
|
|
74
109
|
it "considers also projects named example" do
|
75
110
|
projects = ['Example.xcodeproj']
|
76
111
|
Dir.stubs(:glob).returns(projects)
|
77
|
-
path = @sut.pick_demo_project(stub
|
112
|
+
path = @sut.pick_demo_project(stub)
|
78
113
|
path.should == "Example.xcodeproj"
|
79
114
|
end
|
80
115
|
|
81
116
|
it "returns the project if only one is found" do
|
82
117
|
projects = ['Lib.xcodeproj']
|
83
118
|
Dir.stubs(:glob).returns(projects)
|
84
|
-
path = @sut.pick_demo_project(stub
|
119
|
+
path = @sut.pick_demo_project(stub)
|
85
120
|
path.should == "Lib.xcodeproj"
|
86
121
|
end
|
87
122
|
|
@@ -89,9 +124,27 @@ module Pod
|
|
89
124
|
projects = ['Lib_1.xcodeproj', 'Lib_2.xcodeproj']
|
90
125
|
Dir.stubs(:glob).returns(projects)
|
91
126
|
@sut.stubs(:choose_from_array).returns(0)
|
92
|
-
path = @sut.pick_demo_project(stub(:cleanpath=>''))
|
127
|
+
path = @sut.pick_demo_project(stub(:cleanpath => ''))
|
93
128
|
path.should == "Lib_1.xcodeproj"
|
94
129
|
end
|
130
|
+
|
131
|
+
it "should prefer demo or example workspaces" do
|
132
|
+
Dir.stubs(:glob).returns(['Project Demo.xcodeproj', 'Project Demo.xcworkspace'])
|
133
|
+
path = @sut.pick_demo_project(stub(:cleanpath => ''))
|
134
|
+
path.should == 'Project Demo.xcworkspace'
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should not show workspaces inside a project" do
|
138
|
+
Dir.stubs(:glob).returns(['Project Demo.xcodeproj', 'Project Demo.xcodeproj/project.xcworkspace'])
|
139
|
+
path = @sut.pick_demo_project(stub(:cleanpath => ''))
|
140
|
+
path.should == 'Project Demo.xcodeproj'
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should prefer workspaces over projects with the same name" do
|
144
|
+
Dir.stubs(:glob).returns(['Project Demo.xcodeproj', 'Project Demo.xcworkspace'])
|
145
|
+
path = @sut.pick_demo_project(stub(:cleanpath => ''))
|
146
|
+
path.should == 'Project Demo.xcworkspace'
|
147
|
+
end
|
95
148
|
end
|
96
149
|
|
97
150
|
describe "#install_podfile" do
|
@@ -102,10 +155,19 @@ module Pod
|
|
102
155
|
path.should == proj
|
103
156
|
end
|
104
157
|
|
105
|
-
it "performs an installation and returns the path of the
|
158
|
+
it "performs an installation and returns the path of the workspace" do
|
106
159
|
Pathname.any_instance.stubs(:exist?).returns(true)
|
107
160
|
proj = "/tmp/Project.xcodeproj"
|
108
161
|
@sut.expects(:perform_cocoapods_installation)
|
162
|
+
Podfile.stubs(:from_file).returns(stub(:workspace_path => "/tmp/Project.xcworkspace"))
|
163
|
+
path = @sut.install_podfile(proj)
|
164
|
+
path.should == "/tmp/Project.xcworkspace"
|
165
|
+
end
|
166
|
+
|
167
|
+
it "returns the default workspace if one is not set" do
|
168
|
+
Pathname.any_instance.stubs(:exist?).returns(true)
|
169
|
+
proj = "/tmp/Project.xcodeproj"
|
170
|
+
Podfile.stubs(:from_file).returns(stub(:workspace_path => nil))
|
109
171
|
path = @sut.install_podfile(proj)
|
110
172
|
path.should == "/tmp/Project.xcworkspace"
|
111
173
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
ROOT = Pathname.new(File.expand_path('../../', __FILE__))
|
3
|
-
|
4
|
-
|
3
|
+
$LOAD_PATH.unshift((ROOT + 'lib').to_s)
|
4
|
+
$LOAD_PATH.unshift((ROOT + 'spec').to_s)
|
5
5
|
|
6
6
|
require 'bundler/setup'
|
7
7
|
require 'bacon'
|
@@ -13,6 +13,8 @@ require 'cocoapods_plugin'
|
|
13
13
|
|
14
14
|
#-----------------------------------------------------------------------------#
|
15
15
|
|
16
|
+
# The CocoaPods namespace
|
17
|
+
#
|
16
18
|
module Pod
|
17
19
|
|
18
20
|
# Disable the wrapping so the output is deterministic in the tests.
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-try
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Fabio Pelosin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
description:
|
@@ -44,14 +44,15 @@ executables: []
|
|
44
44
|
extensions: []
|
45
45
|
extra_rdoc_files: []
|
46
46
|
files:
|
47
|
-
- .gitignore
|
48
|
-
- .
|
47
|
+
- ".gitignore"
|
48
|
+
- ".rubocop.yml"
|
49
|
+
- ".travis.yml"
|
49
50
|
- CHANGELOG.md
|
50
51
|
- Gemfile
|
51
52
|
- LICENSE
|
52
53
|
- README.md
|
53
54
|
- Rakefile
|
54
|
-
- cocoapods-
|
55
|
+
- cocoapods-try.gemspec
|
55
56
|
- lib/cocoapods_plugin.rb
|
56
57
|
- lib/cocoapods_try.rb
|
57
58
|
- lib/pod/command/try.rb
|
@@ -67,20 +68,21 @@ require_paths:
|
|
67
68
|
- lib
|
68
69
|
required_ruby_version: !ruby/object:Gem::Requirement
|
69
70
|
requirements:
|
70
|
-
- -
|
71
|
+
- - ">="
|
71
72
|
- !ruby/object:Gem::Version
|
72
73
|
version: '0'
|
73
74
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
75
|
requirements:
|
75
|
-
- -
|
76
|
+
- - ">="
|
76
77
|
- !ruby/object:Gem::Version
|
77
78
|
version: '0'
|
78
79
|
requirements: []
|
79
80
|
rubyforge_project:
|
80
|
-
rubygems_version: 2.
|
81
|
+
rubygems_version: 2.2.2
|
81
82
|
signing_key:
|
82
83
|
specification_version: 4
|
83
84
|
summary: CocoaPods plugin which allows to quickly try the demo project of a Pod.
|
84
85
|
test_files:
|
85
86
|
- spec/command/try_spec.rb
|
86
87
|
- spec/spec_helper.rb
|
88
|
+
has_rdoc:
|