branch_io_cli 0.10.0 → 0.11.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 +78 -30
- data/lib/assets/completions/completion.bash +1 -1
- data/lib/assets/completions/completion.zsh +1 -1
- data/lib/assets/templates/command.erb +31 -0
- data/lib/assets/templates/program_description.erb +2 -0
- data/lib/assets/templates/report_description.erb +4 -0
- data/lib/assets/templates/setup_description.erb +52 -0
- data/lib/assets/templates/validate_description.erb +18 -0
- data/lib/branch_io_cli.rb +1 -0
- data/lib/branch_io_cli/cli.rb +50 -147
- data/lib/branch_io_cli/command/command.rb +28 -6
- data/lib/branch_io_cli/command/report_command.rb +1 -1
- data/lib/branch_io_cli/command/setup_command.rb +4 -7
- data/lib/branch_io_cli/command/validate_command.rb +0 -2
- data/lib/branch_io_cli/configuration.rb +2 -0
- data/lib/branch_io_cli/configuration/configuration.rb +27 -1
- data/lib/branch_io_cli/configuration/option.rb +28 -0
- data/lib/branch_io_cli/configuration/option_wrapper.rb +33 -0
- data/lib/branch_io_cli/configuration/report_configuration.rb +83 -7
- data/lib/branch_io_cli/configuration/setup_configuration.rb +142 -9
- data/lib/branch_io_cli/configuration/validate_configuration.rb +30 -1
- data/lib/branch_io_cli/core_ext/io.rb +5 -2
- data/lib/branch_io_cli/format.rb +15 -0
- data/lib/branch_io_cli/format/commander_format.rb +21 -0
- data/lib/branch_io_cli/format/markdown_format.rb +60 -0
- data/lib/branch_io_cli/helper/ios_helper.rb +14 -14
- data/lib/branch_io_cli/helper/methods.rb +2 -2
- data/lib/branch_io_cli/rake_task.rb +26 -54
- data/lib/branch_io_cli/version.rb +1 -1
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c19de7b1fee926331d25dec07b8f5af3c3ddd099d7a935bdf724499da2dc0684
|
4
|
+
data.tar.gz: 8777a15c765285fcdc8de2db03c26bae564c7f3557d2bc1e2bdf5b593e99595e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ea8a70c65a8234a83f541c1c67191e26d2dd20e0e20f4bb5a6a645e667b3db37aca91c54a9071cbaef13977697f37f4cab3aa9c7845059eb201f7d0b5391be5
|
7
|
+
data.tar.gz: d31b0cff7755187e94f6e7ce9be04f27b83ca3fee7b52e1db95c9c2f3f365fdc8d5bfffa2881e3e2b041e949047edd25595ac629cbc38093e634654e421ecec1
|
data/README.md
CHANGED
@@ -59,6 +59,9 @@ Currently command-line completion for bash is much more extensive than for zsh.
|
|
59
59
|
|
60
60
|
## Commands
|
61
61
|
|
62
|
+
<!-- The following is generated. Do not edit by hand. Run rake readme to -->
|
63
|
+
<!-- regenerate this section. -->
|
64
|
+
<!-- BEGIN COMMAND REFERENCE -->
|
62
65
|
### Setup command
|
63
66
|
|
64
67
|
```bash
|
@@ -98,7 +101,9 @@ This can be suppressed using `--no-patch-source`.
|
|
98
101
|
|
99
102
|
#### Prerequisites
|
100
103
|
|
101
|
-
Before using this command, make sure to set up your app in the
|
104
|
+
Before using this command, make sure to set up your app in the Branch Dashboard
|
105
|
+
(https://dashboard.branch.io). See https://docs.branch.io/pages/dashboard/integrate/
|
106
|
+
for details. To use the `setup` command, you need:
|
102
107
|
|
103
108
|
- Branch key(s), either live, test or both
|
104
109
|
- Domain name(s) used for Branch links
|
@@ -109,6 +114,14 @@ the `pod` or `carthage` command may be required. If not found, the CLI will
|
|
109
114
|
offer to install and set up these command-line tools for you. Alternately, you can arrange
|
110
115
|
that the relevant commands are available in your `PATH`.
|
111
116
|
|
117
|
+
All parameters are optional. A live key or test key, or both is required, as well
|
118
|
+
as at least one domain. Specify `--live-key`, `--test-key` or both and `--app-link-subdomain`,
|
119
|
+
`--domains` or both. If these are not specified, this command will prompt you
|
120
|
+
for this information.
|
121
|
+
|
122
|
+
See https://github.com/BranchMetrics/branch_io_cli#setup-command for more information.
|
123
|
+
|
124
|
+
|
112
125
|
#### Options
|
113
126
|
|
114
127
|
|Option|Description|
|
@@ -118,77 +131,92 @@ that the relevant commands are available in your `PATH`.
|
|
118
131
|
|-t, --trace|Prints a stack trace when exceptions are raised|
|
119
132
|
|-L, --live-key key_live_xxxx|Branch live key|
|
120
133
|
|-T, --test-key key_test_yyyy|Branch test key|
|
121
|
-
|--app-link-subdomain myapp|Branch app.link subdomain, e.g. myapp for myapp.app.link|
|
122
134
|
|-D, --domains example.com,www.example.com|Comma-separated list of custom domain(s) or non-Branch domain(s)|
|
135
|
+
|--app-link-subdomain myapp|Branch app.link subdomain, e.g. myapp for myapp.app.link|
|
123
136
|
|-U, --uri-scheme myurischeme[://]|Custom URI scheme used in the Branch Dashboard for this app|
|
124
137
|
|-s, --setting [BRANCH_KEY_SETTING]|Use a custom build setting for the Branch key (default: Use Info.plist)|
|
125
|
-
|--test-configurations|List of configurations that use the test key with a custom build setting (default: Debug configurations)|
|
138
|
+
|--test-configurations config1,config2|List of configurations that use the test key with a custom build setting (default: Debug configurations)|
|
126
139
|
|--xcodeproj MyProject.xcodeproj|Path to an Xcode project to update|
|
127
140
|
|--target MyAppTarget|Name of a target to modify in the Xcode project|
|
128
141
|
|--podfile /path/to/Podfile|Path to the Podfile for the project|
|
129
142
|
|--cartfile /path/to/Cartfile|Path to the Cartfile for the project|
|
130
|
-
|--carthage-command <command>|Command to
|
143
|
+
|--carthage-command <command>|Command to run when installing from Carthage (default: update --platform ios)|
|
131
144
|
|--frameworks AdSupport,CoreSpotlight,SafariServices|Comma-separated list of system frameworks to add to the project|
|
132
145
|
|--[no-]pod-repo-update|Update the local podspec repo before installing (default: yes)|
|
133
146
|
|--[no-]validate|Validate Universal Link configuration (default: yes)|
|
134
147
|
|--[no-]force|Update project even if Universal Link validation fails (default: no)|
|
135
148
|
|--[no-]add-sdk|Add the Branch framework to the project (default: yes)|
|
136
149
|
|--[no-]patch-source|Add Branch SDK calls to the AppDelegate (default: yes)|
|
137
|
-
|--
|
150
|
+
|--commit [message]|Commit the results to Git|
|
151
|
+
|--[no-]check-repo-changes|Check for uncommitted changes to a git repo (default: yes)|
|
138
152
|
|
139
|
-
All parameters are optional. A live key or test key, or both is required, as well as at least one domain.
|
140
|
-
Specify --live-key, --test-key or both and --app-link-subdomain, --domains or both. If these are not
|
141
|
-
specified, this command will prompt you for the information.
|
142
153
|
|
143
154
|
#### Examples
|
144
155
|
|
156
|
+
|
145
157
|
##### Test without validation (can use dummy keys and domains)
|
146
158
|
|
147
159
|
```bash
|
148
160
|
branch_io setup -L key_live_xxxx -D myapp.app.link --no-validate
|
149
161
|
```
|
150
162
|
|
163
|
+
|
151
164
|
##### Use both live and test keys
|
152
165
|
|
153
166
|
```bash
|
154
167
|
branch_io setup -L key_live_xxxx -T key_test_yyyy -D myapp.app.link
|
155
168
|
```
|
156
169
|
|
170
|
+
|
157
171
|
##### Use custom or non-Branch domains
|
158
172
|
|
159
173
|
```bash
|
160
174
|
branch_io setup -D myapp.app.link,example.com,www.example.com
|
161
175
|
```
|
162
176
|
|
177
|
+
|
163
178
|
##### Avoid pod repo update
|
164
179
|
|
165
180
|
```bash
|
166
181
|
branch_io setup --no-pod-repo-update
|
167
182
|
```
|
168
183
|
|
184
|
+
|
169
185
|
##### Install using carthage bootstrap
|
170
186
|
|
171
187
|
```bash
|
172
188
|
branch_io --carthage-command "bootstrap --no-use-binaries"
|
173
189
|
```
|
174
190
|
|
191
|
+
|
192
|
+
|
193
|
+
|
175
194
|
### Validate command
|
176
195
|
|
177
196
|
```bash
|
178
197
|
branch_io validate [OPTIONS]
|
179
198
|
```
|
180
199
|
|
181
|
-
This command validates all Universal Link domains configured in a project without making any
|
182
|
-
It validates both Branch and non-Branch domains. Unlike web-based Universal
|
183
|
-
this command operates directly on the project. It finds the bundle and
|
184
|
-
signing team identifiers in the project as well as the app's Associated Domains.
|
185
|
-
|
186
|
-
|
200
|
+
This command validates all Universal Link domains configured in a project without making any
|
201
|
+
modification. It validates both Branch and non-Branch domains. Unlike web-based Universal
|
202
|
+
Link validators, this command operates directly on the project. It finds the bundle and
|
203
|
+
signing team identifiers in the project as well as the app's Associated Domains. It requests
|
204
|
+
the apple-app-site-association file for each domain and validates the file against the
|
205
|
+
project's settings.
|
187
206
|
|
188
207
|
Only app targets are supported for this command. By default, it will validate the first.
|
189
208
|
If your project has multiple app targets, specify the `--target` option to validate other
|
190
209
|
targets.
|
191
210
|
|
211
|
+
All parameters are optional. If `--domains` is specified, the list of Universal Link domains in
|
212
|
+
the Associated Domains entitlement must exactly match this list, without regard to order. If
|
213
|
+
no `--domains` are provided, validation passes if at least one Universal Link domain is
|
214
|
+
configured and passes validation, and no Universal Link domain is present that does not pass
|
215
|
+
validation.
|
216
|
+
|
217
|
+
See https://github.com/BranchMetrics/branch_io_cli#validate-command for more information.
|
218
|
+
|
219
|
+
|
192
220
|
#### Options
|
193
221
|
|
194
222
|
|Option|Description|
|
@@ -196,18 +224,13 @@ targets.
|
|
196
224
|
|-h, --help|Prints a list of commands or help for each command|
|
197
225
|
|-v, --version|Prints the current version of the CLI|
|
198
226
|
|-t, --trace|Prints a stack trace when exceptions are raised|
|
199
|
-
|-D, --domains example.com,www.example.com|Comma-separated list of domains
|
227
|
+
|-D, --domains example.com,www.example.com|Comma-separated list of domains to validate (Branch domains or non-Branch domains) (default: [])|
|
200
228
|
|--xcodeproj MyProject.xcodeproj|Path to an Xcode project to update|
|
201
|
-
|--target MyAppTarget|Name of a target to
|
229
|
+
|--target MyAppTarget|Name of a target to validate in the Xcode project|
|
230
|
+
|
202
231
|
|
203
|
-
All parameters are optional. If `--domains` is specified, the list of Universal Link domains in the
|
204
|
-
Associated Domains entitlement must exactly match this list, without regard to order. If no `--domains`
|
205
|
-
are provided, validation passes if at least one Universal Link domain is configured and passes validation,
|
206
|
-
and no Universal Link domain is present that does not pass validation.
|
207
232
|
|
208
|
-
#### Return value
|
209
233
|
|
210
|
-
If validation passes, this command returns 0. If validation fails, it returns 1.
|
211
234
|
|
212
235
|
### Report command
|
213
236
|
|
@@ -220,6 +243,7 @@ _Work in progress_
|
|
220
243
|
This command optionally cleans and then builds a workspace or project, generating a verbose
|
221
244
|
report with additional diagnostic information suitable for opening a support ticket.
|
222
245
|
|
246
|
+
|
223
247
|
#### Options
|
224
248
|
|
225
249
|
|Option|Description|
|
@@ -229,18 +253,42 @@ report with additional diagnostic information suitable for opening a support tic
|
|
229
253
|
|-t, --trace|Prints a stack trace when exceptions are raised|
|
230
254
|
|--workspace MyProject.xcworkspace|Path to an Xcode workspace|
|
231
255
|
|--xcodeproj MyProject.xcodeproj|Path to an Xcode project|
|
232
|
-
|--
|
233
|
-
|--
|
234
|
-
|--configuration Debug/Release/
|
235
|
-
|--sdk
|
236
|
-
|--[no-]clean|Clean before building (default: yes)|
|
237
|
-
|-H, --[no-]header-only|Show a diagnostic header and exit without cleaning or building (default: no)|
|
238
|
-
|--[no-]pod-repo-update|Update the local podspec repo before installing (default: yes)|
|
256
|
+
|--scheme MyProjectScheme|A scheme from the project or workspace to build|
|
257
|
+
|--target MyProjectTarget|A target to build|
|
258
|
+
|--configuration Debug/Release/CustomConfigName|The build configuration to use (default: Scheme-dependent)|
|
259
|
+
|--sdk iphoneos|Passed as -sdk to xcodebuild (default: iphonesimulator)|
|
239
260
|
|--podfile /path/to/Podfile|Path to the Podfile for the project|
|
240
261
|
|--cartfile /path/to/Cartfile|Path to the Cartfile for the project|
|
241
|
-
|
262
|
+
|--[no-]clean|Clean before attempting to build (default: yes)|
|
263
|
+
|-H, --[no-]header-only|Write a report header to standard output and exit (default: no)|
|
264
|
+
|--[no-]pod-repo-update|Update the local podspec repo before installing (default: yes)|
|
265
|
+
|-o, --out ./report.txt|Report output path (default: ./report.txt)|
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
<!-- END COMMAND REFERENCE -->
|
242
272
|
|
243
273
|
## Examples
|
244
274
|
|
245
275
|
See the [examples](./examples) folder for several example projects that can be
|
246
276
|
used to exercise the CLI.
|
277
|
+
|
278
|
+
## Rake task
|
279
|
+
|
280
|
+
You can use these commands easily with Rake:
|
281
|
+
|
282
|
+
```Ruby
|
283
|
+
require 'branch_io_cli/rake_task'
|
284
|
+
BranchIOCLI::RakeTask.new
|
285
|
+
```
|
286
|
+
|
287
|
+
This defines the tasks `branch:report`, `branch:setup` and `branch:validate`.
|
288
|
+
Each takes a path or an array of paths for a project directory as the first
|
289
|
+
argument, followed by an options Hash with keys derived from the command-line
|
290
|
+
arguments. For example:
|
291
|
+
|
292
|
+
```Ruby
|
293
|
+
Rake::Task["branch:validate"].invoke ".", domains: %w(example.com www.example.com)
|
294
|
+
```
|
@@ -13,7 +13,7 @@ _branch_io_complete()
|
|
13
13
|
|
14
14
|
setup_opts="$global_opts -L --live-key -T --test-key -D --domains --app-link-subdomain -U --uri-scheme"
|
15
15
|
setup_opts="$setup_opts --xcodeproj --target --frameworks --podfile --cartfile --carthage-command --setting -s"
|
16
|
-
setup_opts="$setup_opts --test-configurations --no-test-configurations"
|
16
|
+
setup_opts="$setup_opts --test-configurations --no-test-configurations --no-check-repo-changes"
|
17
17
|
# Don't autocomplete the default values here, e.g. --no-force, --pod-repo-update.
|
18
18
|
setup_opts="$setup_opts --no-add-sdk --no-validate --force --no-pod-repo-update --commit --no-patch-source"
|
19
19
|
|
@@ -6,7 +6,7 @@ _branch_io_complete() {
|
|
6
6
|
opts="-h --help -t --trace -v --version"
|
7
7
|
opts="$opts -L --live-key -T --test-key -D --domains --app-link-subdomain -U --uri-scheme"
|
8
8
|
opts="$opts --xcodeproj --target --frameworks --podfile --cartfile --carthage-command --setting -s"
|
9
|
-
opts="$opts --test-configurations --no-test-configurations"
|
9
|
+
opts="$opts --test-configurations --no-test-configurations --no-check-repo-changes"
|
10
10
|
# Don't autocomplete the default values here, e.g. --no-force, --pod-repo-update.
|
11
11
|
opts="$opts --no-add-sdk --no-validate --force --no-pod-repo-update --commit --no-patch-source"
|
12
12
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<%= header "#{@command.command_name.to_s.capitalize} command", 3 %>
|
2
|
+
|
3
|
+
```bash
|
4
|
+
branch_io <%= @command.command_name %> [OPTIONS]
|
5
|
+
```
|
6
|
+
|
7
|
+
<%= render "#{@command.command_name}_description" %>
|
8
|
+
|
9
|
+
<%= header "Options", 4 %>
|
10
|
+
|
11
|
+
|Option|Description|
|
12
|
+
|------|-----------|
|
13
|
+
|-h, --help|Prints a list of commands or help for each command|
|
14
|
+
|-v, --version|Prints the current version of the CLI|
|
15
|
+
|-t, --trace|Prints a stack trace when exceptions are raised|
|
16
|
+
<%= table_options %>
|
17
|
+
|
18
|
+
<% if @command.respond_to?(:examples) && !@command.examples.blank? %>
|
19
|
+
<%= header "Examples", 4 %>
|
20
|
+
<% @command.examples.each_key do |text| %>
|
21
|
+
<% example = @command.examples[text] %>
|
22
|
+
<%= header text, 5 %>
|
23
|
+
|
24
|
+
```bash
|
25
|
+
<%= example %>
|
26
|
+
```
|
27
|
+
<% end %>
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
<% if @command.respond_to?(:return_value) && !@command.return_value.nil? %>
|
31
|
+
<% end %>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
Integrates the Branch SDK into a native app project. This currently supports iOS only.
|
2
|
+
It will infer the project location if there is exactly one .xcodeproj anywhere under
|
3
|
+
the current directory, excluding any in a Pods or Carthage folder. Otherwise, specify
|
4
|
+
the project location using the <%= option :xcodeproj %> option, or the CLI will prompt you for the
|
5
|
+
location.
|
6
|
+
|
7
|
+
If a Podfile or Cartfile is detected, the Branch SDK will be added to the relevant
|
8
|
+
configuration file and the dependencies updated to include the Branch framework.
|
9
|
+
This behavior may be suppressed using <%= option :no_add_sdk %>. If no Podfile or Cartfile
|
10
|
+
is found, and Branch.framework is not already among the project's dependencies,
|
11
|
+
you will be prompted for a number of choices, including setting up CocoaPods or
|
12
|
+
Carthage for the project or directly installing the Branch.framework.
|
13
|
+
|
14
|
+
By default, all supplied Universal Link domains are validated. If validation passes,
|
15
|
+
the setup continues. If validation fails, no further action is taken. Suppress
|
16
|
+
validation using <%= option :no_validate %> or force changes when validation fails using
|
17
|
+
<%= option :force %>.
|
18
|
+
|
19
|
+
By default, this command will look for the first app target in the project. Test
|
20
|
+
targets are not supported. To set up an extension target, supply the <%= option :target %> option.
|
21
|
+
|
22
|
+
All relevant target settings are modified. The Branch keys are added to the Info.plist,
|
23
|
+
along with the <%= highlight 'branch_universal_link_domains' %> key for custom domains (when <%= option :domains %>
|
24
|
+
is used). For app targets, all domains are added to the project's Associated Domains
|
25
|
+
entitlement. An entitlements file is also added for app targets if none is found.
|
26
|
+
Optionally, if <%= option :frameworks %> is specified, this command can add a list of system
|
27
|
+
frameworks to the target's dependencies (e.g., AdSupport, CoreSpotlight, SafariServices).
|
28
|
+
|
29
|
+
A language-specific patch is applied to the AppDelegate (Swift or Objective-C).
|
30
|
+
This can be suppressed using <%= option :no_patch_source %>.
|
31
|
+
|
32
|
+
<%= header 'Prerequisites', 4 %>
|
33
|
+
|
34
|
+
Before using this command, make sure to set up your app in the Branch Dashboard
|
35
|
+
(https://dashboard.branch.io). See https://docs.branch.io/pages/dashboard/integrate/
|
36
|
+
for details. To use the <%= highlight 'setup' %> command, you need:
|
37
|
+
|
38
|
+
- Branch key(s), either live, test or both
|
39
|
+
- Domain name(s) used for Branch links
|
40
|
+
- Location of your Xcode project (may be inferred in simple projects)
|
41
|
+
|
42
|
+
If using the <%= option :commit %> option, <%= highlight 'git' %> is required. If not using <%= option :no_add_sdk %>,
|
43
|
+
the <%= highlight 'pod' %> or <%= highlight 'carthage' %> command may be required. If not found, the CLI will
|
44
|
+
offer to install and set up these command-line tools for you. Alternately, you can arrange
|
45
|
+
that the relevant commands are available in your <%= highlight 'PATH' %>.
|
46
|
+
|
47
|
+
All parameters are optional. A live key or test key, or both is required, as well
|
48
|
+
as at least one domain. Specify <%= option :live_key %>, <%= option :test_key %> or both and <%= option :app_link_subdomain %>,
|
49
|
+
<%= option :domains %> or both. If these are not specified, this command will prompt you
|
50
|
+
for this information.
|
51
|
+
|
52
|
+
See https://github.com/BranchMetrics/branch_io_cli#setup-command for more information.
|
@@ -0,0 +1,18 @@
|
|
1
|
+
This command validates all Universal Link domains configured in a project without making any
|
2
|
+
modification. It validates both Branch and non-Branch domains. Unlike web-based Universal
|
3
|
+
Link validators, this command operates directly on the project. It finds the bundle and
|
4
|
+
signing team identifiers in the project as well as the app's Associated Domains. It requests
|
5
|
+
the apple-app-site-association file for each domain and validates the file against the
|
6
|
+
project's settings.
|
7
|
+
|
8
|
+
Only app targets are supported for this command. By default, it will validate the first.
|
9
|
+
If your project has multiple app targets, specify the <%= option :target %> option to validate other
|
10
|
+
targets.
|
11
|
+
|
12
|
+
All parameters are optional. If <%= option :domains %> is specified, the list of Universal Link domains in
|
13
|
+
the Associated Domains entitlement must exactly match this list, without regard to order. If
|
14
|
+
no <%= option :domains %> are provided, validation passes if at least one Universal Link domain is
|
15
|
+
configured and passes validation, and no Universal Link domain is present that does not pass
|
16
|
+
validation.
|
17
|
+
|
18
|
+
See https://github.com/BranchMetrics/branch_io_cli#validate-command for more information.
|
data/lib/branch_io_cli.rb
CHANGED
data/lib/branch_io_cli/cli.rb
CHANGED
@@ -1,116 +1,31 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
require "commander"
|
3
|
+
require "branch_io_cli/format"
|
3
4
|
|
4
5
|
module BranchIOCLI
|
5
6
|
class CLI
|
6
7
|
include Commander::Methods
|
8
|
+
include Format::CommanderFormat
|
7
9
|
|
8
10
|
def run
|
9
11
|
program :name, "Branch.io command-line interface"
|
10
12
|
program :version, VERSION
|
11
|
-
program :description,
|
12
|
-
Command-line tool to integrate the Branch SDK into mobile app projects (currently
|
13
|
-
iOS only) and validate Universal Link domains
|
14
|
-
EOF
|
13
|
+
program :description, render(:program_description)
|
15
14
|
|
16
15
|
command :setup do |c|
|
17
16
|
c.syntax = "branch_io setup [OPTIONS]"
|
18
17
|
c.summary = "Integrates the Branch SDK into a native app project"
|
19
|
-
c.description =
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
configuration file and the dependencies updated to include the Branch framework.
|
28
|
-
This behavior may be suppressed using <%= color('--no-add-sdk', BOLD) %>. If no Podfile or Cartfile
|
29
|
-
is found, and Branch.framework is not already among the project's dependencies,
|
30
|
-
you will be prompted for a number of choices, including setting up CocoaPods or
|
31
|
-
Carthage for the project or directly installing the Branch.framework.
|
32
|
-
|
33
|
-
By default, all supplied Universal Link domains are validated. If validation passes,
|
34
|
-
the setup continues. If validation fails, no further action is taken. Suppress
|
35
|
-
validation using <%= color('--no-validate', BOLD) %> or force changes when validation fails using
|
36
|
-
<%= color('--force', BOLD) %>.
|
37
|
-
|
38
|
-
By default, this command will look for the first app target in the project. Test
|
39
|
-
targets are not supported. To set up an extension target, supply the <%= color('--target', BOLD) %> option.
|
40
|
-
|
41
|
-
All relevant target settings are modified. The Branch keys are added to the Info.plist,
|
42
|
-
along with the <%= color('branch_universal_link_domains', BOLD) %> key for custom domains (when <%= color('--domains', BOLD) %>
|
43
|
-
is used). For app targets, all domains are added to the project's Associated Domains
|
44
|
-
entitlement. An entitlements file is also added for app targets if none is found.
|
45
|
-
Optionally, if <%= color('--frameworks', BOLD) %> is specified, this command can add a list of system
|
46
|
-
frameworks to the target's dependencies (e.g., AdSupport, CoreSpotlight, SafariServices).
|
47
|
-
|
48
|
-
A language-specific patch is applied to the AppDelegate (Swift or Objective-C).
|
49
|
-
This can be suppressed using <%= color('--no-patch-source', BOLD) %>.
|
50
|
-
|
51
|
-
<%= color('Prerequisites', BOLD) %>
|
52
|
-
|
53
|
-
Before using this command, make sure to set up your app in the Branch Dashboard
|
54
|
-
(https://dashboard.branch.io). See https://docs.branch.io/pages/dashboard/integrate/
|
55
|
-
for details. To use the <%= color('setup', BOLD) %> command, you need:
|
56
|
-
|
57
|
-
- Branch key(s), either live, test or both
|
58
|
-
- Domain name(s) used for Branch links
|
59
|
-
- Location of your Xcode project (may be inferred in simple projects)
|
60
|
-
|
61
|
-
If using the <%= color('--commit', BOLD) %> option, <%= color('git', BOLD) %> is required. If not using <%= color('--no-add-sdk', BOLD) %>,
|
62
|
-
the <%= color('pod', BOLD) %> or <%= color('carthage', BOLD) %> command may be required. If not found, the CLI will
|
63
|
-
offer to install and set up these command-line tools for you. Alternately, you can arrange
|
64
|
-
that the relevant commands are available in your <%= color('PATH', BOLD) %>.
|
65
|
-
|
66
|
-
All parameters are optional. A live key or test key, or both is required, as well
|
67
|
-
as at least one domain. Specify <%= color('--live-key', BOLD) %>, <%= color('--test-key', BOLD) %> or both and <%= color('--app-link-subdomain', BOLD) %>,
|
68
|
-
<%= color('--domains', BOLD) %> or both. If these are not specified, this command will prompt you
|
69
|
-
for this information.
|
70
|
-
|
71
|
-
See https://github.com/BranchMetrics/branch_io_cli#setup-command for more information.
|
72
|
-
EOF
|
73
|
-
|
74
|
-
# Required Branch params
|
75
|
-
c.option "-L", "--live-key key_live_xxxx", String, "Branch live key"
|
76
|
-
c.option "-T", "--test-key key_test_yyyy", String, "Branch test key"
|
77
|
-
c.option "--app-link-subdomain myapp", String, "Branch app.link subdomain, e.g. myapp for myapp.app.link"
|
78
|
-
c.option "-D", "--domains example.com,www.example.com", Array, "Comma-separated list of custom domain(s) or non-Branch domain(s)"
|
79
|
-
c.option "-U", "--uri-scheme myurischeme[://]", String, "Custom URI scheme used in the Branch Dashboard for this app"
|
80
|
-
c.option "-s", "--setting [BRANCH_KEY_SETTING]", String, "Use a custom build setting for the Branch key (default: Use Info.plist)"
|
81
|
-
c.option "--[no-]test-configurations [config1,config2]", Array, "List of configurations that use the test key with a custom build setting (default: Debug configurations)"
|
82
|
-
|
83
|
-
c.option "--xcodeproj MyProject.xcodeproj", String, "Path to an Xcode project to update"
|
84
|
-
c.option "--target MyAppTarget", String, "Name of a target to modify in the Xcode project"
|
85
|
-
c.option "--podfile /path/to/Podfile", String, "Path to the Podfile for the project"
|
86
|
-
c.option "--cartfile /path/to/Cartfile", String, "Path to the Cartfile for the project"
|
87
|
-
c.option "--carthage-command <command>", String, "Command to run when installing from Carthage (default: update --platform ios)"
|
88
|
-
c.option "--frameworks AdSupport,CoreSpotlight,SafariServices", Array, "Comma-separated list of system frameworks to add to the project"
|
89
|
-
|
90
|
-
c.option "--[no-]pod-repo-update", "Update the local podspec repo before installing (default: yes)"
|
91
|
-
c.option "--[no-]validate", "Validate Universal Link configuration (default: yes)"
|
92
|
-
c.option "--[no-]force", "Update project even if Universal Link validation fails (default: no)"
|
93
|
-
c.option "--[no-]add-sdk", "Add the Branch framework to the project (default: yes)"
|
94
|
-
c.option "--[no-]patch-source", "Add Branch SDK calls to the AppDelegate (default: yes)"
|
95
|
-
c.option "--[no-]commit [message]", String, "Commit the results to Git (default: no)"
|
96
|
-
|
97
|
-
c.example "Test without validation (can use dummy keys and domains)", "branch_io setup -L key_live_xxxx -D myapp.app.link --no-validate"
|
98
|
-
c.example "Use both live and test keys", "branch_io setup -L key_live_xxxx -T key_test_yyyy -D myapp.app.link"
|
99
|
-
c.example "Use custom or non-Branch domains", "branch_io setup -D myapp.app.link,example.com,www.example.com"
|
100
|
-
c.example "Avoid pod repo update", "branch_io setup --no-pod-repo-update"
|
101
|
-
c.example "Install using carthage bootstrap", "branch_io --carthage-command \"bootstrap --no-use-binaries\""
|
18
|
+
c.description = render :setup_description
|
19
|
+
|
20
|
+
add_options_for_command :setup, c
|
21
|
+
|
22
|
+
Command::SetupCommand.examples.each_key do |text|
|
23
|
+
example = Command::SetupCommand.examples[text]
|
24
|
+
c.example text, example
|
25
|
+
end
|
102
26
|
|
103
27
|
c.action do |args, options|
|
104
|
-
options.default
|
105
|
-
# Defaults for boolean options
|
106
|
-
pod_repo_update: true,
|
107
|
-
validate: true,
|
108
|
-
force: false,
|
109
|
-
add_sdk: true,
|
110
|
-
patch_source: true,
|
111
|
-
commit: false,
|
112
|
-
carthage_command: "update --platform ios"
|
113
|
-
)
|
28
|
+
options.default Configuration::SetupConfiguration.defaults
|
114
29
|
Command::SetupCommand.new(options).run!
|
115
30
|
end
|
116
31
|
end
|
@@ -118,32 +33,12 @@ EOF
|
|
118
33
|
command :validate do |c|
|
119
34
|
c.syntax = "branch_io validate [OPTIONS]"
|
120
35
|
c.summary = "Validates all Universal Link domains configured in a project"
|
121
|
-
c.description =
|
122
|
-
|
123
|
-
|
124
|
-
Link validators, this command operates directly on the project. It finds the bundle and
|
125
|
-
signing team identifiers in the project as well as the app's Associated Domains. It requests
|
126
|
-
the apple-app-site-association file for each domain and validates the file against the
|
127
|
-
project's settings.
|
128
|
-
|
129
|
-
Only app targets are supported for this command. By default, it will validate the first.
|
130
|
-
If your project has multiple app targets, specify the <%= color('--target', BOLD) %> option to validate other
|
131
|
-
targets.
|
132
|
-
|
133
|
-
All parameters are optional. If <%= color('--domains', BOLD) %> is specified, the list of Universal Link domains in
|
134
|
-
the Associated Domains entitlement must exactly match this list, without regard to order. If
|
135
|
-
no <%= color('--domains', BOLD) %> are provided, validation passes if at least one Universal Link domain is
|
136
|
-
configured and passes validation, and no Universal Link domain is present that does not pass
|
137
|
-
validation.
|
138
|
-
|
139
|
-
See https://github.com/BranchMetrics/branch_io_cli#validate-command for more information.
|
140
|
-
EOF
|
141
|
-
|
142
|
-
c.option "-D", "--domains example.com,www.example.com", Array, "Comma-separated list of domains to validate (Branch domains or non-Branch domains)"
|
143
|
-
c.option "--xcodeproj MyProject.xcodeproj", String, "Path to an Xcode project to update"
|
144
|
-
c.option "--target MyAppTarget", String, "Name of a target to modify in the Xcode project"
|
36
|
+
c.description = render :validate_description
|
37
|
+
|
38
|
+
add_options_for_command :validate, c
|
145
39
|
|
146
40
|
c.action do |args, options|
|
41
|
+
options.default Configuration::ValidateConfiguration.defaults
|
147
42
|
valid = Command::ValidateCommand.new(options).run!
|
148
43
|
exit_code = valid ? 0 : 1
|
149
44
|
exit exit_code
|
@@ -153,39 +48,47 @@ EOF
|
|
153
48
|
command :report do |c|
|
154
49
|
c.syntax = "branch_io report [OPTIONS]"
|
155
50
|
c.summary = "Generate and optionally submit a build diagnostic report."
|
156
|
-
c.description =
|
157
|
-
|
158
|
-
|
159
|
-
This command optionally cleans and then builds a workspace or project, generating a verbose
|
160
|
-
report with additional diagnostic information suitable for opening a support ticket.
|
161
|
-
EOF
|
162
|
-
|
163
|
-
c.option "--xcodeproj MyProject.xcodeproj", String, "Path to an Xcode project"
|
164
|
-
c.option "--workspace MyProject.xcworkspace", String, "Path to an Xcode workspace"
|
165
|
-
c.option "--scheme MyProjectScheme", String, "A scheme from the project or workspace to build"
|
166
|
-
c.option "--target MyProjectTarget", String, "A target to build"
|
167
|
-
c.option "--configuration Debug|Release|CustomConfigName", String, "The build configuration to use (default: Scheme-dependent)"
|
168
|
-
c.option "--sdk iphonesimulator", String, "Passed as -sdk to xcodebuild (default: iphonesimulator)"
|
169
|
-
c.option "--podfile /path/to/Podfile", String, "Path to the Podfile for the project"
|
170
|
-
c.option "--cartfile /path/to/Cartfile", String, "Path to the Cartfile for the project"
|
171
|
-
c.option "--[no-]clean", "Clean before attempting to build (default: yes)"
|
172
|
-
c.option "-H", "--[no-]header-only", "Write a report header to standard output and exit"
|
173
|
-
c.option "--[no-]pod-repo-update", "Update the local podspec repo before installing (default: yes)"
|
174
|
-
c.option "-o", "--out ./report.txt", String, "Report output path (default: ./report.txt)"
|
51
|
+
c.description = render :report_description
|
52
|
+
|
53
|
+
add_options_for_command :report, c
|
175
54
|
|
176
55
|
c.action do |args, options|
|
177
|
-
options.default
|
178
|
-
clean: true,
|
179
|
-
header_only: false,
|
180
|
-
sdk: "iphonesimulator",
|
181
|
-
out: "./report.txt",
|
182
|
-
pod_repo_update: true
|
183
|
-
)
|
56
|
+
options.default Configuration::ReportConfiguration.defaults
|
184
57
|
Command::ReportCommand.new(options).run!
|
185
58
|
end
|
186
59
|
end
|
187
60
|
|
188
61
|
run!
|
189
62
|
end
|
63
|
+
|
64
|
+
def add_options_for_command(name, c)
|
65
|
+
configuration_class = Object.const_get("BranchIOCLI")
|
66
|
+
.const_get("Configuration")
|
67
|
+
.const_get("#{name.to_s.capitalize}Configuration")
|
68
|
+
available_options = configuration_class.available_options
|
69
|
+
available_options.each do |option|
|
70
|
+
args = option.aliases
|
71
|
+
declaration = "--"
|
72
|
+
declaration += "[no-]" if option.negatable
|
73
|
+
declaration += "#{option.name.to_s.gsub(/_/, '-')} "
|
74
|
+
if option.example
|
75
|
+
declaration += "[" if option.argument_optional
|
76
|
+
declaration += option.example
|
77
|
+
declaration += "]" if option.argument_optional
|
78
|
+
end
|
79
|
+
args << declaration
|
80
|
+
args << option.type if option.type
|
81
|
+
|
82
|
+
if option.type.nil?
|
83
|
+
default_value = option.default_value ? "yes" : "no"
|
84
|
+
else
|
85
|
+
default_value = option.default_value
|
86
|
+
end
|
87
|
+
|
88
|
+
default_string = default_value ? " (default: #{default_value})" : nil
|
89
|
+
args << "#{option.description}#{default_string}"
|
90
|
+
c.option(*args)
|
91
|
+
end
|
92
|
+
end
|
190
93
|
end
|
191
94
|
end
|