branch_io_cli 0.9.8 → 0.9.9
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/lib/branch_io_cli/command/report_command.rb +16 -31
- data/lib/branch_io_cli/command/setup_command.rb +11 -0
- data/lib/branch_io_cli/configuration/report_configuration.rb +3 -1
- data/lib/branch_io_cli/helper/patch_helper.rb +46 -44
- data/lib/branch_io_cli/helper/report_helper.rb +33 -0
- data/lib/branch_io_cli/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9193658d454dcab2a74341807a6594a25baaa647ec46eac3e44043ee632a696
|
4
|
+
data.tar.gz: afb073e2385911619802a78066f281f9b36fef02d5613cba141ccaf8498dcd11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfb723a5edc92d5eaae87c3b2673cc1c41cc38aaf694dd19cec96e26a53fd3cb275559de3e442fbcd58c18cf1a5768b790a47643875b21f868b4e4bd21eac74a
|
7
|
+
data.tar.gz: d134244741fe80706d32662edfb08d9212c80428b70aada33d90b2954b77ebe5ad6e88e080809b9d2e3685ce47758a37d03f15cb088dfded0e83aac849fda5ec
|
@@ -6,7 +6,10 @@ module BranchIOCLI
|
|
6
6
|
def run!
|
7
7
|
say "\n"
|
8
8
|
|
9
|
-
|
9
|
+
say "Loading settings from Xcode"
|
10
|
+
if xcode_settings.valid?
|
11
|
+
say "Done ✅"
|
12
|
+
else
|
10
13
|
say "Failed to load settings from Xcode. Some information may be missing.\n"
|
11
14
|
end
|
12
15
|
|
@@ -15,37 +18,13 @@ module BranchIOCLI
|
|
15
18
|
exit 0
|
16
19
|
end
|
17
20
|
|
18
|
-
# Only if a Podfile is detected/supplied at the command line.
|
19
|
-
if config.pod_install_required?
|
20
|
-
say "pod install required in order to build."
|
21
|
-
install = ask %{Run "pod install" now (Y/n)? }
|
22
|
-
if install.downcase =~ /^n/
|
23
|
-
say %{Please run "pod install" or "pod update" first in order to continue.}
|
24
|
-
exit(-1)
|
25
|
-
end
|
26
|
-
|
27
|
-
helper.verify_cocoapods
|
28
|
-
|
29
|
-
install_command = "pod install"
|
30
|
-
|
31
|
-
if config.pod_repo_update
|
32
|
-
install_command += " --repo-update"
|
33
|
-
else
|
34
|
-
say <<EOF
|
35
|
-
You have disabled "pod repo update". This can cause "pod install" to fail in
|
36
|
-
some cases. If that happens, please rerun without --no-pod-repo-update or run
|
37
|
-
"pod install --repo-update" manually.
|
38
|
-
EOF
|
39
|
-
end
|
40
|
-
|
41
|
-
sh install_command
|
42
|
-
end
|
43
|
-
|
44
21
|
File.open config.report_path, "w" do |report|
|
45
22
|
report.write "Branch.io Xcode build report v #{VERSION} #{DateTime.now}\n\n"
|
46
23
|
report.write "#{config.report_configuration}\n"
|
47
24
|
report.write "#{report_helper.report_header}\n"
|
48
25
|
|
26
|
+
report_helper.pod_install_if_required report
|
27
|
+
|
49
28
|
# run xcodebuild -list
|
50
29
|
report.log_command "#{report_helper.base_xcodebuild_cmd} -list"
|
51
30
|
|
@@ -68,13 +47,19 @@ EOF
|
|
68
47
|
|
69
48
|
if config.clean
|
70
49
|
say "Cleaning"
|
71
|
-
report.log_command
|
50
|
+
if report.log_command("#{base_cmd} clean").success?
|
51
|
+
say "Done ✅"
|
52
|
+
else
|
53
|
+
say "Clean failed."
|
54
|
+
end
|
72
55
|
end
|
73
56
|
|
74
57
|
say "Building"
|
75
|
-
report.log_command
|
76
|
-
|
77
|
-
|
58
|
+
if report.log_command("#{base_cmd} -verbose").success?
|
59
|
+
say "Done ✅"
|
60
|
+
else
|
61
|
+
say "Build failed."
|
62
|
+
end
|
78
63
|
end
|
79
64
|
|
80
65
|
say "Report generated in #{config.report_path}"
|
@@ -30,6 +30,17 @@ module BranchIOCLI
|
|
30
30
|
say "Universal Link configuration passed validation. ✅"
|
31
31
|
end
|
32
32
|
|
33
|
+
if @keys.count > 1 && helper.has_multiple_info_plists? &&
|
34
|
+
!File.exist?(File.join(File.dirname(config.podfile_path), 'Pods'))
|
35
|
+
# Work around a potential crash for now. The PBXBuildConfiguration#debug?
|
36
|
+
# method may raise in this case.
|
37
|
+
helper.verify_cocoapods
|
38
|
+
say "Installing pods to resolve current build settings"
|
39
|
+
# We haven't modified anything yet. Don't use --repo-update at this stage.
|
40
|
+
# This is unlikely to fail.
|
41
|
+
sh "pod install"
|
42
|
+
end
|
43
|
+
|
33
44
|
# the following calls can all raise IOError
|
34
45
|
helper.add_keys_to_info_plist @keys
|
35
46
|
helper.add_branch_universal_link_domains_to_info_plist @domains if is_app_target
|
@@ -29,10 +29,12 @@ module Xcodeproj
|
|
29
29
|
end
|
30
30
|
|
31
31
|
schemes.uniq!
|
32
|
-
if schemes.empty?
|
32
|
+
if schemes.empty? && File.exist?(project_path)
|
33
33
|
# Open the project, get all targets. Add one scheme per target.
|
34
34
|
project = self.open project_path
|
35
35
|
schemes += project.targets.reject(&:test_target_type?).map(&:name)
|
36
|
+
elsif schemes.empty?
|
37
|
+
schemes << File.basename(project_path, '.xcodeproj')
|
36
38
|
end
|
37
39
|
schemes
|
38
40
|
end
|
@@ -3,12 +3,13 @@ require "pattern_patch"
|
|
3
3
|
module BranchIOCLI
|
4
4
|
module Helper
|
5
5
|
class PatchHelper
|
6
|
-
class
|
7
|
-
|
8
|
-
path = File.expand_path(File.join('..', '..', '..', 'assets', 'patches', "#{name}.yml"), __FILE__)
|
9
|
-
PatternPatch::Patch.from_yaml path
|
10
|
-
end
|
6
|
+
# Adds patch_dir class attr and patch class method
|
7
|
+
extend PatternPatch::Methods
|
11
8
|
|
9
|
+
# Set the patch_dir for PatternPatch
|
10
|
+
@patch_dir = File.expand_path(File.join('..', '..', '..', 'assets', 'patches'), __FILE__)
|
11
|
+
|
12
|
+
class << self
|
12
13
|
def config
|
13
14
|
Configuration::Configuration.current
|
14
15
|
end
|
@@ -25,6 +26,13 @@ module BranchIOCLI
|
|
25
26
|
config.keys.count > 1 && !helper.has_multiple_info_plists?
|
26
27
|
end
|
27
28
|
|
29
|
+
def swift_file_includes_branch?(path)
|
30
|
+
# Can't just check for the import here, since there may be a bridging header.
|
31
|
+
# This may match branch.initSession (if the Branch instance is stored) or
|
32
|
+
# Branch.getInstance().initSession, etc.
|
33
|
+
!/branch.*initsession|^\s*import\s+branch/i.match_file(path).nil?
|
34
|
+
end
|
35
|
+
|
28
36
|
def patch_bridging_header
|
29
37
|
unless config.bridging_header_path
|
30
38
|
say "Modules not available and bridging header not found. Cannot import Branch."
|
@@ -46,13 +54,13 @@ module BranchIOCLI
|
|
46
54
|
|
47
55
|
if /^\s*(#import|#include|@import)/.match_file config.bridging_header_path
|
48
56
|
# Add among other imports
|
49
|
-
|
57
|
+
patch(:objc_import).apply config.bridging_header_path
|
50
58
|
elsif /\n\s*#ifndef\s+(\w+).*\n\s*#define\s+\1.*?\n/m.match_file config.bridging_header_path
|
51
59
|
# Has an include guard. Add inside.
|
52
|
-
|
60
|
+
patch(:objc_import_include_guard).apply config.bridging_header_path
|
53
61
|
else
|
54
62
|
# No imports, no include guard. Add at the end.
|
55
|
-
|
63
|
+
patch(:objc_import_at_end).apply config.bridging_header_path
|
56
64
|
end
|
57
65
|
helper.add_change config.bridging_header_path
|
58
66
|
end
|
@@ -61,21 +69,15 @@ module BranchIOCLI
|
|
61
69
|
return false unless config.patch_source
|
62
70
|
app_delegate_swift_path = config.app_delegate_swift_path
|
63
71
|
|
64
|
-
return false
|
65
|
-
|
66
|
-
app_delegate = File.read app_delegate_swift_path
|
72
|
+
return false if app_delegate_swift_path.nil? ||
|
73
|
+
swift_file_includes_branch?(app_delegate_swift_path)
|
67
74
|
|
68
|
-
|
69
|
-
# This may match branch.initSession (if the Branch instance is stored) or
|
70
|
-
# Branch.getInstance().initSession, etc.
|
71
|
-
return false if app_delegate =~ /(import\s+branch|branch\.*initsession)/i
|
75
|
+
say "Patching #{app_delegate_swift_path}"
|
72
76
|
|
73
77
|
unless config.bridging_header_required?
|
74
|
-
|
78
|
+
patch(:swift_import).apply app_delegate_swift_path
|
75
79
|
end
|
76
80
|
|
77
|
-
say "Patching #{app_delegate_swift_path}"
|
78
|
-
|
79
81
|
patch_did_finish_launching_method_swift app_delegate_swift_path
|
80
82
|
patch_continue_user_activity_method_swift app_delegate_swift_path
|
81
83
|
patch_open_url_method_swift app_delegate_swift_path
|
@@ -95,7 +97,7 @@ module BranchIOCLI
|
|
95
97
|
|
96
98
|
say "Patching #{app_delegate_objc_path}"
|
97
99
|
|
98
|
-
|
100
|
+
patch(:objc_import).apply app_delegate_objc_path
|
99
101
|
|
100
102
|
patch_did_finish_launching_method_objc app_delegate_objc_path
|
101
103
|
patch_continue_user_activity_method_objc app_delegate_objc_path
|
@@ -110,11 +112,11 @@ module BranchIOCLI
|
|
110
112
|
|
111
113
|
is_new_method = app_delegate_swift !~ /didFinishLaunching[^\n]+?\{/m
|
112
114
|
if is_new_method
|
113
|
-
|
115
|
+
patch_name = :did_finish_launching_new_swift
|
114
116
|
else
|
115
|
-
|
117
|
+
patch_name = :did_finish_launching_swift
|
116
118
|
end
|
117
|
-
patch.apply app_delegate_swift_path, binding: binding
|
119
|
+
patch(patch_name).apply app_delegate_swift_path, binding: binding
|
118
120
|
end
|
119
121
|
|
120
122
|
def patch_did_finish_launching_method_objc(app_delegate_objc_path)
|
@@ -122,11 +124,11 @@ module BranchIOCLI
|
|
122
124
|
|
123
125
|
is_new_method = app_delegate_objc !~ /didFinishLaunchingWithOptions/m
|
124
126
|
if is_new_method
|
125
|
-
|
127
|
+
patch_name = :did_finish_launching_new_objc
|
126
128
|
else
|
127
|
-
|
129
|
+
patch_name = :did_finish_launching_objc
|
128
130
|
end
|
129
|
-
patch.apply app_delegate_objc_path, binding: binding
|
131
|
+
patch(patch_name).apply app_delegate_objc_path, binding: binding
|
130
132
|
end
|
131
133
|
|
132
134
|
def patch_open_url_method_swift(app_delegate_swift_path)
|
@@ -134,27 +136,27 @@ module BranchIOCLI
|
|
134
136
|
|
135
137
|
if app_delegate_swift =~ /application.*open\s+url.*options/
|
136
138
|
# Has application:openURL:options:
|
137
|
-
|
139
|
+
patch_name = :open_url_swift
|
138
140
|
elsif app_delegate_swift =~ /application.*open\s+url.*sourceApplication/
|
139
141
|
# Has application:openURL:sourceApplication:annotation:
|
140
142
|
# TODO: This method is deprecated.
|
141
|
-
|
143
|
+
patch_name = :open_url_source_application_swift
|
142
144
|
else
|
143
145
|
# Has neither
|
144
|
-
|
146
|
+
patch_name = :open_url_new_swift
|
145
147
|
end
|
146
|
-
patch.apply app_delegate_swift_path
|
148
|
+
patch(patch_name).apply app_delegate_swift_path
|
147
149
|
end
|
148
150
|
|
149
151
|
def patch_continue_user_activity_method_swift(app_delegate_swift_path)
|
150
152
|
app_delegate_swift = File.read app_delegate_swift_path
|
151
153
|
|
152
154
|
if app_delegate_swift =~ /application:.*continue userActivity:.*restorationHandler:/
|
153
|
-
|
155
|
+
patch_name = :continue_user_activity_swift
|
154
156
|
else
|
155
|
-
|
157
|
+
patch_name = :continue_user_activity_new_swift
|
156
158
|
end
|
157
|
-
patch.apply app_delegate_swift_path
|
159
|
+
patch(patch_name).apply app_delegate_swift_path
|
158
160
|
end
|
159
161
|
|
160
162
|
def patch_open_url_method_objc(app_delegate_objc_path)
|
@@ -162,27 +164,27 @@ module BranchIOCLI
|
|
162
164
|
|
163
165
|
if app_delegate_objc =~ /application:.*openURL:.*options/
|
164
166
|
# Has application:openURL:options:
|
165
|
-
|
167
|
+
patch_name = :open_url_objc
|
166
168
|
elsif app_delegate_objc =~ /application:.*openURL:.*sourceApplication/
|
167
169
|
# Has application:openURL:sourceApplication:annotation:
|
168
|
-
|
170
|
+
patch_name = :open_url_source_annotation_objc
|
169
171
|
# TODO: This method is deprecated.
|
170
172
|
else
|
171
173
|
# Has neither
|
172
|
-
|
174
|
+
patch_name = :open_url_new_objc
|
173
175
|
end
|
174
|
-
patch.apply app_delegate_objc_path
|
176
|
+
patch(patch_name).apply app_delegate_objc_path
|
175
177
|
end
|
176
178
|
|
177
179
|
def patch_continue_user_activity_method_objc(app_delegate_objc_path)
|
178
180
|
app_delegate_swift = File.read app_delegate_objc_path
|
179
181
|
|
180
182
|
if app_delegate_swift =~ /application:.*continueUserActivity:.*restorationHandler:/
|
181
|
-
|
183
|
+
patch_name = :continue_user_activity_objc
|
182
184
|
else
|
183
|
-
|
185
|
+
patch_name = :continue_user_activity_new_objc
|
184
186
|
end
|
185
|
-
patch.apply app_delegate_objc_path
|
187
|
+
patch(patch_name).apply app_delegate_objc_path
|
186
188
|
end
|
187
189
|
|
188
190
|
def patch_messages_view_controller
|
@@ -193,10 +195,10 @@ module BranchIOCLI
|
|
193
195
|
when nil
|
194
196
|
return false
|
195
197
|
when /\.swift$/
|
196
|
-
return false if
|
198
|
+
return false if swift_file_includes_branch?(path)
|
197
199
|
|
198
200
|
unless config.bridging_header_required?
|
199
|
-
|
201
|
+
patch(:swift_import).apply path
|
200
202
|
end
|
201
203
|
|
202
204
|
is_new_method = !/didBecomeActive\(with.*?\{[^\n]*\n/m.match_file(path)
|
@@ -204,7 +206,7 @@ module BranchIOCLI
|
|
204
206
|
else
|
205
207
|
return false if %r{^\s+#import\s+<Branch/Branch.h>|^\s+@import\s+Branch\s*;}.match_file(path)
|
206
208
|
|
207
|
-
|
209
|
+
patch(:objc_import).apply path
|
208
210
|
|
209
211
|
is_new_method = !/didBecomeActiveWithConversation.*?\{[^\n]*\n/m.match_file(path)
|
210
212
|
patch_name += "#{is_new_method ? 'new_' : ''}objc"
|
@@ -212,7 +214,7 @@ module BranchIOCLI
|
|
212
214
|
|
213
215
|
say "Patching #{path}"
|
214
216
|
|
215
|
-
|
217
|
+
patch(patch_name).apply path, binding: binding
|
216
218
|
|
217
219
|
helper.add_change(path)
|
218
220
|
true
|
@@ -260,7 +262,7 @@ module BranchIOCLI
|
|
260
262
|
|
261
263
|
say "Adding \"Branch\" to #{cartfile_path}"
|
262
264
|
|
263
|
-
|
265
|
+
patch(:cartfile).apply cartfile_path
|
264
266
|
|
265
267
|
true
|
266
268
|
end
|
@@ -181,6 +181,39 @@ module BranchIOCLI
|
|
181
181
|
|
182
182
|
report
|
183
183
|
end
|
184
|
+
|
185
|
+
def pod_install_if_required(report)
|
186
|
+
return unless config.pod_install_required?
|
187
|
+
# Only if a Podfile is detected/supplied at the command line.
|
188
|
+
say "pod install required in order to build."
|
189
|
+
install = ask %{Run "pod install" now (Y/n)? }
|
190
|
+
if install.downcase =~ /^n/
|
191
|
+
say %{Please run "pod install" or "pod update" first in order to continue.}
|
192
|
+
exit(-1)
|
193
|
+
end
|
194
|
+
|
195
|
+
helper.verify_cocoapods
|
196
|
+
|
197
|
+
install_command = "pod install"
|
198
|
+
|
199
|
+
if config.pod_repo_update
|
200
|
+
install_command += " --repo-update"
|
201
|
+
else
|
202
|
+
say <<-EOF
|
203
|
+
You have disabled "pod repo update". This can cause "pod install" to fail in
|
204
|
+
some cases. If that happens, please rerun without --no-pod-repo-update or run
|
205
|
+
"pod install --repo-update" manually.
|
206
|
+
EOF
|
207
|
+
end
|
208
|
+
|
209
|
+
say "Running #{install_command.inspect}"
|
210
|
+
if report.log_command(install_command).success?
|
211
|
+
say "Done ✅"
|
212
|
+
else
|
213
|
+
say "pod install failed. See report for details."
|
214
|
+
exit(-1)
|
215
|
+
end
|
216
|
+
end
|
184
217
|
end
|
185
218
|
end
|
186
219
|
end
|
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.9.
|
4
|
+
version: 0.9.9
|
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-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: CFPropertyList
|
@@ -59,14 +59,14 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 0.5.
|
62
|
+
version: 0.5.3
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.5.
|
69
|
+
version: 0.5.3
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: plist
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|