branch_io_cli 0.7.1 → 0.8.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/README.md +2 -1
- data/lib/branch_io_cli/cli.rb +7 -1
- data/lib/branch_io_cli/commands/report_command.rb +102 -22
- data/lib/branch_io_cli/commands/setup_command.rb +4 -2
- data/lib/branch_io_cli/core_ext/io.rb +3 -2
- data/lib/branch_io_cli/helper.rb +0 -1
- data/lib/branch_io_cli/helper/configuration_helper.rb +12 -4
- data/lib/branch_io_cli/helper/ios_helper.rb +17 -18
- data/lib/branch_io_cli/helper/methods.rb +18 -2
- data/lib/branch_io_cli/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5010d2220f3412bda298fa667173dd26b6142f20
|
4
|
+
data.tar.gz: 91b25b66bd4c3d4b9e6bf9ea9051763c5bd5cc01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bffd545175fc581e8ae95b7ea13002386a36c994fbff76169538d2ee4cb047b10ea4b41457526b707bab99755763bf6a3589ab91086da68578f882a79676df4
|
7
|
+
data.tar.gz: 07af2fa0b8aad5aec93df27be95a4707c58b196f5f761b1c1f276ec80c0a51974f21cb2f5d5ad84c1ec16c1c2f73f06d72d9435debb7d0ffc7910332b392a5da
|
data/README.md
CHANGED
@@ -229,7 +229,8 @@ report with additional diagnostic information suitable for opening a support tic
|
|
229
229
|
|--xcodeproj MyProject.xcodeproj|Path to an Xcode project|
|
230
230
|
|--target MyAppTarget|Name of a target to modify in the Xcode project|
|
231
231
|
|--scheme MyAppScheme|Name of a scheme to build|
|
232
|
-
|--configuration Debug/Release/CustomConfig|Name of a build configuration|
|
232
|
+
|--configuration Debug/Release/CustomConfig|Name of a build configuration (default: Release)|
|
233
|
+
|--sdk iphonesimulator|Name of an SDK to use with xcodebuild (default: iphonesimulator)|
|
233
234
|
|--[no-]clean|Clean before building (default: yes)|
|
234
235
|
|--[no-]header-only|Show a diagnostic header and exit without cleaning or building (default: no)|
|
235
236
|
|--podfile /path/to/Podfile|Path to the Podfile for the project|
|
data/lib/branch_io_cli/cli.rb
CHANGED
@@ -163,6 +163,7 @@ EOF
|
|
163
163
|
c.option "--scheme MyProjectScheme", String, "A scheme from the project or workspace to build"
|
164
164
|
c.option "--target MyProjectTarget", String, "A target to build"
|
165
165
|
c.option "--configuration Debug|Release|CustomConfigName", String, "The build configuration to use (default: Release)"
|
166
|
+
c.option "--sdk iphonesimulator", String, "Passed as -sdk to xcodebuild (default: iphonesimulator)"
|
166
167
|
c.option "--podfile /path/to/Podfile", String, "Path to the Podfile for the project"
|
167
168
|
c.option "--cartfile /path/to/Cartfile", String, "Path to the Cartfile for the project"
|
168
169
|
c.option "--[no-]clean", "Clean before attempting to build (default: yes)"
|
@@ -170,7 +171,12 @@ EOF
|
|
170
171
|
c.option "--out branch-report.txt", String, "Report output path (default: ./branch-report.txt)"
|
171
172
|
|
172
173
|
c.action do |args, options|
|
173
|
-
options.default
|
174
|
+
options.default(
|
175
|
+
clean: true,
|
176
|
+
header_only: false,
|
177
|
+
configuration: "Release",
|
178
|
+
sdk: "iphonesimulator"
|
179
|
+
)
|
174
180
|
Commands::ReportCommand.new(options).run!
|
175
181
|
end
|
176
182
|
end
|
@@ -18,34 +18,52 @@ module BranchIOCLI
|
|
18
18
|
|
19
19
|
File.open config_helper.report_path, "w" do |report|
|
20
20
|
report.write "Branch.io Xcode build report v #{VERSION} #{DateTime.now}\n\n"
|
21
|
-
#
|
21
|
+
report.write "#{report_configuration}\n"
|
22
22
|
report.write "#{report_header}\n"
|
23
23
|
|
24
|
+
# run xcodebuild -list
|
24
25
|
report.report_command "#{base_xcodebuild_cmd} -list"
|
25
|
-
|
26
|
+
|
27
|
+
# If using a workspace, -list all the projects as well
|
28
|
+
if config_helper.workspace_path
|
29
|
+
config_helper.workspace.file_references.map(&:path).each do |project_path|
|
30
|
+
path = File.join File.dirname(config_helper.workspace_path), project_path
|
31
|
+
report.report_command "xcodebuild -list -project #{path}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
base_cmd = base_xcodebuild_cmd
|
36
|
+
# Add -scheme option for the rest of the commands if using a workspace
|
37
|
+
base_cmd = "#{base_cmd} -scheme #{config_helper.scheme}" if config_helper.workspace_path
|
38
|
+
|
39
|
+
# xcodebuild -showBuildSettings
|
40
|
+
report.report_command "#{base_cmd} -showBuildSettings"
|
41
|
+
|
42
|
+
# Add more options for the rest of the commands
|
43
|
+
base_cmd = "#{base_cmd} -configuration #{config_helper.configuration} -sdk #{config_helper.sdk}"
|
44
|
+
base_cmd = "#{base_cmd} -target #{config_helper.target}" unless config_helper.workspace_path
|
26
45
|
|
27
46
|
if config_helper.clean
|
28
47
|
say "Cleaning"
|
29
|
-
report.report_command "#{
|
48
|
+
report.report_command "#{base_cmd} clean"
|
30
49
|
end
|
31
50
|
|
32
51
|
say "Building"
|
33
|
-
report.report_command "#{
|
52
|
+
report.report_command "#{base_cmd} -verbose"
|
34
53
|
|
35
54
|
say "Done ✅"
|
36
55
|
end
|
37
|
-
@report = nil
|
38
56
|
|
39
57
|
say "Report generated in #{config_helper.report_path}"
|
40
58
|
end
|
41
59
|
|
42
60
|
def base_xcodebuild_cmd
|
43
|
-
cmd = "xcodebuild
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
61
|
+
cmd = "xcodebuild"
|
62
|
+
if config_helper.workspace_path
|
63
|
+
cmd = "#{cmd} -workspace #{config_helper.workspace_path}"
|
64
|
+
else
|
65
|
+
cmd = "#{cmd} -project #{config_helper.xcodeproj_path}"
|
66
|
+
end
|
49
67
|
cmd
|
50
68
|
end
|
51
69
|
|
@@ -66,7 +84,7 @@ module BranchIOCLI
|
|
66
84
|
def requirement_from_cartfile
|
67
85
|
return nil unless config_helper.cartfile_path
|
68
86
|
cartfile = File.read config_helper.cartfile_path
|
69
|
-
matches = %r{\
|
87
|
+
matches = %r{^git(hub\s+"|\s+"https://github.com/)BranchMetrics/(ios-branch-deep-linking|iOS-Deferred-Deep-Linking-SDK.*?).*?\n}m.match cartfile
|
70
88
|
matches ? matches[0].strip : nil
|
71
89
|
end
|
72
90
|
|
@@ -98,9 +116,9 @@ module BranchIOCLI
|
|
98
116
|
end
|
99
117
|
|
100
118
|
def version_from_branch_framework
|
101
|
-
framework = config_helper.
|
119
|
+
framework = config_helper.target.frameworks_build_phase.files.find { |f| f.file_ref.path =~ /Branch.framework$/ }
|
102
120
|
return nil unless framework
|
103
|
-
framework_path = framework.real_path
|
121
|
+
framework_path = framework.file_ref.real_path
|
104
122
|
info_plist_path = File.join framework_path.to_s, "Info.plist"
|
105
123
|
return nil unless File.exist? info_plist_path
|
106
124
|
|
@@ -123,29 +141,91 @@ module BranchIOCLI
|
|
123
141
|
"#{version} [BNCConfig.m]"
|
124
142
|
end
|
125
143
|
|
144
|
+
def report_configuration
|
145
|
+
<<EOF
|
146
|
+
Configuration:
|
147
|
+
|
148
|
+
Xcode workspace: #{config_helper.workspace_path || '(none)'}
|
149
|
+
Xcode project: #{config_helper.xcodeproj_path || '(none)'}
|
150
|
+
Scheme: #{config_helper.scheme || '(none)'}
|
151
|
+
Target: #{config_helper.target || '(none)'}
|
152
|
+
Configuration: #{config_helper.configuration || '(none)'}
|
153
|
+
SDK: #{config_helper.sdk}
|
154
|
+
Podfile: #{config_helper.podfile_path || '(none)'}
|
155
|
+
Cartfile: #{config_helper.cartfile_path || '(none)'}
|
156
|
+
Clean: #{config_helper.clean.inspect}
|
157
|
+
EOF
|
158
|
+
end
|
159
|
+
|
160
|
+
# rubocop: disable Metrics/PerceivedComplexity
|
126
161
|
def report_header
|
127
162
|
header = `xcodebuild -version`
|
128
163
|
|
129
|
-
|
130
|
-
|
131
|
-
|
164
|
+
header += "\nTarget #{config_helper.target.name} deploy target: #{config_helper.target.deployment_target}\n"
|
165
|
+
|
166
|
+
if config_helper.podfile_path
|
167
|
+
begin
|
168
|
+
cocoapods_version = `pod --version`.chomp
|
169
|
+
rescue Errno::ENOENT
|
170
|
+
header += "\n(pod command not found)\n"
|
171
|
+
end
|
172
|
+
|
173
|
+
if File.exist?("#{config_helper.podfile_path}.lock")
|
174
|
+
podfile_lock = Pod::Lockfile.from_file Pathname.new "#{config_helper.podfile_path}.lock"
|
175
|
+
end
|
176
|
+
|
177
|
+
if cocoapods_version || podfile_lock
|
178
|
+
header += "\nUsing CocoaPods v. "
|
179
|
+
if cocoapods_version
|
180
|
+
header += "#{cocoapods_version} (CLI) "
|
181
|
+
end
|
182
|
+
if podfile_lock
|
183
|
+
header += "#{podfile_lock.cocoapods_version} (Podfile.lock)"
|
184
|
+
end
|
185
|
+
header += "\n"
|
186
|
+
end
|
187
|
+
|
188
|
+
# Already verified existence.
|
189
|
+
podfile = Pod::Podfile.from_file Pathname.new config_helper.podfile_path
|
190
|
+
target_definition = podfile.target_definition_list.find { |t| t.name == config_helper.target.name }
|
191
|
+
if target_definition
|
192
|
+
branch_dep = target_definition.dependencies.find { |p| p.name == "Branch" }
|
193
|
+
header += "Podfile target #{target_definition.name}:"
|
194
|
+
header += "\n use_frameworks!" if target_definition.uses_frameworks?
|
195
|
+
header += "\n platform: #{target_definition.platform}"
|
196
|
+
header += "\n build configurations: #{target_definition.build_configurations}"
|
197
|
+
header += "\n inheritance: #{target_definition.inheritance}"
|
198
|
+
header += "\n pod 'Branch', '#{branch_dep.requirement}'" if branch_dep
|
199
|
+
header += ", #{branch_dep.external_source}" if branch_dep && branch_dep.external_source
|
200
|
+
header += "\n"
|
201
|
+
else
|
202
|
+
header += "Target #{config_helper.target.name.inspect} not found in Podfile.\n"
|
203
|
+
end
|
204
|
+
|
132
205
|
end
|
133
206
|
|
134
|
-
|
135
|
-
|
207
|
+
if config_helper.cartfile_path
|
208
|
+
begin
|
209
|
+
carthage_version = `carthage version`.chomp
|
210
|
+
header += "\nUsing Carthage v. #{carthage_version}\n"
|
211
|
+
rescue Errno::ENOENT
|
212
|
+
header += "\n(carthage command not found)\n"
|
213
|
+
end
|
214
|
+
end
|
136
215
|
|
137
216
|
cartfile_requirement = requirement_from_cartfile
|
138
|
-
header
|
217
|
+
header += "\nFrom Cartfile:\n#{cartfile_requirement}\n" if cartfile_requirement
|
139
218
|
|
140
219
|
version = branch_version
|
141
220
|
if version
|
142
|
-
header
|
221
|
+
header += "\nBranch SDK v. #{version}\n"
|
143
222
|
else
|
144
|
-
header
|
223
|
+
header += "\nBranch SDK not found.\n"
|
145
224
|
end
|
146
225
|
|
147
226
|
header
|
148
227
|
end
|
228
|
+
# rubocop: enable Metrics/PerceivedComplexity
|
149
229
|
end
|
150
230
|
end
|
151
231
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require "branch_io_cli/helper/methods"
|
2
|
+
|
1
3
|
module BranchIOCLI
|
2
4
|
module Commands
|
3
5
|
class SetupCommand < Command
|
@@ -46,7 +48,7 @@ module BranchIOCLI
|
|
46
48
|
helper.ensure_uri_scheme_in_info_plist if is_app_target # does nothing if already present
|
47
49
|
|
48
50
|
new_path = helper.add_universal_links_to_project @domains, false if is_app_target
|
49
|
-
|
51
|
+
sh "git add #{new_path}" if options.commit && new_path
|
50
52
|
|
51
53
|
config_helper.target.add_system_frameworks options.frameworks unless options.frameworks.nil? || options.frameworks.empty?
|
52
54
|
|
@@ -58,7 +60,7 @@ module BranchIOCLI
|
|
58
60
|
|
59
61
|
changes = helper.changes.to_a.map { |c| Pathname.new(File.expand_path(c)).relative_path_from(Pathname.pwd).to_s }
|
60
62
|
|
61
|
-
|
63
|
+
sh "git commit -qm '[branch_io_cli] Branch SDK integration' #{changes.join(' ')}"
|
62
64
|
end
|
63
65
|
# rubocop: enable Metrics/PerceivedComplexity
|
64
66
|
end
|
@@ -33,8 +33,8 @@ end
|
|
33
33
|
#
|
34
34
|
# :command: [String] a shell command to execute and report
|
35
35
|
def STDOUT.report_command(command)
|
36
|
-
# TODO: Improve this?
|
37
|
-
say "<%= color(
|
36
|
+
# TODO: Improve this implementation?
|
37
|
+
say "<%= color(%q{$ #{command}}, [MAGENTA, BOLD]) %>\n\n"
|
38
38
|
# May also write to stderr
|
39
39
|
# Could try system "#{command} 2>&1", but that might depend on the shell.
|
40
40
|
system command
|
@@ -45,4 +45,5 @@ def STDOUT.report_command(command)
|
|
45
45
|
else
|
46
46
|
write "#{status}\n\n"
|
47
47
|
end
|
48
|
+
status
|
48
49
|
end
|
data/lib/branch_io_cli/helper.rb
CHANGED
@@ -41,6 +41,7 @@ module BranchIOCLI
|
|
41
41
|
attr_reader :scheme
|
42
42
|
attr_reader :configuration
|
43
43
|
attr_reader :report_path
|
44
|
+
attr_reader :sdk
|
44
45
|
|
45
46
|
def validate_setup_options(options)
|
46
47
|
print_identification "setup"
|
@@ -100,8 +101,10 @@ module BranchIOCLI
|
|
100
101
|
@target = options.target
|
101
102
|
@configuration = options.configuration
|
102
103
|
@report_path = options.out || "./report.txt"
|
104
|
+
@sdk = options.sdk
|
103
105
|
|
104
106
|
validate_xcodeproj_and_workspace options
|
107
|
+
validate_target options
|
105
108
|
validate_scheme options
|
106
109
|
|
107
110
|
# If neither --podfile nor --cartfile is present, arbitrarily look for a Podfile
|
@@ -127,7 +130,7 @@ EOF
|
|
127
130
|
|
128
131
|
def print_setup_configuration
|
129
132
|
say <<EOF
|
130
|
-
<%= color('Configuration:', BOLD) %>
|
133
|
+
<%= color('Configuration:', [CYAN, BOLD, UNDERLINE]) %>
|
131
134
|
|
132
135
|
<%= color('Xcode project:', BOLD) %> #{@xcodeproj_path}
|
133
136
|
<%= color('Target:', BOLD) %> #{@target.name}
|
@@ -151,7 +154,7 @@ EOF
|
|
151
154
|
|
152
155
|
def print_validation_configuration
|
153
156
|
say <<EOF
|
154
|
-
<%= color('Configuration:', BOLD) %>
|
157
|
+
<%= color('Configuration:', [CYAN, BOLD, UNDERLINE]) %>
|
155
158
|
|
156
159
|
<%= color('Xcode project:', BOLD) %> #{@xcodeproj_path}
|
157
160
|
<%= color('Target:', BOLD) %> #{@target.name}
|
@@ -161,13 +164,14 @@ EOF
|
|
161
164
|
|
162
165
|
def print_report_configuration
|
163
166
|
say <<EOF
|
164
|
-
<%= color('Configuration:', BOLD) %>
|
167
|
+
<%= color('Configuration:', [CYAN, BOLD, UNDERLINE]) %>
|
165
168
|
|
166
169
|
<%= color('Xcode workspace:', BOLD) %> #{@workspace_path || '(none)'}
|
167
170
|
<%= color('Xcode project:', BOLD) %> #{@xcodeproj_path || '(none)'}
|
168
171
|
<%= color('Scheme:', BOLD) %> #{@scheme || '(none)'}
|
169
172
|
<%= color('Target:', BOLD) %> #{@target || '(none)'}
|
170
|
-
<%= color('Configuration:', BOLD) %> #{@configuration
|
173
|
+
<%= color('Configuration:', BOLD) %> #{@configuration}
|
174
|
+
<%= color('SDK:', BOLD) %> #{@sdk}
|
171
175
|
<%= color('Podfile:', BOLD) %> #{@podfile_path || '(none)'}
|
172
176
|
<%= color('Cartfile:', BOLD) %> #{@cartfile_path || '(none)'}
|
173
177
|
<%= color('Clean:', BOLD) %> #{@clean.inspect}
|
@@ -337,11 +341,15 @@ EOF
|
|
337
341
|
|
338
342
|
def validate_scheme(options)
|
339
343
|
schemes = all_schemes
|
344
|
+
# TODO: Prompt if --scheme specified but not found.
|
340
345
|
if options.scheme && schemes.include?(options.scheme)
|
341
346
|
@scheme = options.scheme
|
342
347
|
elsif schemes.count == 1
|
343
348
|
@scheme = schemes.first
|
344
349
|
elsif !schemes.empty?
|
350
|
+
# By default, take a scheme with the same name as the target name.
|
351
|
+
return if (@scheme = schemes.find { |s| s == @target.name })
|
352
|
+
|
345
353
|
say "Please specify one of the following for the --scheme argument:"
|
346
354
|
schemes.each do |scheme|
|
347
355
|
say " #{scheme}"
|
@@ -11,8 +11,6 @@ require "branch_io_cli/helper/methods"
|
|
11
11
|
module BranchIOCLI
|
12
12
|
module Helper
|
13
13
|
module IOSHelper
|
14
|
-
include Methods
|
15
|
-
|
16
14
|
APPLINKS = "applinks"
|
17
15
|
ASSOCIATED_DOMAINS = "com.apple.developer.associated-domains"
|
18
16
|
CODE_SIGN_ENTITLEMENTS = "CODE_SIGN_ENTITLEMENTS"
|
@@ -341,7 +339,8 @@ module BranchIOCLI
|
|
341
339
|
raise "Target #{target} not found" if target.nil?
|
342
340
|
else
|
343
341
|
# find the first application target
|
344
|
-
|
342
|
+
targets = project.targets.select { |t| !t.extension_target_type? && !t.test_target_type? }
|
343
|
+
target = targets.find { |t| t.name == File.basename(project.path).sub(/\.xcodeproj$/, "") } || targets.first
|
345
344
|
raise "No application target found" if target.nil?
|
346
345
|
end
|
347
346
|
target
|
@@ -793,7 +792,7 @@ EOF
|
|
793
792
|
install_command = "pod install"
|
794
793
|
install_command += " --repo-update" if options.pod_repo_update
|
795
794
|
Dir.chdir(File.dirname(podfile_path)) do
|
796
|
-
|
795
|
+
sh "pod init"
|
797
796
|
apply_patch(
|
798
797
|
files: podfile_path,
|
799
798
|
regexp: /^(\s*)# Pods for #{ConfigurationHelper.target.name}$/,
|
@@ -801,7 +800,7 @@ EOF
|
|
801
800
|
text: "\n\\1pod \"Branch\"",
|
802
801
|
global: false
|
803
802
|
)
|
804
|
-
|
803
|
+
sh install_command
|
805
804
|
end
|
806
805
|
|
807
806
|
add_change podfile_path
|
@@ -813,7 +812,7 @@ EOF
|
|
813
812
|
podfile_pathname = Pathname.new(podfile_path).relative_path_from Pathname.pwd
|
814
813
|
add_change pods_folder_path
|
815
814
|
add_change workspace_path
|
816
|
-
|
815
|
+
sh "git add #{podfile_pathname} #{podfile_pathname}.lock #{pods_folder_path} #{workspace_path}" if options.commit
|
817
816
|
end
|
818
817
|
|
819
818
|
def add_carthage(options)
|
@@ -830,7 +829,7 @@ EOF
|
|
830
829
|
|
831
830
|
# 2. carthage update
|
832
831
|
Dir.chdir(File.dirname(cartfile_path)) do
|
833
|
-
|
832
|
+
sh "carthage #{ConfigurationHelper.carthage_command}"
|
834
833
|
end
|
835
834
|
|
836
835
|
# 3. Add Cartfile and Cartfile.resolved to commit (in case :commit param specified)
|
@@ -859,7 +858,7 @@ EOF
|
|
859
858
|
carthage_folder_path = Pathname.new(File.expand_path("../Carthage", cartfile_path)).relative_path_from(Pathname.pwd)
|
860
859
|
cartfile_pathname = Pathname.new(cartfile_path).relative_path_from Pathname.pwd
|
861
860
|
add_change carthage_folder_path
|
862
|
-
|
861
|
+
sh "git add #{cartfile_pathname} #{cartfile_pathname}.resolved #{carthage_folder_path}" if options.commit
|
863
862
|
end
|
864
863
|
|
865
864
|
def add_direct(options)
|
@@ -923,7 +922,7 @@ EOF
|
|
923
922
|
|
924
923
|
add_change ConfigurationHelper.xcodeproj_path
|
925
924
|
add_change framework_path
|
926
|
-
|
925
|
+
sh "git add #{framework_path}" if options.commit
|
927
926
|
|
928
927
|
say "Done. ✅"
|
929
928
|
end
|
@@ -943,7 +942,7 @@ EOF
|
|
943
942
|
command += ' --repo-update' if options.pod_repo_update
|
944
943
|
|
945
944
|
Dir.chdir(File.dirname(podfile_path)) do
|
946
|
-
|
945
|
+
sh command
|
947
946
|
end
|
948
947
|
|
949
948
|
# 3. Add Podfile and Podfile.lock to commit (in case :commit param specified)
|
@@ -957,7 +956,7 @@ EOF
|
|
957
956
|
|
958
957
|
# 5. If so, add the Pods folder to the commit (in case :commit param specified)
|
959
958
|
add_change pods_folder_path
|
960
|
-
|
959
|
+
sh "git add #{pods_folder_path}" if options.commit
|
961
960
|
|
962
961
|
true
|
963
962
|
end
|
@@ -973,7 +972,7 @@ EOF
|
|
973
972
|
|
974
973
|
# 2. carthage update
|
975
974
|
Dir.chdir(File.dirname(cartfile_path)) do
|
976
|
-
|
975
|
+
sh "carthage #{ConfigurationHelper.carthage_command}"
|
977
976
|
end
|
978
977
|
|
979
978
|
# 3. Add Cartfile and Cartfile.resolved to commit (in case :commit param specified)
|
@@ -1004,7 +1003,7 @@ EOF
|
|
1004
1003
|
|
1005
1004
|
# 7. If so, add the Carthage folder to the commit (in case :commit param specified)
|
1006
1005
|
add_change carthage_folder_path
|
1007
|
-
|
1006
|
+
sh "git add #{carthage_folder_path}" if options.commit
|
1008
1007
|
|
1009
1008
|
true
|
1010
1009
|
end
|
@@ -1031,13 +1030,13 @@ EOF
|
|
1031
1030
|
|
1032
1031
|
gem_home = ENV["GEM_HOME"]
|
1033
1032
|
if gem_home && File.writable?(gem_home)
|
1034
|
-
|
1033
|
+
sh "gem install cocoapods"
|
1035
1034
|
else
|
1036
|
-
|
1035
|
+
sh "sudo gem install cocoapods"
|
1037
1036
|
end
|
1038
1037
|
|
1039
1038
|
# Ensure master podspec repo is set up (will update if it exists).
|
1040
|
-
|
1039
|
+
sh "pod setup"
|
1041
1040
|
end
|
1042
1041
|
|
1043
1042
|
def verify_carthage
|
@@ -1056,7 +1055,7 @@ EOF
|
|
1056
1055
|
exit(-1)
|
1057
1056
|
end
|
1058
1057
|
|
1059
|
-
|
1058
|
+
sh "brew install carthage"
|
1060
1059
|
end
|
1061
1060
|
|
1062
1061
|
def verify_git
|
@@ -1077,7 +1076,7 @@ EOF
|
|
1077
1076
|
exit(-1)
|
1078
1077
|
end
|
1079
1078
|
|
1080
|
-
|
1079
|
+
sh "xcode-select --install"
|
1081
1080
|
end
|
1082
1081
|
end
|
1083
1082
|
end
|
@@ -1,9 +1,25 @@
|
|
1
1
|
module BranchIOCLI
|
2
2
|
module Helper
|
3
|
+
class CommandError < RuntimeError; end
|
4
|
+
|
3
5
|
module Methods
|
4
|
-
|
5
|
-
|
6
|
+
# Execute a shell command with reporting.
|
7
|
+
# The command itself is logged, then output from
|
8
|
+
# both stdout and stderr, then a success or failure
|
9
|
+
# message. Raises CommandError on error.
|
10
|
+
#
|
11
|
+
# If output is STDOUT (the default), no redirection occurs. In all
|
12
|
+
# other cases, both stdout and stderr are redirected to output.
|
13
|
+
# In these cases, formatting (colors, highlights) may be lost.
|
14
|
+
#
|
15
|
+
# :command: [String] A shell command to execute
|
16
|
+
# :output: [IO] An optional IO object to receive stdout and stderr from the command
|
17
|
+
def sh(command, output = STDOUT)
|
18
|
+
status = output.report_command command
|
19
|
+
raise CommandError, %{Error executing "#{command}": #{status}.} unless status.success?
|
6
20
|
end
|
7
21
|
end
|
8
22
|
end
|
9
23
|
end
|
24
|
+
|
25
|
+
include BranchIOCLI::Helper::Methods
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: branch_io_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Branch
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-11-
|
12
|
+
date: 2017-11-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: CFPropertyList
|