carthage_cache_res 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.ruby-version +1 -0
- data/.travis.yml +17 -0
- data/CODEOWNERS +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +216 -0
- data/Rakefile +12 -0
- data/bin/console +11 -0
- data/bin/setup +7 -0
- data/carthage_cache_res.gemspec +43 -0
- data/exe/carthage_cache_res +107 -0
- data/lib/carthage_cache_res.rb +22 -0
- data/lib/carthage_cache_res/application.rb +93 -0
- data/lib/carthage_cache_res/archive_builder.rb +57 -0
- data/lib/carthage_cache_res/archive_installer.rb +53 -0
- data/lib/carthage_cache_res/archiver.rb +24 -0
- data/lib/carthage_cache_res/build_collector.rb +86 -0
- data/lib/carthage_cache_res/carthage_cache_lock.rb +28 -0
- data/lib/carthage_cache_res/carthage_resolved_file.rb +49 -0
- data/lib/carthage_cache_res/configuration.rb +122 -0
- data/lib/carthage_cache_res/configuration_validator.rb +134 -0
- data/lib/carthage_cache_res/configurator.rb +79 -0
- data/lib/carthage_cache_res/configurator_wizard.rb +49 -0
- data/lib/carthage_cache_res/description.rb +3 -0
- data/lib/carthage_cache_res/project.rb +66 -0
- data/lib/carthage_cache_res/repository.rb +58 -0
- data/lib/carthage_cache_res/shell_command_executor.rb +11 -0
- data/lib/carthage_cache_res/swift_version_resolver.rb +17 -0
- data/lib/carthage_cache_res/terminal.rb +25 -0
- data/lib/carthage_cache_res/version.rb +3 -0
- metadata +212 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f30f9f51f50d2b8ef8bb55952570f11e561984ea501b3c6c0f9f58941de51a0e
|
4
|
+
data.tar.gz: 10d973dad4c19fde0a14555fb6222cf785f404967b1cbdb94f105b46b5492bc0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 971215605b5cb17f61280e5932180afcae549b384bbbfd405168ad958ebee3c62d657737c4bca26a3c05a46a961a484d8e8ccda97ac282d3722d30484008acbb
|
7
|
+
data.tar.gz: f02155ded2671dba615a7e9543056a8d0e83298878875c62564a2f0f824815c34c4806ad20e6ca66e7fb9e7fd00867b57de003fa92fcf97b791e651655486c85
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.6.2
|
data/.travis.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
os:
|
2
|
+
- osx
|
3
|
+
language: ruby
|
4
|
+
cache: bundler
|
5
|
+
osx_image: xcode11
|
6
|
+
rvm:
|
7
|
+
- 2.6.2
|
8
|
+
|
9
|
+
branches:
|
10
|
+
only:
|
11
|
+
- master
|
12
|
+
|
13
|
+
before_install: sudo gem install bundler
|
14
|
+
|
15
|
+
addons:
|
16
|
+
code_climate:
|
17
|
+
repo_token: 6220ef8896c380cb590d4640621d1fc4c0d6d36ccc24d3d818cfba76bbd50014
|
data/CODEOWNERS
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
* @hola
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015 Guido Marucci Blas
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,216 @@
|
|
1
|
+
# CarthageCacheRes
|
2
|
+
|
3
|
+
[![Build Status](https://travis-ci.org/guidomb/carthage_cache_res.svg?branch=master)](https://travis-ci.org/guidomb/carthage_cache_res)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/guidomb/carthage_cache_res/badges/gpa.svg)](https://codeclimate.com/github/guidomb/carthage_cache_res)
|
5
|
+
[![Test Coverage](https://codeclimate.com/github/guidomb/carthage_cache_res/badges/coverage.svg)](https://codeclimate.com/github/guidomb/carthage_cache_res/coverage)
|
6
|
+
[![Gem Version](https://badge.fury.io/rb/carthage_cache_res.svg)](https://badge.fury.io/rb/carthage_cache_res)
|
7
|
+
|
8
|
+
CarthageCacheRes allows Carthage users to have a shared cache of their `Carthage/Build` folder backed by Amazon S3.
|
9
|
+
|
10
|
+
Most libraries don't provide pre-compiled binaries, `.framework` files, in their releases. Even if they do, due to Swift lack of ABI, you might be forced to use `--no-use-binaries` flag and compile all your dependencies. Which, depending on the amount of dependencies and their size it could take significant time.
|
11
|
+
|
12
|
+
When you add slow building environments like Travis CI to the mix, a project bootstrap could take around 25 minutes just to build all your dependencies. Which is a lot for every push or pull request. You want your build and test to run really fast.
|
13
|
+
|
14
|
+
CarthageCacheRes generates a hash key based on the content of your `Cartfile.resolved` and the current
|
15
|
+
installed version of Swift. Then it checks if there is a cache archive (a zip file of your `Carthage/Build` directory) associated to that hash. If there is one it will download it and install it in your project avoiding the need to run `carthage bootstrap`.
|
16
|
+
|
17
|
+
**Do you want to improve carthage_cache_res?** [Check all the issues tagged with `help-wanted`!](https://github.com/guidomb/carthage_cache_res/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22). I'll be more than happy to review your pull request.
|
18
|
+
|
19
|
+
## Installation
|
20
|
+
|
21
|
+
Add this line to your application's Gemfile:
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
gem 'carthage_cache_res'
|
25
|
+
```
|
26
|
+
|
27
|
+
And then execute:
|
28
|
+
|
29
|
+
$ bundle
|
30
|
+
|
31
|
+
Or install it yourself as:
|
32
|
+
|
33
|
+
$ gem install carthage_cache_res
|
34
|
+
|
35
|
+
## Setup
|
36
|
+
|
37
|
+
### AWS credentials
|
38
|
+
|
39
|
+
First of all you need to configure your AWS credentials. You can do this by a `.carthage_cache_res.yml` file. CarthageCacheRes will try to find this file in the current working directory. It is recommended to generate this file in each project you want to use CarthageCacheRes.
|
40
|
+
|
41
|
+
To generate a `.carthage_cache_res.yml` you just need to run
|
42
|
+
|
43
|
+
```
|
44
|
+
carthage_cache_res config
|
45
|
+
```
|
46
|
+
|
47
|
+
You can also set your credentials using the following environmental variables
|
48
|
+
|
49
|
+
* `AWS_REGION`
|
50
|
+
* `AWS_ACCESS_KEY_ID`
|
51
|
+
* `AWS_SECRET_ACCESS_KEY`
|
52
|
+
* `AWS_SESSION_TOKEN` # optional, for [temporary security credentials](http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)
|
53
|
+
|
54
|
+
Or if you prefer using [AWS Named Profiles](http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-multiple-profiles), you can use the following environmental variables instead
|
55
|
+
|
56
|
+
* `AWS_REGION`
|
57
|
+
* `AWS_PROFILE`
|
58
|
+
|
59
|
+
### AWS S3 bucket
|
60
|
+
|
61
|
+
CarthageCacheRes will assume there is a bucket named `carthage-cache`. You can change the bucket to be used by using the option `-b` or `--bucket-name`.
|
62
|
+
|
63
|
+
### IAM Policy
|
64
|
+
|
65
|
+
Once you create the bucket, you will need to create a user. Go to the IAM section and create a new user. Create a new group, and add the new user to that group.
|
66
|
+
Create a policy with the following permissions:
|
67
|
+
```
|
68
|
+
{
|
69
|
+
"Version": "2012-10-17",
|
70
|
+
"Statement": [
|
71
|
+
{
|
72
|
+
"Sid": "autogenerated-id",
|
73
|
+
"Effect": "Allow",
|
74
|
+
"Action": [
|
75
|
+
"s3:ListBucket"
|
76
|
+
],
|
77
|
+
"Resource": [
|
78
|
+
"arn:aws:s3:::carthage-cache"
|
79
|
+
]
|
80
|
+
},
|
81
|
+
{
|
82
|
+
"Sid": "autogenerated-id",
|
83
|
+
"Effect": "Allow",
|
84
|
+
"Action": [
|
85
|
+
"s3:DeleteObject",
|
86
|
+
"s3:GetObject",
|
87
|
+
"s3:PutObject"
|
88
|
+
],
|
89
|
+
"Resource": [
|
90
|
+
"arn:aws:s3:::carthage-cache/*"
|
91
|
+
]
|
92
|
+
}
|
93
|
+
]
|
94
|
+
}
|
95
|
+
```
|
96
|
+
Don't forget to attach the policy to the group and make sure to replace `autogenerated-id` with an ID that should be unique. You can generate a new policy using AWS policy generator and replace the content with the previous snippet keeping the SID field.
|
97
|
+
|
98
|
+
## Usage
|
99
|
+
|
100
|
+
If you want to bootstrap a project from cache and if there is none then fallback to Carthage.
|
101
|
+
|
102
|
+
```
|
103
|
+
carthage_cache_res install || carthage bootstrap
|
104
|
+
```
|
105
|
+
|
106
|
+
If you want to update dependencies and update cache
|
107
|
+
|
108
|
+
```
|
109
|
+
carthage update && carthage_cache_res publish
|
110
|
+
```
|
111
|
+
|
112
|
+
If you want to check whether a cache exists for the current `Carfile.resolved`
|
113
|
+
|
114
|
+
```
|
115
|
+
carthage_cache_res exist
|
116
|
+
```
|
117
|
+
|
118
|
+
If you want to publish an archive that already exists
|
119
|
+
|
120
|
+
```
|
121
|
+
carthage_cache_res publish --force
|
122
|
+
```
|
123
|
+
|
124
|
+
If you want to delete unused libraries from build directory for all targets
|
125
|
+
|
126
|
+
```
|
127
|
+
carthage_cache_res prune
|
128
|
+
```
|
129
|
+
|
130
|
+
You can also prune the build directory before publishing a new archive
|
131
|
+
|
132
|
+
```
|
133
|
+
carthage_cache_res publish --prune-build-directory
|
134
|
+
```
|
135
|
+
|
136
|
+
Both `prune` and `publish` accept `--prune-white-list` to configure frameworks that don't appear in the `Cartfile.resolved` and should not be pruned by associating them with a framework that does appear in `Cartfile.resolved`. Like `CocoaLumberjackSwift`:
|
137
|
+
|
138
|
+
```
|
139
|
+
carthage_cache_res publish -p -w .white-list.yml
|
140
|
+
```
|
141
|
+
* *`-p` is the short version of `--prune-build-directory`*
|
142
|
+
* *`-w` is the short version of `--prune-white-list`*
|
143
|
+
|
144
|
+
where `.white-list.yml` is
|
145
|
+
|
146
|
+
```yaml
|
147
|
+
"CocoaLumberjackSwift": "CocoaLumberjack"
|
148
|
+
```
|
149
|
+
|
150
|
+
For more information run the help command
|
151
|
+
|
152
|
+
```
|
153
|
+
carthage_cache_res help
|
154
|
+
```
|
155
|
+
|
156
|
+
### OSS project
|
157
|
+
|
158
|
+
In an OSS project you wouldn't store AWS credentials anywhere since anyone can have access, even if you have a build like travis that supports for encrypted variables but these are not available in your contributors pull requests build.
|
159
|
+
|
160
|
+
In order allow your build to run in these circumstances, you can avoid defining these variables
|
161
|
+
|
162
|
+
* `AWS_ACCESS_KEY_ID`
|
163
|
+
* `AWS_SECRET_ACCESS_KEY`
|
164
|
+
* `AWS_PROFILE`
|
165
|
+
|
166
|
+
And **carthage_cache_res** will work in read-only mode, you wont be able to publish new items but your build will still be able to fetch the cached dependencies.
|
167
|
+
|
168
|
+
The only requirement is to make the action `s3:GetObject` avaible for any anonymous user in your S3 Bucket
|
169
|
+
|
170
|
+
```
|
171
|
+
{
|
172
|
+
"Version":"2012-10-17",
|
173
|
+
"Statement":[
|
174
|
+
{
|
175
|
+
"Sid":"AddPerm",
|
176
|
+
"Effect":"Allow",
|
177
|
+
"Principal": "*",
|
178
|
+
"Action":["s3:GetObject"],
|
179
|
+
"Resource":["arn:aws:s3:::examplebucket/*"]
|
180
|
+
}
|
181
|
+
]
|
182
|
+
}
|
183
|
+
```
|
184
|
+
|
185
|
+
> Please know that this will make all your dependencies **PUBLIC** and accessible for anyone, so if you have sensitive information or proprietary code there you should avoid this configuration.
|
186
|
+
|
187
|
+
### Project's root directory
|
188
|
+
|
189
|
+
The `carthage_cache_res` command assumes that the project's root directory is the current working directory and that the `Cartfile.resolved` file is located in the project's root directory. All `carthage_cache_res` accept an optional argument to set the project's root directory. For example
|
190
|
+
|
191
|
+
```
|
192
|
+
carthage_cache_res install
|
193
|
+
```
|
194
|
+
Will try to read the `Cartfile.resolved` file from the current working directory and will install the cache archive in `./Carthage/Build`.
|
195
|
+
|
196
|
+
```
|
197
|
+
carthage_cache_res install PATH/TO/MY/PROJECT
|
198
|
+
```
|
199
|
+
Will try to read the `PATH/TO/MY/PROJECT/Cartfile.resolved` and will install the cache archive in `PATH/TO/MY/PROJECT/Carthage/Build`.
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
## Development
|
204
|
+
|
205
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
206
|
+
|
207
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
208
|
+
|
209
|
+
## Contributing
|
210
|
+
|
211
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/guidomb/carthage_cache_res/issues/new.
|
212
|
+
|
213
|
+
|
214
|
+
## License
|
215
|
+
|
216
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
|
4
|
+
RSpec::Core::RakeTask.new(:spec)
|
5
|
+
|
6
|
+
# target that generates junit test report for CI builds
|
7
|
+
RSpec::Core::RakeTask.new(:ci_spec) do |t|
|
8
|
+
t.fail_on_error = false
|
9
|
+
t.rspec_opts = "--no-drb -r rspec_junit_formatter --format RspecJunitFormatter -o junit.xml"
|
10
|
+
end
|
11
|
+
|
12
|
+
task :default => :spec
|
data/bin/console
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "carthage_cache_res"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
require "pry"
|
11
|
+
Pry.start
|
data/bin/setup
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'carthage_cache_res/version'
|
5
|
+
require 'carthage_cache_res/description'
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = "carthage_cache_res"
|
9
|
+
spec.version = CarthageCacheRes::VERSION
|
10
|
+
spec.authors = ["Guido Marucci Blas", "dokim"]
|
11
|
+
spec.email = ["guidomb@gmail.com", "doublekick132@gmail.com"]
|
12
|
+
|
13
|
+
spec.summary = CarthageCacheRes::DESCRIPTION
|
14
|
+
spec.description = %q{
|
15
|
+
CarthageCache generate a hash key based on the content of your Cartfile.resolved and checks
|
16
|
+
if there is a cache archive (a zip file of your Carthage/Build directory) associated to that hash.
|
17
|
+
If there is one it will download it and install it in your project avoiding the need to run carthage bootstrap.
|
18
|
+
-------Thanks Mr.Blas but now we are facing dependency conflict with Fastlane 2.144--------
|
19
|
+
What I want to solve: Dependency conflict with Fastlane 2.144
|
20
|
+
What I did:
|
21
|
+
1. Changed name of this gem to "carthage_cache_res"
|
22
|
+
2. Fixed runtime dependencies: aws-sdk > 3.0, commander = 4.3.8
|
23
|
+
3. Changed system dependency versions: ruby > 2.6, xcode 11.x
|
24
|
+
}
|
25
|
+
spec.homepage = "https://github.com/dokim/carthage_cache_res"
|
26
|
+
spec.license = "MIT"
|
27
|
+
|
28
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
29
|
+
spec.bindir = "exe"
|
30
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
|
+
spec.require_paths = ["lib"]
|
32
|
+
|
33
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
34
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
35
|
+
spec.add_development_dependency "rspec"
|
36
|
+
spec.add_development_dependency "pry"
|
37
|
+
spec.add_development_dependency "simplecov"
|
38
|
+
spec.add_development_dependency "codeclimate-test-reporter", "~> 1.0.0"
|
39
|
+
spec.add_development_dependency "rspec_junit_formatter", "~> 0.2.3"
|
40
|
+
|
41
|
+
spec.add_dependency "aws-sdk", "~> 3.0"
|
42
|
+
spec.add_dependency "commander", "=4.3.8"
|
43
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
if Gem::Specification::find_all_by_name('bundler').any?
|
4
|
+
require 'bundler/setup'
|
5
|
+
else
|
6
|
+
require 'rubygems'
|
7
|
+
gem 'carthage_cache_res'
|
8
|
+
end
|
9
|
+
|
10
|
+
require "commander/import"
|
11
|
+
require "carthage_cache_res"
|
12
|
+
|
13
|
+
PROGRAM_NAME = 'carthage_cache_res'
|
14
|
+
|
15
|
+
program :name, PROGRAM_NAME
|
16
|
+
program :version, CarthageCacheRes::VERSION
|
17
|
+
program :description, CarthageCacheRes::DESCRIPTION
|
18
|
+
|
19
|
+
config = {}
|
20
|
+
verbose = false
|
21
|
+
global_option('-b', '--bucket-name BUCKET_NAME', 'Set Amazon S3 bucket to be used to store cache archives') do |bucket_name|
|
22
|
+
config[:bucket_name] = bucket_name
|
23
|
+
end
|
24
|
+
global_option('--verbose') { verbose = true }
|
25
|
+
|
26
|
+
command :exist do |c|
|
27
|
+
c.syntax = "#{PROGRAM_NAME} exist [PROJECT_PATH]"
|
28
|
+
c.description = 'Checks if a cache archive exists for the current Cartfile.resolved.'
|
29
|
+
c.option '-s', '--script', 'Makes prgram write "true" or "false" to STDOUT instead of more verbose message.'
|
30
|
+
c.action do |args, options|
|
31
|
+
app = CarthageCacheRes::Application.new(args.first || ".", verbose, config)
|
32
|
+
if app.archive_exist?
|
33
|
+
if options.script
|
34
|
+
puts "true"
|
35
|
+
else
|
36
|
+
puts "There is a cached archive for the current Cartfile.resolved file."
|
37
|
+
end
|
38
|
+
else
|
39
|
+
if options.script
|
40
|
+
puts "false"
|
41
|
+
else
|
42
|
+
puts "No cached archive available for the current Cartfile.resolved file."
|
43
|
+
puts "You should probably run 'carthage bootstrap'."
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
command :install do |c|
|
50
|
+
c.syntax = "#{PROGRAM_NAME} install [PROJECT_PATH]"
|
51
|
+
c.description = 'Installs the cache archive for the current Cartfile.resolved.'
|
52
|
+
c.action do |args, options|
|
53
|
+
app = CarthageCacheRes::Application.new(args.first || ".", verbose, config)
|
54
|
+
exit 1 unless app.install_archive
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
command :publish do |c|
|
59
|
+
c.syntax = "#{PROGRAM_NAME} publish [PROJECT_PATH]"
|
60
|
+
c.description = 'Generates and uploads the cache archive for the current Cartfile.resolved.'
|
61
|
+
c.option '-f', '--force', 'Forces to create a new archive even if an archive already exist.'
|
62
|
+
c.option '-p', '--prune-build-directory', 'Removes unused frameworks from build directory.'
|
63
|
+
c.option '-w', '--prune-white-list PRUNE_WHITE_LIST', String, 'Path to a YAML file containing the prune white list.'
|
64
|
+
c.option '-x', '--platforms PLATFORMS', String, 'A comma separated list of platforms that should be archived. Platforms not present in this list won\'t be archived'
|
65
|
+
c.action do |args, options|
|
66
|
+
options.default force: false
|
67
|
+
app = CarthageCacheRes::Application.new(args.first || ".", verbose, config)
|
68
|
+
platforms = options.platforms.split(",") if options.platforms
|
69
|
+
if platforms && platforms.empty?
|
70
|
+
puts "If you pass -x or --platforms option the you must specify at least one platform."
|
71
|
+
exit 1
|
72
|
+
end
|
73
|
+
app.create_archive(options.force, options.prune_build_directory, options.prune_white_list, platforms)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
command :config do |c|
|
78
|
+
c.syntax = "#{PROGRAM_NAME} config [PROJECT_PATH]"
|
79
|
+
c.description = "Generates a '#{CarthageCacheRes::Configurator::CONFIG_FILE_NAME}' config file."
|
80
|
+
c.action do |args, options|
|
81
|
+
terminal = CarthageCacheRes::Terminal.new(verbose)
|
82
|
+
configurator = CarthageCacheRes::Configurator.new(terminal, args.first || ".")
|
83
|
+
wizard = CarthageCacheRes::ConfiguratorWizard.new(method(:ask), method(:password))
|
84
|
+
config = wizard.start
|
85
|
+
configurator.save_config(config)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
command :prune do |c|
|
90
|
+
c.syntax = "#{PROGRAM_NAME} prune [PROJECT_PATH]"
|
91
|
+
c.description = 'Removes unused frameworks from build directory.'
|
92
|
+
c.option '-w', '--prune-white-list PRUNE_WHITE_LIST', String, 'Path to a YAML file containing the prune white list.'
|
93
|
+
c.action do |args, options|
|
94
|
+
options.default force: false, prune: false
|
95
|
+
app = CarthageCacheRes::Application.new(args.first || ".", verbose, config)
|
96
|
+
app.prune_build_directory(options.prune_white_list)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
command :validate do |c|
|
101
|
+
c.syntax = "#{PROGRAM_NAME} validate [PROJECT_PATH]"
|
102
|
+
c.description = 'Validates the cache archive for the current Cartfile.resolved.'
|
103
|
+
c.action do |args, options|
|
104
|
+
app = CarthageCacheRes::Application.new(args.first || ".", verbose, config)
|
105
|
+
exit 1 unless app.validate_installation
|
106
|
+
end
|
107
|
+
end
|