@rage-against-the-pixel/unity-cli 1.8.3 → 2.0.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.
package/README.md CHANGED
@@ -2,7 +2,12 @@
2
2
 
3
3
  [![Discord](https://img.shields.io/discord/855294214065487932.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/xQgMW9ufN4) [![NPM Version](https://img.shields.io/npm/v/%40rage-against-the-pixel%2Funity-cli)](https://www.npmjs.com/package/@rage-against-the-pixel/unity-cli) [![NPM Downloads](https://img.shields.io/npm/dw/%40rage-against-the-pixel%2Funity-cli)](https://www.npmjs.com/package/@rage-against-the-pixel/unity-cli)
4
4
 
5
- A powerful command line utility for the Unity Game Engine. Automate Unity project setup, editor installation, license management, building, and more—ideal for CI/CD pipelines and developer workflows.
5
+ A powerful all-in-one command line utility for the Unity Game Engine. Automate Unity project setup, editor installation, license management, building, upm package signing and more! Built specifially for CI/CD pipelines and developer workflows.
6
+
7
+ > [!IMPORTANT]
8
+ > The documented commands can download, install, or run software from Unity (Hub, Editor, Package Manager CLI, licensing tools, and similar binaries from Unity CDNs or services). That use is covered by Unity’s [Terms of Service](https://unity.com/legal/terms-of-service), the [Unity Editor Software Additional Terms](https://unity.com/legal/terms-of-service/software), and any other [Additional Terms](https://unity.com/legal/additional-terms) that apply to the offerings you use. Keep your Unity account, seats, and subscriptions in order, and read the agreements that actually bind you before relying on automation in CI or production. The full legal index is at [Unity Legal](https://unity.com/legal).
9
+ >
10
+ > Unity, Unity Hub, Unity Editor, and related names and logos are trademarks and other intellectual property of Unity Technologies Inc. and its affiliates. This project is independent and not affiliated with Unity. Names are used here only to describe what the commands talk to. If you ship Unity marks, artwork, or binaries, use Unity’s guidance, including their [IP policy](https://unity.com/legal/ip-policy-takedown-requests).
6
11
 
7
12
  ## Table of Contents
8
13
 
@@ -10,30 +15,34 @@ A powerful command line utility for the Unity Game Engine. Automate Unity projec
10
15
  - [Installation](#installation)
11
16
  - [Usage](#usage)
12
17
  - [Common Commands](#common-commands)
13
- - [Auth](#auth)
14
- - [License Version](#license-version)
15
- - [Activate License](#activate-license)
16
- - [Return License](#return-license)
17
- - [License Context](#license-context)
18
- - [Licensing Client Logs](#licensing-client-logs)
19
- - [Licensing Audit Logs](#licensing-audit-logs)
20
- - [Unity Hub](#unity-hub)
21
- - [Hub Version](#hub-version)
22
- - [Hub Path](#hub-path)
23
- - [Hub Logs](#hub-logs)
24
- - [Package Manager Logs](#package-manager-logs)
25
- - [Unity Hub Install](#unity-hub-install)
26
- - [Run Unity Hub Commands](#run-unity-hub-commands)
27
- - [Setup Unity Editor](#setup-unity-editor)
28
- - [Uninstall Unity Editor](#uninstall-unity-editor)
29
- - [Unity Editor](#unity-editor)
30
- - [Run Unity Editor Commands](#run-unity-editor-commands)
31
- - [List Project Templates](#list-project-templates)
32
- - [Create Unity Project](#create-unity-project)
33
- - [Open Unity Project](#open-unity-project)
34
- - [Unity Editor Logs](#unity-editor-logs)
35
- - [Unity Package Manager](#unity-package-manager)
36
- - [Sign a Unity Package](#sign-a-unity-package)
18
+ - [Install all tools](#install-all-tools)
19
+ - [Auth](#auth)
20
+ - [License Version](#license-version)
21
+ - [Activate License](#activate-license)
22
+ - [Return License](#return-license)
23
+ - [License Context](#license-context)
24
+ - [Licensing Client Logs](#licensing-client-logs)
25
+ - [Licensing Audit Logs](#licensing-audit-logs)
26
+ - [Unity Hub](#unity-hub)
27
+ - [Hub Version](#hub-version)
28
+ - [Hub Path](#hub-path)
29
+ - [Hub Logs](#hub-logs)
30
+ - [Package Manager Logs](#package-manager-logs)
31
+ - [Unity Hub Install](#unity-hub-install)
32
+ - [Run Unity Hub Commands](#run-unity-hub-commands)
33
+ - [Setup Unity Editor](#setup-unity-editor)
34
+ - [Uninstall Unity Editor](#uninstall-unity-editor)
35
+ - [Unity Editor](#unity-editor)
36
+ - [Run Unity Editor Commands](#run-unity-editor-commands)
37
+ - [List Project Templates](#list-project-templates)
38
+ - [Create Unity Project](#create-unity-project)
39
+ - [Open Unity Project](#open-unity-project)
40
+ - [Unity Editor Logs](#unity-editor-logs)
41
+ - [Unity Package Manager](#unity-package-manager)
42
+ - [Install Unity Package Manager](#install-unity-package-manager)
43
+ - [UPM Version](#upm-version)
44
+ - [Pack a Unity Package](#pack-a-unity-package)
45
+ - [Deprecated Sign Package Command](#deprecated-sign-package-command)
37
46
  - [Logging](#logging)
38
47
  - [Local cli](#local-cli)
39
48
  - [Github Actions](#github-actions)
@@ -81,9 +90,23 @@ With options always using double dashes (`--option`) and arguments passed direct
81
90
  unity-cli --help
82
91
  ```
83
92
 
84
- #### Auth
93
+ ### Install all tools
94
+
95
+ `install-all-tools`: Install the Unity Hub and the Unity Package Manager cli (pack/sign). Runs `hub-install` and `upm-install` in parallel. Use `unity-cli install-all-tools --help` for all options.
96
+
97
+ - `--verbose`: Enable verbose logging.
98
+ - `--auto-update`: If any tools are installed, they're automatically updated to the latest versions. Cannot be used with `--hub-version` or `--upm-version`.
99
+ - `--hub-version <version>`: Specify to install a specific version of Unity Hub. Cannot be used with `--auto-update`.
100
+ - `--upm-version <version>`: Specify to install a specific version of the Unity Package Manager cli. Cannot be used with `--auto-update`.
101
+ - `--json`: Print hub path, UPM CLI version, and resolved UPM CLI path as JSON.
102
+
103
+ ```bash
104
+ unity-cli install-all-tools --auto-update
105
+ ```
106
+
107
+ ### Auth
85
108
 
86
- ##### License Version
109
+ #### License Version
87
110
 
88
111
  `license-version`: Print the Unity License Client version.
89
112
 
@@ -101,7 +124,7 @@ unity-cli license-version
101
124
  - `-s`, `--serial`: License serial number. Required when activating a professional license.
102
125
  - `-c`, `--config`: Path to the configuration file, raw JSON, or base64 encoded JSON string. Required when activating a floating license.
103
126
  - `--json`: Prints the last line of output as JSON string.
104
- - `--verbose`: Enable verbose output.
127
+ - `--verbose`: Enable verbose logging.
105
128
 
106
129
  ```bash
107
130
  unity-cli activate-license --license personal --email <your-email> --password <your-password>
@@ -113,21 +136,21 @@ unity-cli activate-license --license personal --email <your-email> --password <y
113
136
 
114
137
  - `-l`, `--license`: License type (personal, professional, floating)
115
138
  - `-t`, `--token`: Floating license token. Required when returning a floating license.
116
- - `--verbose`: Enable verbose output.
139
+ - `--verbose`: Enable verbose logging.
117
140
 
118
141
  ```bash
119
142
  unity-cli return-license --license personal
120
143
  ```
121
144
 
122
- ##### License Context
145
+ #### License Context
123
146
 
124
- `license-context`: Prints the current license context information.
147
+ `license-context`: Print the current license context information.
125
148
 
126
149
  ```bash
127
150
  unity-cli license-context
128
151
  ```
129
152
 
130
- ##### Licensing Client Logs
153
+ #### Licensing Client Logs
131
154
 
132
155
  `licensing-client-logs`: Prints the path to the Unity Licensing Client log file.
133
156
 
@@ -135,7 +158,7 @@ unity-cli license-context
135
158
  unity-cli licensing-client-logs
136
159
  ```
137
160
 
138
- ##### Licensing Audit Logs
161
+ #### Licensing Audit Logs
139
162
 
140
163
  `licensing-audit-logs`: Prints the path to the Unity Licensing Client audit log.
141
164
 
@@ -143,9 +166,9 @@ unity-cli licensing-client-logs
143
166
  unity-cli licensing-audit-logs
144
167
  ```
145
168
 
146
- #### Unity Hub
169
+ ### Unity Hub
147
170
 
148
- ##### Hub Version
171
+ #### Hub Version
149
172
 
150
173
  `hub-version`: Print the Unity Hub version.
151
174
 
@@ -153,15 +176,17 @@ unity-cli licensing-audit-logs
153
176
  unity-cli hub-version
154
177
  ```
155
178
 
156
- ##### Hub Path
179
+ #### Hub Path
157
180
 
158
- `hub-path`: Print the Unity Hub executable path.
181
+ `hub-path`: Print the path to the Unity Hub executable.
182
+
183
+ - `--json`: Prints the last line of output as JSON string.
159
184
 
160
185
  ```bash
161
186
  unity-cli hub-path
162
187
  ```
163
188
 
164
- ##### Hub Logs
189
+ #### Hub Logs
165
190
 
166
191
  `hub-logs`: Prints the path to the Unity Hub log file.
167
192
 
@@ -169,7 +194,7 @@ unity-cli hub-path
169
194
  unity-cli hub-logs
170
195
  ```
171
196
 
172
- ##### Package Manager Logs
197
+ #### Package Manager Logs
173
198
 
174
199
  `package-manager-logs`: Prints the path to the Unity Package Manager log file.
175
200
 
@@ -177,24 +202,24 @@ unity-cli hub-logs
177
202
  unity-cli package-manager-logs
178
203
  ```
179
204
 
180
- ##### Unity Hub Install
205
+ #### Unity Hub Install
181
206
 
182
- `hub-install [options]`: Install or update the Unity Hub
207
+ `hub-install [options]`: Install or update the Unity Hub.
183
208
 
184
209
  - `--auto-update`: Automatically updates the Unity Hub if it is already installed. Cannot be used with `--hub-version`.
185
210
  - `--hub-version`: Specify to install a specific version of Unity Hub. Cannot be used with `--auto-update`.
186
- - `--verbose`: Enable verbose output.
187
- - `--json`: Output installation information in JSON format.
211
+ - `--verbose`: Enable verbose logging.
212
+ - `--json`: Prints the last line of output as JSON string.
188
213
 
189
214
  ```bash
190
215
  unity-cli hub-install
191
216
  ```
192
217
 
193
- ##### Run Unity Hub Commands
218
+ #### Run Unity Hub Commands
194
219
 
195
- `hub [options] <args...>`: Run Unity Hub command line arguments (passes args directly to the hub executable).
220
+ `hub [options] <args...>`: Run commands directly to the Unity Hub. (You need not to pass `--headless` or `--` to this command).
196
221
 
197
- - `--verbose`: Enable verbose output.
222
+ - `--verbose`: Enable verbose logging.
198
223
  - `--json`: Prints the last line of output as a json string, which contains the operation results.
199
224
  - `<args...>`: Arguments to pass directly to the Unity Hub executable.
200
225
 
@@ -210,7 +235,7 @@ Gets a list of installed editors:
210
235
  unity-cli hub editors --installed
211
236
  ```
212
237
 
213
- ##### Setup Unity Editor
238
+ #### Setup Unity Editor
214
239
 
215
240
  `setup-unity [options]`: Find or install the Unity Editor for a project or specific version.
216
241
 
@@ -230,7 +255,7 @@ Installs the latest Unity 6 version with Android and iOS modules:
230
255
  unity-cli setup-unity --unity-version 6000 --modules android,ios
231
256
  ```
232
257
 
233
- ##### Uninstall Unity Editor
258
+ #### Uninstall Unity Editor
234
259
 
235
260
  `uninstall-unity [options]`: Uninstall a Unity Editor version.
236
261
 
@@ -244,17 +269,17 @@ unity-cli setup-unity --unity-version 6000 --modules android,ios
244
269
  unity-cli uninstall-unity --unity-version 6000
245
270
  ```
246
271
 
247
- #### Unity Editor
272
+ ### Unity Editor
248
273
 
249
- ##### Run Unity Editor Commands
274
+ #### Run Unity Editor Commands
250
275
 
251
276
  `run [options] <args...>`: Run Unity Editor command line arguments (passes args directly to the editor).
252
277
 
253
278
  - `--unity-editor <unityEditor>` The path to the Unity Editor executable. If unspecified, `--unity-project` or the `UNITY_EDITOR_PATH` environment variable must be set.
254
279
  - `--unity-project <unityProject>` The path to a Unity project. If unspecified, the `UNITY_PROJECT_PATH` environment variable will be used, otherwise no project will be specified.
255
280
  - `--log-name <logName>` The name of the log file.
256
- - `--log-level <logLevel>` Override the logger verbosity (`debug`, `info`, `minimal`, `warning`, `error`). Defaults to `info`.
257
- - `--verbose` Enable verbose logging. (Deprecated, use `--log-level <value>` instead)
281
+ - `--log-level <logLevel>` Override the logger verbosity (debug, info, minimal, warning, error). Defaults to info.
282
+ - `--verbose` Enable verbose logging. Deprecated, use `--log-level` instead.
258
283
  - `<args...>` Arguments to pass directly to the Unity Editor executable.
259
284
 
260
285
  > [!NOTE]
@@ -266,17 +291,15 @@ unity-cli uninstall-unity --unity-version 6000
266
291
  unity-cli run --unity-project <path-to-project> -quit -batchmode -executeMethod StartCommandLineBuild
267
292
  ```
268
293
 
269
- ##### List Project Templates
294
+ #### List Project Templates
270
295
 
271
296
  > [!NOTE]
272
297
  > Regex patterns are supported for the `--template` option. For example, to create a 3D project with either the standard or cross-platform template, you can use `com.unity.template.3d(-cross-platform)?`.
273
298
 
274
299
  `list-project-templates [options]`: List available Unity project templates for an editor.
275
300
 
276
- - `-e`, `--unity-editor <unityEditor>` The path to the Unity Editor executable. If unspecified, `-u`, `--unity-version` or the `UNITY_EDITOR_PATH` environment variable must be set.
277
301
  - `-u`, `--unity-version <unityVersion>` The Unity version to get (e.g. `2020.3.1f1`, `2021.x`, `2022.1.*`, `6000`). If unspecified, then `--unity-editor` must be specified.
278
- - `-c`, `--changeset <changeset>` The Unity changeset to get (e.g. `1234567890ab`).
279
- - `-a`, `--arch <arch>` The Unity architecture to get (e.g. `x86_64`, `arm64`). Defaults to the architecture of the current process.
302
+ - `-e`, `--unity-editor <unityEditor>` The path to the Unity Editor executable. If unspecified, `-u`, `--unity-version` or the `UNITY_EDITOR_PATH` environment variable must be set.
280
303
  - `--verbose` Enable verbose logging.
281
304
  - `--json` Prints the last line of output as JSON string.
282
305
 
@@ -286,9 +309,9 @@ Lists available project templates for Unity 6:
286
309
  unity-cli list-project-templates --unity-version 6000
287
310
  ```
288
311
 
289
- ##### Create Unity Project
312
+ #### Create Unity Project
290
313
 
291
- `create-project [options]`: Create a new Unity project from a template.
314
+ `create-project [options]`: Create a new Unity project.
292
315
 
293
316
  - `-n`, `--name <projectName>` The name of the new Unity project. If unspecified, the project will be created in the specified path or the current working directory.
294
317
  - `-p`, `--path <projectPath>` The path to create the new Unity project. If unspecified, the current working directory will be used.
@@ -305,7 +328,7 @@ Creates a new Unity project named "MyGame" using the latest version of Unity 6 a
305
328
  unity-cli create-project --name "MyGame" --template com.unity.template.3d(-cross-platform)? --unity-version 6000
306
329
  ```
307
330
 
308
- ##### Open Unity Project
331
+ #### Open Unity Project
309
332
 
310
333
  `open-project [options]`: Open a Unity project in the Unity Editor.
311
334
 
@@ -327,7 +350,7 @@ unity-cli open-project --unity-project <path-to-project> --unity-version 6000 --
327
350
  unity-cli open-project
328
351
  ```
329
352
 
330
- ##### Unity Editor Logs
353
+ #### Unity Editor Logs
331
354
 
332
355
  `editor-logs`: Prints the path to the Unity Editor log files.
333
356
 
@@ -335,16 +358,54 @@ unity-cli open-project
335
358
  unity-cli editor-logs
336
359
  ```
337
360
 
338
- #### Unity Package Manager
361
+ ### Unity Package Manager
362
+
363
+ #### Install Unity Package Manager
364
+
365
+ `upm-install [options]`: Download and install the Unity Package Manager cli (pack/sign).
366
+
367
+ - `--auto-update`: Automatically updates the upm cli if it is already installed and a newer release is available. Cannot be used with `--version`.
368
+ - `--version <version>`: Specify to install a specific version of the Unity Package Manager cli. Cannot be used with `--auto-update`.
369
+ - `--json`: Print version and managed paths as JSON.
370
+ - `--verbose`: Enable verbose logging.
371
+
372
+ ```bash
373
+ unity-cli upm-install --auto-update
374
+ ```
375
+
376
+ #### UPM Version
377
+
378
+ `upm-version`: Print the Unity Package Manager cli version.
379
+
380
+ ```bash
381
+ unity-cli upm-version
382
+ ```
383
+
384
+ #### Pack a Unity Package
385
+
386
+ **Prerequisites:** In the [Unity Cloud Dashboard](https://cloud.unity.com/), create a **service account** on the organization you use for signing. When you assign **organization** access, open **Manage organization roles**, set the **Package Manager** role to **Package Manager Package Signer**, and save. Put the generated key id and secret in `UPM_SERVICE_ACCOUNT_KEY_ID` and `UPM_SERVICE_ACCOUNT_KEY_SECRET` (or your CI secret store). Copy **Organization ID** from **Administration** → **Settings** in that same org. If you have multiple orgs, switch to the correct one in the dashboard before creating keys or copying the id.
387
+
388
+ `upm-pack [options]`: Sign and pack a Unity package.
389
+
390
+ - `--source <path>`: An absolute or relative path to the root folder of the custom package to pack. This is the folder that contains the package manifest file (package.json). (optional; defaults to the current working directory).
391
+ - `--destination <path>`: The output path for the signed tarball. If you specify a folder that doesn’t exist, it will be created for you. Note: If you omit this parameter, the tarball will be placed in the current working directory.
392
+ - `--verbose`: Enable verbose logging.
393
+
394
+ > [!NOTE]
395
+ > Set `UNITY_ORGANIZATION_ID` or `UNITY_ORG_ID`, `UPM_SERVICE_ACCOUNT_KEY_ID`, and `UPM_SERVICE_ACCOUNT_KEY_SECRET`, or leave them unset in an interactive terminal to be prompted securely.
396
+
397
+ ```bash
398
+ unity-cli upm-pack --source <path-to-package-folder> --destination <output-path>
399
+ ```
339
400
 
340
- ##### Sign a Unity Package
401
+ #### Deprecated Sign Package Command
341
402
 
342
403
  > [!WARNING]
343
- > This command feature is in beta and may change in future releases.
404
+ > **Deprecated:** The `sign-package` command is deprecated. Use `unity-cli upm-pack --source <path-to-package-folder> --destination <output-path>` with `UNITY_ORGANIZATION_ID` or `UNITY_ORG_ID`, `UPM_SERVICE_ACCOUNT_KEY_ID`, and `UPM_SERVICE_ACCOUNT_KEY_SECRET` (or secure prompts).
344
405
 
345
- `sign-package [options]`: Sign a Unity package for distribution.
406
+ `sign-package [options]`: [Deprecated] Sign a Unity package using Unity Editor 6000.3+ batch mode (`-upmPack`). Use `unity-cli upm-pack` with organization and service account credentials for new workflows.
346
407
 
347
- - `--package <package>` Required. The fully qualified path to the folder that contains the package.json file for the package you want to sign. Note: Don’t include package.json in this parameter value.
408
+ - `--package <package>` Required. The fully qualified path to the folder that contains the package.json file for the package you want to sign. Note: Don't include package.json in this parameter value.
348
409
  - `--output <output>` Optional. The output directory where you want to save the signed tarball file (.tgz). If unspecified, the package contents will be updated in place with the signed .attestation.p7m file.
349
410
  - `--email <email>` Email associated with the Unity account. If unspecified, the `UNITY_USERNAME` environment variable will be used.
350
411
  - `--password <password>` The password of the Unity account. If unspecified, the `UNITY_PASSWORD` environment variable will be used.
@@ -374,7 +435,8 @@ When `GITHUB_ACTIONS=true`, the logger emits GitHub workflow commands automatica
374
435
  - Defaults to `info` level; add `--verbose` (or temporarily set `ACTIONS_STEP_DEBUG=true`) to surface `debug` lines.
375
436
  - `Logger.annotate(...)` escapes `%`, `\r`, and `\n`, then includes `file`, `line`, `endLine`, `col`, `endColumn`, and `title` metadata so annotations are clickable in the Checks UI.
376
437
  - `startGroup`/`endGroup` become `::group::` / `::endgroup::` blocks.
377
- - Helper methods (`CI_mask`, `CI_setEnvironmentVariable`, `CI_setOutput`, `CI_appendWorkflowSummary`) write to the corresponding GitHub-provided files, so secrets stay masked and workflow outputs update automatically.
438
+ - `CI_mask`, `CI_setEnvironmentVariable`, and `CI_setOutput` write to the corresponding GitHub-provided files when those features are configured.
439
+ - **Job summary (`GITHUB_STEP_SUMMARY`) is opt-in:** set `UNITY_CLI_WORKFLOW_SUMMARY` to `1`, `true`, `yes`, or `on` (case-insensitive) so `CI_appendWorkflowSummary` can append the rich markdown block from Unity log / UTP parsing. If unset, summary output is skipped (annotations and stdout behavior are unchanged).
378
440
 
379
441
  The same command line you run locally therefore produces colorized console output on your machine and rich annotations once it runs inside Actions.
380
442