nixenvironment 0.0.65 → 0.0.66
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -90
- data/bin/nixenvironment +7 -7
- data/legacy/DeployAPK.py +1 -1
- data/legacy/DeployIPA.sh +1 -1
- data/legacy/GenerateCodeDuplicationReport.sh +0 -1
- data/legacy/LoadBuildEnvVars.sh +8 -0
- data/lib/nixenvironment/archiver.rb +24 -15
- data/lib/nixenvironment/plist.rb +3 -9
- data/lib/nixenvironment/version.rb +1 -1
- data/lib/nixenvironment/xcodebuild.rb +26 -9
- data/nixenvironment.gemspec +3 -3
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad1a673aa13db0acba59cf7cac6ded70f4d93ee0
|
4
|
+
data.tar.gz: 523923efe703537bc3e38873681aa8f14150e140
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f458279ff5703405675e9bf0b02284f291f7330c8c9f7045a2a336288614e90e55aa6d8c83237e5589d710f0c3e2314d0e94032b21ae9e4e5a9b00ea0a23ea8
|
7
|
+
data.tar.gz: 571f9d3ab26b5ac02a164298db91f3373dc32935df24ef77807891240d2c491f04ddae320689a1901222574d368dbc9f76f447bb276845459fea602e831f7a78
|
data/README.md
CHANGED
@@ -8,94 +8,9 @@ Nixenvironment installs, updates and manages inner NIX environment stuff to make
|
|
8
8
|
|
9
9
|
## Usage
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
build # Build project for selected configuration and make signed/resigned ipa
|
14
|
-
|
15
|
-
clean # Remove temp files and clean all targets for xcode project
|
16
|
-
|
17
|
-
clean_working_copy # Make working copy clean
|
18
|
-
|
19
|
-
code_coverage # Generate xctest unit tests code coverage report
|
20
|
-
|
21
|
-
code_duplication_report # Generate code duplication report
|
22
|
-
|
23
|
-
deploy # Deploy built artifacts to given server
|
24
|
-
|
25
|
-
help # Display global or [command] help documentation
|
26
|
-
|
27
|
-
svn_tag_from_jenkins # Make tag by finding the first credential in local credential storage
|
28
|
-
|
29
|
-
tag # Make SVN/git/mercurial tag, SCM_USERNAME and SCM_PASSWORD must be defined on calling this target
|
30
|
-
|
31
|
-
test # Build xctest unit tests and run them in simulator
|
32
|
-
|
33
|
-
GLOBAL OPTIONS:
|
34
|
-
|
35
|
-
-h, --help
|
36
|
-
Display help documentation. Default command
|
37
|
-
|
38
|
-
-v, --version
|
39
|
-
Display version information
|
40
|
-
|
41
|
-
-t, --trace
|
42
|
-
Display backtrace when an error occurs
|
43
|
-
|
44
|
-
# Options to override default Config
|
45
|
-
|
46
|
-
--project_to_build VALUE
|
47
|
-
|
48
|
-
--project_target_to_build VALUE
|
49
|
-
|
50
|
-
--project_target_to_test VALUE
|
51
|
-
|
52
|
-
--workspace_to_build VALUE
|
53
|
-
|
54
|
-
--workspace_scheme_to_build VALUE
|
55
|
-
|
56
|
-
--workspace_scheme_to_test VALUE
|
57
|
-
|
58
|
-
--sdk VALUE
|
59
|
-
|
60
|
-
--sdk_for_tests VALUE
|
61
|
-
|
62
|
-
--exclude_pattern_for_code_coverage VALUE
|
63
|
-
|
64
|
-
--exclude_pattern_for_code_duplication VALUE
|
65
|
-
|
66
|
-
--deploy_host VALUE
|
67
|
-
|
68
|
-
--deploy_path VALUE
|
69
|
-
|
70
|
-
--deploy_username VALUE
|
71
|
-
|
72
|
-
--deploy_password VALUE
|
73
|
-
|
74
|
-
--icons_path VALUE
|
75
|
-
|
76
|
-
--xctest_destination_device VALUE
|
77
|
-
|
78
|
-
--configuration_files_path VALUE
|
79
|
-
|
80
|
-
--code_coverage_configuration VALUE
|
81
|
-
|
82
|
-
--code_coverage_output_directory VALUE
|
83
|
-
|
84
|
-
--env_var_prefix VALUE
|
85
|
-
|
86
|
-
--infoplist_path VALUE
|
87
|
-
|
88
|
-
EXAMPLES:
|
11
|
+
To get help in usage please tape this:
|
89
12
|
|
90
|
-
nixenvironment [-h]
|
91
|
-
|
92
|
-
nixenvironment build # Make Debug build and create .ipa file from last built app product by default
|
93
|
-
|
94
|
-
nixenvironment build --config Release --ipa resigned_ipa_for_device
|
95
|
-
|
96
|
-
nixenvironment deploy
|
97
|
-
|
98
|
-
...
|
13
|
+
$ nixenvironment [-h | --help]
|
99
14
|
|
100
15
|
## TODO:
|
101
16
|
|
@@ -111,10 +26,19 @@ Nixenvironment installs, updates and manages inner NIX environment stuff to make
|
|
111
26
|
jenkins ALL=(ALL) NOPASSWD: /usr/bin/bundle
|
112
27
|
jenkins ALL=(ALL) NOPASSWD: /usr/bin/gem
|
113
28
|
|
114
|
-
|
115
|
-
|
29
|
+
To know how to do it correctly please read this:
|
30
|
+
|
31
|
+
http://osxdaily.com/2014/02/06/add-user-sudoers-file-mac/
|
32
|
+
|
33
|
+
and this:
|
34
|
+
|
35
|
+
http://stackoverflow.com/questions/12736351/exit-save-edit-to-sudoers-file-putty-ssh
|
116
36
|
|
117
37
|
Then run this in Execute shell:
|
118
38
|
|
119
39
|
# See credentials for deploy on https://qwiki.nixsolutions.com/display/IPT/Credentials
|
120
|
-
./gemify.sh && bundle update && sudo gem install nixenvironment --verbose
|
40
|
+
$ ./gemify.sh && bundle update && sudo gem install nixenvironment --verbose
|
41
|
+
|
42
|
+
NOTE! CI must be configured with UTF-8 locale! Please see how to implement it for Jenkins:
|
43
|
+
|
44
|
+
https://github.com/KrauseFx/fastlane/issues/227#issuecomment-139449487
|
data/bin/nixenvironment
CHANGED
@@ -505,13 +505,13 @@ def tag_icon(short_version)
|
|
505
505
|
icons_dir = File.join(Dir.pwd, @config_settings[ICONS_PATH_KEY])
|
506
506
|
app_product = File.join(@config_settings[BUILT_PRODUCTS_DIR_KEY], @config_settings[EXECUTABLE_NAME_KEY]) + APP_EXT
|
507
507
|
|
508
|
-
system("#{TAGGER_UTILITY_PATH} --shortVersion
|
509
|
-
--buildNumber
|
510
|
-
--style
|
511
|
-
--maskPath
|
512
|
-
--plist
|
513
|
-
--sourceIconsPath
|
514
|
-
--destinationIconsPath
|
508
|
+
system("#{TAGGER_UTILITY_PATH} --shortVersion='#{version}'\
|
509
|
+
--buildNumber='#{monotonic_revision}'\
|
510
|
+
--style='#{style}'\
|
511
|
+
--maskPath='#{mask_path}'\
|
512
|
+
--plist='#{plist_path}'\
|
513
|
+
--sourceIconsPath='#{icons_dir}'\
|
514
|
+
--destinationIconsPath='#{app_product}'")
|
515
515
|
end
|
516
516
|
|
517
517
|
def backup_info_plists
|
data/legacy/DeployAPK.py
CHANGED
@@ -27,7 +27,7 @@ def build_data(build_path):
|
|
27
27
|
build_name_regex = regex_template % "name"
|
28
28
|
build_version_regex = regex_template % "versionName"
|
29
29
|
|
30
|
-
aapt_path = os.path.join(os.path.dirname(__file__), "
|
30
|
+
aapt_path = os.path.join(os.path.dirname(__file__), "..", "utils/aapt")
|
31
31
|
output = os.popen("'%s' dump badging '%s'" % (aapt_path, build_path)).read()
|
32
32
|
|
33
33
|
build_name = re.match(build_name_regex, output).groups()[0]
|
data/legacy/DeployIPA.sh
CHANGED
@@ -56,7 +56,7 @@ if [[ -f "${IPA_PRODUCT_RESIGNED_APPSTORE}" ]]; then
|
|
56
56
|
echo "DEPLOY_ITUNESCONNECT_USER isn't specified, skipping deliver..."
|
57
57
|
else
|
58
58
|
if [ "${DELIVER_DEPLOY}" == 1 ]; then
|
59
|
-
deliver testflight "${IPA_PRODUCT_RESIGNED_APPSTORE}" -u "${DEPLOY_ITUNESCONNECT_USER}"
|
59
|
+
deliver testflight "${IPA_PRODUCT_RESIGNED_APPSTORE}" -u "${DEPLOY_ITUNESCONNECT_USER}" # --submit_for_review
|
60
60
|
else
|
61
61
|
deliver testflight "${IPA_PRODUCT_RESIGNED_APPSTORE}" -u "${DEPLOY_ITUNESCONNECT_USER}" --skip-deploy
|
62
62
|
fi
|
data/legacy/LoadBuildEnvVars.sh
CHANGED
@@ -82,6 +82,9 @@ echo "BUILT_PRODUCTS_DIR = ${BUILT_PRODUCTS_DIR}"
|
|
82
82
|
echo "OBJECTS_NORMAL_DIR = ${OBJECTS_NORMAL_DIR}"
|
83
83
|
echo "EXECUTABLE_NAME = ${EXECUTABLE_NAME}"
|
84
84
|
echo "APP_PRODUCT = ${APP_PRODUCT}"
|
85
|
+
echo "WATCHKIT_APP_RELATIVE_PRODUCT = ${WATCHKIT_APP_RELATIVE_PRODUCT}"
|
86
|
+
echo "WATCHKIT_EXTENSION_RELATIVE_PRODUCT = ${WATCHKIT_EXTENSION_RELATIVE_PRODUCT}"
|
87
|
+
echo "WIDGET_RELATIVE_PRODUCT = ${WIDGET_RELATIVE_PRODUCT}"
|
85
88
|
echo "IPA_PRODUCT = ${IPA_PRODUCT}"
|
86
89
|
echo "APP_DSYM = ${APP_DSYM}"
|
87
90
|
echo "APP_INFOPLIST_FILE = ${APP_INFOPLIST_FILE}"
|
@@ -91,8 +94,13 @@ echo "CONFIGURATION = ${CONFIGURATION}"
|
|
91
94
|
echo "SDK_NAME = ${SDK_NAME}"
|
92
95
|
echo "IPA_BUNDLE_ID = ${IPA_BUNDLE_ID}"
|
93
96
|
echo "RESIGNED_BUNDLE_ID = ${RESIGNED_BUNDLE_ID}"
|
97
|
+
echo "RESIGNED_WATCHKIT_APP_BUNDLE_ID = ${RESIGNED_WATCHKIT_APP_BUNDLE_ID}"
|
98
|
+
echo "RESIGNED_WATCHKIT_EXTENSION_BUNDLE_ID = ${RESIGNED_WATCHKIT_EXTENSION_BUNDLE_ID}"
|
99
|
+
echo "RESIGNED_WIDGET_BUNDLE_ID = ${RESIGNED_WIDGET_BUNDLE_ID}"
|
94
100
|
echo "RESIGNED_BUNDLE_NAME = ${RESIGNED_BUNDLE_NAME}"
|
95
101
|
echo "RESIGNED_ENTITLEMENTS_PATH = ${RESIGNED_ENTITLEMENTS_PATH}"
|
102
|
+
echo "RESIGNED_WATCHKIT_EXTENSION_ENTITLEMENTS_PATH = ${RESIGNED_WATCHKIT_EXTENSION_ENTITLEMENTS_PATH}"
|
103
|
+
echo "RESIGNED_WIDGET_ENTITLEMENTS_PATH = ${RESIGNED_WIDGET_ENTITLEMENTS_PATH}"
|
96
104
|
echo "NAME_FOR_DEPLOYMENT = ${NAME_FOR_DEPLOYMENT}"
|
97
105
|
|
98
106
|
checkDirExists "${BUILT_PRODUCTS_DIR}" "build products dir"
|
@@ -97,6 +97,7 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
|
|
97
97
|
def make_ipa(profile_type, ipa_product_suffix, ipa_product_key, ipa_bundle_id_key, name_for_deployment_key)
|
98
98
|
is_resigned = ipa_product_suffix.present? && ipa_product_suffix.include?('Resigned')
|
99
99
|
is_appstore = ipa_product_suffix.present? && ipa_product_suffix.include?('Appstore')
|
100
|
+
is_adhoc = ipa_product_suffix.present? && ipa_product_suffix.include?('AdHoc')
|
100
101
|
|
101
102
|
build_env_vars = BuildEnvVarsLoader.load
|
102
103
|
built_products_dir = build_env_vars[BUILT_PRODUCTS_DIR_KEY].presence
|
@@ -138,10 +139,18 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
|
|
138
139
|
|
139
140
|
ipa_bundle_id = is_resigned ? resigned_bundle_id : get_bundle_id(app_product)
|
140
141
|
|
142
|
+
if is_appstore
|
143
|
+
name_for_deployment = 'Appstore'
|
144
|
+
elsif is_adhoc
|
145
|
+
name_for_deployment = 'AdHoc'
|
146
|
+
else
|
147
|
+
name_for_deployment = configuration
|
148
|
+
end
|
149
|
+
|
141
150
|
system("echo \"\n# generated by Nixenvironment:
|
142
151
|
#{ipa_product_key}='#{ipa_product}'
|
143
152
|
#{ipa_bundle_id_key}='#{ipa_bundle_id}'
|
144
|
-
#{name_for_deployment_key}='#{
|
153
|
+
#{name_for_deployment_key}='#{name_for_deployment}'
|
145
154
|
\" >> _last_build_vars.sh")
|
146
155
|
|
147
156
|
FileUtils.rm_rf(temp_app_product) if is_appstore
|
@@ -266,42 +275,42 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
|
|
266
275
|
if watchkit_app_relative_product_path.present?
|
267
276
|
dest_watchkit_app_product_path = File.join(dest_app_product_path, watchkit_app_relative_product_path)
|
268
277
|
_is_watchkit_app_provision_replaced = replace_provision(dest_watchkit_app_product_path, watchkit_app_profile_path)
|
269
|
-
|
278
|
+
_is_watchkit_app_bundle_id_changed = rename_bundle_id(dest_watchkit_app_product_path, new_watchkit_app_bundle_id)
|
270
279
|
end
|
271
280
|
|
272
|
-
is_watchkit_extension_provision_replaced
|
273
|
-
|
281
|
+
is_watchkit_extension_provision_replaced = nil
|
282
|
+
is_watchkit_extension_bundle_id_changed = nil
|
274
283
|
|
275
284
|
dest_watchkit_extension_product_path = nil
|
276
285
|
|
277
286
|
# replace provision, rename bundle_id and bundle_name for watchkit extension
|
278
287
|
if watchkit_extension_relative_product_path.present?
|
279
|
-
dest_watchkit_extension_product_path
|
280
|
-
is_watchkit_extension_provision_replaced
|
281
|
-
|
288
|
+
dest_watchkit_extension_product_path = File.join(dest_app_product_path, watchkit_extension_relative_product_path)
|
289
|
+
is_watchkit_extension_provision_replaced = replace_provision(dest_watchkit_extension_product_path, watchkit_extension_profile_path)
|
290
|
+
is_watchkit_extension_bundle_id_changed = rename_bundle_id(dest_watchkit_extension_product_path, new_watchkit_extension_bundle_id)
|
282
291
|
end
|
283
292
|
|
284
|
-
is_widget_provision_replaced
|
285
|
-
|
293
|
+
is_widget_provision_replaced = nil
|
294
|
+
is_widget_bundle_idchanged = nil
|
286
295
|
|
287
296
|
dest_widget_product_path = nil
|
288
297
|
|
289
298
|
# replace provision, rename bundle_id and bundle_name for widget
|
290
299
|
if widget_relative_product_path.present?
|
291
|
-
dest_widget_product_path
|
292
|
-
is_widget_provision_replaced
|
293
|
-
|
300
|
+
dest_widget_product_path = File.join(dest_app_product_path, widget_relative_product_path)
|
301
|
+
is_widget_provision_replaced = replace_provision(dest_widget_product_path, widget_profile_path)
|
302
|
+
is_widget_bundle_idchanged = rename_bundle_id(dest_widget_product_path, new_widget_bundle_id)
|
294
303
|
end
|
295
304
|
|
296
305
|
# codesign watchkit extension
|
297
306
|
if watchkit_extension_relative_product_path.present?
|
298
307
|
codesign(watchkit_extension_identity_name, new_watchkit_extension_entitlements_path, is_watchkit_extension_provision_replaced,
|
299
|
-
|
308
|
+
is_watchkit_extension_bundle_id_changed, dest_watchkit_extension_product_path, watchkit_extension_profile_path, new_watchkit_extension_bundle_id)
|
300
309
|
end
|
301
310
|
|
302
311
|
# codesign widget
|
303
312
|
if widget_relative_product_path.present?
|
304
|
-
codesign(widget_identity_name, new_widget_entitlements_path, is_widget_provision_replaced,
|
313
|
+
codesign(widget_identity_name, new_widget_entitlements_path, is_widget_provision_replaced, is_widget_bundle_idchanged,
|
305
314
|
dest_widget_product_path, widget_profile_path, new_widget_bundle_id)
|
306
315
|
end
|
307
316
|
|
@@ -318,7 +327,7 @@ NAME_FOR_DEPLOYMENT='#{configuration}'
|
|
318
327
|
end
|
319
328
|
|
320
329
|
def codesign(identity_name, new_entitlements_path, is_provision_replaced, is_bundle_id_or_name_changed, dest_app_product_path, profile_path, new_bundle_id)
|
321
|
-
codesign_args = ['/usr/bin/codesign', '--force', '--sign', "'#{identity_name}'"]
|
330
|
+
codesign_args = ['/usr/bin/codesign', '--force', '--sign', '--deep', "'#{identity_name}'"]
|
322
331
|
|
323
332
|
# now let's figure out the entitlements...
|
324
333
|
if new_entitlements_path.present?
|
data/lib/nixenvironment/plist.rb
CHANGED
@@ -4,17 +4,11 @@ module Nixenvironment
|
|
4
4
|
class Plist
|
5
5
|
FORMAT_BINARY = CFPropertyList::List::FORMAT_BINARY
|
6
6
|
FORMAT_XML = CFPropertyList::List::FORMAT_XML
|
7
|
-
FORMAT_PLAIN = CFPropertyList::List::FORMAT_PLAIN
|
7
|
+
# FORMAT_PLAIN = CFPropertyList::List::FORMAT_PLAIN
|
8
8
|
FORMAT_AUTO = CFPropertyList::List::FORMAT_AUTO
|
9
9
|
|
10
10
|
def self.from_file(path)
|
11
|
-
|
12
|
-
# used instead of new(CFPropertyList::List.new(:file => path))
|
13
|
-
# because of odd <ArgumentError: invalid byte sequence in US-ASCII>
|
14
|
-
plist = CFPropertyList::List.new
|
15
|
-
plist.load_str(File.read(path))
|
16
|
-
plist.filename = path
|
17
|
-
new(plist)
|
11
|
+
new(CFPropertyList::List.new(:file => path))
|
18
12
|
end
|
19
13
|
|
20
14
|
def self.from_hash(hash)
|
@@ -42,7 +36,7 @@ module Nixenvironment
|
|
42
36
|
|
43
37
|
def []=(key, value)
|
44
38
|
@data[key] = value
|
45
|
-
@plist.value = CFPropertyList.guess(@data)
|
39
|
+
@plist.value = CFPropertyList.guess(@data, :convert_unknown_to_string => true)
|
46
40
|
end
|
47
41
|
|
48
42
|
def save(path = nil, format = nil, formatted = true)
|
@@ -30,10 +30,18 @@ module Nixenvironment
|
|
30
30
|
build_args = []
|
31
31
|
build_args << "-sdk '#{sdk}'" if sdk.present?
|
32
32
|
build_args << "-configuration '#{config}'" if config.present?
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
|
34
|
+
if project.present?
|
35
|
+
build_args << "-project '#{project}'"
|
36
|
+
elsif workspace.present?
|
37
|
+
build_args << "-workspace '#{workspace}'"
|
38
|
+
end
|
39
|
+
|
40
|
+
if target.present?
|
41
|
+
build_args << "-target '#{target}'"
|
42
|
+
elsif scheme.present?
|
43
|
+
build_args << "-scheme '#{scheme}'"
|
44
|
+
end
|
37
45
|
|
38
46
|
if env_var_prefix.present?
|
39
47
|
vars_to_define = ''
|
@@ -83,10 +91,19 @@ module Nixenvironment
|
|
83
91
|
build_args = []
|
84
92
|
build_args << "-sdk '#{sdk}'" if sdk.present?
|
85
93
|
build_args << "-configuration '#{config}'" if config.present?
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
94
|
+
|
95
|
+
if project.present?
|
96
|
+
build_args << "-project '#{project}'"
|
97
|
+
elsif workspace.present?
|
98
|
+
build_args << "-workspace '#{workspace}'"
|
99
|
+
end
|
100
|
+
|
101
|
+
if target.present?
|
102
|
+
build_args << "-target '#{target}'"
|
103
|
+
elsif scheme.present?
|
104
|
+
build_args << "-scheme '#{scheme}'"
|
105
|
+
end
|
106
|
+
|
90
107
|
build_args << '-showBuildSettings'
|
91
108
|
|
92
109
|
puts 'Reading config settings ...'
|
@@ -139,7 +156,7 @@ module Nixenvironment
|
|
139
156
|
if key.present? && value.present?
|
140
157
|
stripped_key = key.strip
|
141
158
|
stripped_value = value.strip
|
142
|
-
return stripped_value if stripped_key == PRODUCT_SETTINGS_PATH_KEY
|
159
|
+
return stripped_value if stripped_key == PRODUCT_SETTINGS_PATH_KEY
|
143
160
|
end
|
144
161
|
end
|
145
162
|
end
|
data/nixenvironment.gemspec
CHANGED
@@ -23,14 +23,14 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency 'deliver'
|
24
24
|
spec.add_dependency 'xcpretty'
|
25
25
|
spec.add_dependency 'ocunit2junit'
|
26
|
+
spec.add_dependency 'terminal-table'
|
27
|
+
spec.add_dependency 'colorize'
|
28
|
+
spec.add_dependency 'CFPropertyList', '= 2.2.8'
|
26
29
|
|
27
30
|
# Development only
|
28
31
|
spec.add_development_dependency 'bundler'
|
29
32
|
spec.add_development_dependency 'rake'
|
30
33
|
spec.add_development_dependency 'rspec'
|
31
34
|
spec.add_development_dependency 'commander'
|
32
|
-
spec.add_development_dependency 'terminal-table'
|
33
|
-
spec.add_development_dependency 'colorize'
|
34
35
|
spec.add_development_dependency 'fuzzy_match'
|
35
|
-
spec.add_development_dependency 'CFPropertyList'
|
36
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nixenvironment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.66
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-10-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cocoapods
|
@@ -68,13 +68,13 @@ dependencies:
|
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
71
|
+
name: terminal-table
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - '>='
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
|
-
type: :
|
77
|
+
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
@@ -82,13 +82,13 @@ dependencies:
|
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
85
|
+
name: colorize
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - '>='
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0'
|
91
|
-
type: :
|
91
|
+
type: :runtime
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
@@ -96,21 +96,21 @@ dependencies:
|
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
99
|
+
name: CFPropertyList
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - '
|
102
|
+
- - '='
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
105
|
-
type: :
|
104
|
+
version: 2.2.8
|
105
|
+
type: :runtime
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - '
|
109
|
+
- - '='
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version:
|
111
|
+
version: 2.2.8
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
|
-
name:
|
113
|
+
name: bundler
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
116
|
- - '>='
|
@@ -124,7 +124,7 @@ dependencies:
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
127
|
+
name: rake
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
130
|
- - '>='
|
@@ -138,7 +138,7 @@ dependencies:
|
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '0'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
|
-
name:
|
141
|
+
name: rspec
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - '>='
|
@@ -152,7 +152,7 @@ dependencies:
|
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '0'
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
|
-
name:
|
155
|
+
name: commander
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
158
|
- - '>='
|
@@ -166,7 +166,7 @@ dependencies:
|
|
166
166
|
- !ruby/object:Gem::Version
|
167
167
|
version: '0'
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
|
-
name:
|
169
|
+
name: fuzzy_match
|
170
170
|
requirement: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
172
|
- - '>='
|