mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-06-24 18:45:07 +00:00
Compare commits
42 Commits
reduce-bun
...
renovate/a
Author | SHA1 | Date | |
---|---|---|---|
65f476431e | |||
3f9288e9d3 | |||
0efa745628 | |||
bddad252f7 | |||
a1a0e4f028 | |||
de74baa2ff | |||
6c12f755c5 | |||
f80b8e63b1 | |||
b32514f5af | |||
935f8d2549 | |||
b2de857ef1 | |||
78f1471bf4 | |||
d47abf072d | |||
8502c4db4b | |||
dd2c5c40d7 | |||
d23b253ac5 | |||
0b0e24c9b2 | |||
f9656cbe91 | |||
e174f7db4c | |||
a7a408a5c7 | |||
e5877c7de9 | |||
ecb8b3ae6b | |||
fd20516f69 | |||
5ccee0e4f1 | |||
7bb13a551c | |||
19d287aefc | |||
8d10c1af2a | |||
ebfabdba6a | |||
b0cbe43708 | |||
b7f1469912 | |||
3396ba5a97 | |||
78ffff83bc | |||
ae13d584a3 | |||
14f12d17eb | |||
45eb0ad4b1 | |||
21fd8a3307 | |||
b545bd00ad | |||
3eda7938f9 | |||
2bccabfc38 | |||
1b42d08567 | |||
55b69be987 | |||
7c8ce1b1a9 |
2
.github/ISSUE_TEMPLATE.md
vendored
2
.github/ISSUE_TEMPLATE.md
vendored
@ -67,7 +67,7 @@ fixed it.
|
||||
- **Cloud backend: openBalena or balenaCloud?** If unsure, it will be balenaCloud
|
||||
- **Operating system version:** e.g. Windows 10, Ubuntu 18.04, macOS 10.14.5
|
||||
- **32/64 bit OS and processor:** e.g. 32-bit Windows on 64-bit Intel processor
|
||||
- **Install method:** npm or zip package or executable installer
|
||||
- **Install method:** npm or standalone package or executable installer
|
||||
- **If npm install, Node.js and npm version:** e.g. Node v8.16.0 and npm v6.4.1
|
||||
|
||||
# Additional References
|
||||
|
8
.github/actions/publish/action.yml
vendored
8
.github/actions/publish/action.yml
vendored
@ -18,7 +18,7 @@ inputs:
|
||||
default: 'accounts+apple@balena.io'
|
||||
NODE_VERSION:
|
||||
type: string
|
||||
default: '20.x'
|
||||
default: '22.x'
|
||||
VERBOSE:
|
||||
type: string
|
||||
default: 'true'
|
||||
@ -46,7 +46,7 @@ runs:
|
||||
|
||||
- name: Set up Python 3.11
|
||||
if: runner.os == 'macOS'
|
||||
uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4
|
||||
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
@ -138,6 +138,8 @@ runs:
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
||||
with:
|
||||
name: gh-release-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}-${{ strategy.job-index }}
|
||||
path: dist
|
||||
path: |
|
||||
dist
|
||||
!dist/balena
|
||||
retention-days: 1
|
||||
if-no-files-found: error
|
||||
|
4
.github/actions/test/action.yml
vendored
4
.github/actions/test/action.yml
vendored
@ -15,7 +15,7 @@ inputs:
|
||||
# --- custom environment
|
||||
NODE_VERSION:
|
||||
type: string
|
||||
default: '20.x'
|
||||
default: '22.x'
|
||||
VERBOSE:
|
||||
type: string
|
||||
default: "true"
|
||||
@ -33,7 +33,7 @@ runs:
|
||||
|
||||
- name: Set up Python 3.11
|
||||
if: runner.os == 'macOS'
|
||||
uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4
|
||||
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
|
@ -2,7 +2,7 @@ module.exports = {
|
||||
reporter: 'spec',
|
||||
require: 'ts-node/register/transpile-only',
|
||||
file: './tests/config-tests',
|
||||
timeout: 12000,
|
||||
timeout: 48000,
|
||||
// To test only, say, 'push.spec.ts', do it as follows so that
|
||||
// requests are authenticated:
|
||||
// spec: ['tests/auth/*.spec.ts', 'tests/**/deploy.spec.ts'],
|
||||
|
@ -1,3 +1,296 @@
|
||||
- commits:
|
||||
- subject: "Deploy: Limit the submitted error_message of images that fail to build
|
||||
to 1000 characters"
|
||||
hash: bddad252f7cb412a3d417be1d7bd7e4ed9726b8e
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
See: https://balena.fibery.io/Work/Project/re-pitching-API-Limit-size-of-large-fields-975
|
||||
see: https://balena.fibery.io/Work/Project/re-pitching-API-Limit-size-of-large-fields-975
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: 22.1.1
|
||||
title: ""
|
||||
date: 2025-06-19T09:32:52.976Z
|
||||
- commits:
|
||||
- subject: Add support for node 22
|
||||
hash: f80b8e63b1e5b22dd95b034fe14da0a7e3ab4986
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Otavio Jacobi
|
||||
nested: []
|
||||
- subject: Bump etcher-sdk to v10.0.0
|
||||
hash: b32514f5afb4fdd12e4a9dca5e2a1d53e727b434
|
||||
body: |
|
||||
Update balena-device-init from 8.1.3 to 8.1.1
|
||||
Update etcher-sdk from 9.1.4 to 10.0.0
|
||||
Update resin-cli-form from 3.0.0 to 4.0.0
|
||||
Update resin-cli-visuals from 2.0.1 to 3.0.0
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested:
|
||||
- commits:
|
||||
- subject: Drop support to node18 and add support to node 22 & 24
|
||||
hash: 95e577823f642a6c0e500aa29fc150b7807d84f7
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: major
|
||||
change-type: major
|
||||
author: Otavio Jacobi
|
||||
nested: []
|
||||
version: etcher-sdk-10.0.0
|
||||
title: ""
|
||||
date: 2025-06-02T09:12:32.868Z
|
||||
version: 22.1.0
|
||||
title: ""
|
||||
date: 2025-06-09T20:05:08.020Z
|
||||
- commits:
|
||||
- subject: Remove `request` dependency
|
||||
hash: d47abf072ddf1f6529f3d4a14e07436def58df61
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: myarmolinsky
|
||||
nested: []
|
||||
- subject: Replace `request` usage with `got`
|
||||
hash: 8502c4db4bb211a70c682dbc1b85df56f01f2d93
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: myarmolinsky
|
||||
nested: []
|
||||
version: 22.0.6
|
||||
title: ""
|
||||
date: 2025-06-02T12:27:11.068Z
|
||||
- commits:
|
||||
- subject: Bump etcher-sdk to v9.1.4
|
||||
hash: 0b0e24c9b29ef4bcb6a577ca85708171cc2421c7
|
||||
body: |
|
||||
Update etcher-sdk from 9.1.0 to 9.1.4
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested:
|
||||
- commits:
|
||||
- subject: Run `npm audit fix` which should only do non-breaking changes
|
||||
hash: 22aaacc0744e41989706c968c4efc8767d30b7a8
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested: []
|
||||
version: etcher-sdk-9.1.4
|
||||
title: ""
|
||||
date: 2025-05-29T08:57:28.785Z
|
||||
- commits:
|
||||
- subject: Embed config.json with a fixed timestamp to enable consistent checksums
|
||||
hash: 83e67a4089ec39023c39fe79fe59021237797c85
|
||||
body: >
|
||||
Previously the timestamp was changing each time which meant the
|
||||
|
||||
checksum would be different every time even if the rest of the
|
||||
contents
|
||||
|
||||
were identical. Changing this to a fixed timestamp avoids that
|
||||
change
|
||||
|
||||
such that only the contents matter.
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Pagan Gazzard
|
||||
nested: []
|
||||
version: etcher-sdk-9.1.3
|
||||
title: ""
|
||||
date: 2025-02-17T12:48:33.911Z
|
||||
- commits:
|
||||
- subject: Update dependency unzip-stream to v0.3.2 [SECURITY]
|
||||
hash: c243e56e4189bee7391943a3325a3c1465c62fd1
|
||||
body: |
|
||||
Update unzip-stream from 0.3.1 to 0.3.2
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Self-hosted Renovate Bot
|
||||
nested: []
|
||||
version: etcher-sdk-9.1.2
|
||||
title: ""
|
||||
date: 2024-10-09T08:52:13.524Z
|
||||
- commits:
|
||||
- subject: "patch: add EXLOCK flag for windows"
|
||||
hash: 915feeeceff83249f87a6a0a1656986791206136
|
||||
body: |
|
||||
Signed-off-by: Talha Can Havadar <havadartalha@gmail.com>
|
||||
|
||||
run prettier for changed files
|
||||
footer:
|
||||
Signed-off-by: Talha Can Havadar <havadartalha@gmail.com>
|
||||
signed-off-by: Talha Can Havadar <havadartalha@gmail.com>
|
||||
author: Talha Can Havadar
|
||||
nested: []
|
||||
version: etcher-sdk-9.1.1
|
||||
title: ""
|
||||
date: 2024-10-09T08:24:06.706Z
|
||||
version: 22.0.5
|
||||
title: ""
|
||||
date: 2025-05-29T15:47:31.891Z
|
||||
- commits:
|
||||
- subject: "tests: Replace request with got"
|
||||
hash: a7a408a5c7dcf06b770e8df85e250bfed5a09f75
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested: []
|
||||
- subject: "deploy-legacy: Replace request with got"
|
||||
hash: e5877c7de917e377082328ee8ab0b502593c9719
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested: []
|
||||
version: 22.0.4
|
||||
title: ""
|
||||
date: 2025-05-29T13:19:01.228Z
|
||||
- commits:
|
||||
- subject: Bump sentry to v9
|
||||
hash: 5ccee0e4f1ce3bae6963630963cbd72c9c738f77
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested: []
|
||||
version: 22.0.3
|
||||
title: ""
|
||||
date: 2025-05-29T12:09:56.743Z
|
||||
- commits:
|
||||
- subject: Fix balena build to work with --nologs
|
||||
hash: 8d10c1af2a8eddfa146e2d23161c079127eb5546
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested: []
|
||||
version: 22.0.2
|
||||
title: ""
|
||||
date: 2025-05-28T19:32:15.230Z
|
||||
- commits:
|
||||
- subject: "DeviceAPI: Move away from `request` in favor of BalenaSdk request"
|
||||
hash: 3396ba5a971d2ae16552576d65dff953031f01ee
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: myarmolinsky
|
||||
nested: []
|
||||
- subject: Update `nock` to 14.0.4
|
||||
hash: 78ffff83bca1d87dff19909d39d3d18815754a0e
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: myarmolinsky
|
||||
nested: []
|
||||
version: 22.0.1
|
||||
title: ""
|
||||
date: 2025-05-28T17:00:45.889Z
|
||||
- commits:
|
||||
- subject: Add migration guide to v22
|
||||
hash: 45eb0ad4b145d1eed2c30bcd1f9bc9e1a9a2d719
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested: []
|
||||
- subject: Build standalone without pkg
|
||||
hash: 21fd8a3307e2e7efd63b1ea261b2ff9f579e8370
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: major
|
||||
change-type: major
|
||||
author: Otavio Jacobi
|
||||
nested: []
|
||||
version: 22.0.0
|
||||
title: ""
|
||||
date: 2025-05-26T13:53:36.409Z
|
||||
- commits:
|
||||
- subject: Bump balena-preload to 18.0.4
|
||||
hash: 2bccabfc38f887e2d4fcbcbe87b25a03d38e75c3
|
||||
body: |
|
||||
Update balena-preload from 18.0.3 to 18.0.4
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested:
|
||||
- commits:
|
||||
- subject: Fix balena-preload pip deps
|
||||
hash: edd39729cfdc630c95ee4b5c1dffdba3b459224d
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested: []
|
||||
version: balena-preload-18.0.4
|
||||
title: ""
|
||||
date: 2025-05-21T14:25:07.587Z
|
||||
version: 21.1.14
|
||||
title: ""
|
||||
date: 2025-05-21T15:39:18.832Z
|
||||
- commits:
|
||||
- subject: Bump balena-preload to 18.0.3
|
||||
hash: 7c8ce1b1a93420c126e88b98d64366b1affaa439
|
||||
body: |
|
||||
Update balena-preload from 18.0.1 to 18.0.3
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otavio Jacobi
|
||||
nested:
|
||||
- commits:
|
||||
- subject: Update dependency sh to v1.14.3
|
||||
hash: a1ad075baee7833286d10466683e0ccba6d4a6a1
|
||||
body: |
|
||||
Update sh from 1.12.14 to 1.14.3
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: balena-renovate[bot]
|
||||
nested: []
|
||||
version: balena-preload-18.0.3
|
||||
title: ""
|
||||
date: 2025-03-19T16:54:44.864Z
|
||||
- commits:
|
||||
- subject: Update alpine Docker tag to v3.21
|
||||
hash: 61081cd3caab334a91a09822144fe4a5be3a47ca
|
||||
body: |
|
||||
Update alpine from 3.12 to 3.21
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: balena-renovate[bot]
|
||||
nested: []
|
||||
version: balena-preload-18.0.2
|
||||
title: ""
|
||||
date: 2025-03-19T15:55:26.306Z
|
||||
version: 21.1.13
|
||||
title: ""
|
||||
date: 2025-05-21T13:46:30.149Z
|
||||
- commits:
|
||||
- subject: Update @balena/compose dependency to fix error with build secrets.
|
||||
hash: 0f8ce47ec6523e447315bc9103267371fd028bf4
|
||||
|
101
CHANGELOG.md
101
CHANGELOG.md
@ -4,6 +4,107 @@ All notable changes to this project will be documented in this file
|
||||
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
|
||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## 22.1.1 - 2025-06-19
|
||||
|
||||
* Deploy: Limit the submitted error_message of images that fail to build to 1000 characters [Thodoris Greasidis]
|
||||
|
||||
## 22.1.0 - 2025-06-09
|
||||
|
||||
* Add support for node 22 [Otavio Jacobi]
|
||||
|
||||
<details>
|
||||
<summary> Bump etcher-sdk to v10.0.0 [Otavio Jacobi] </summary>
|
||||
|
||||
> ### etcher-sdk-10.0.0 - 2025-06-02
|
||||
>
|
||||
> * Drop support to node18 and add support to node 22 & 24 [Otavio Jacobi]
|
||||
>
|
||||
|
||||
</details>
|
||||
|
||||
## 22.0.6 - 2025-06-02
|
||||
|
||||
* Remove `request` dependency [myarmolinsky]
|
||||
* Replace `request` usage with `got` [myarmolinsky]
|
||||
|
||||
## 22.0.5 - 2025-05-29
|
||||
|
||||
|
||||
<details>
|
||||
<summary> Bump etcher-sdk to v9.1.4 [Otavio Jacobi] </summary>
|
||||
|
||||
> ### etcher-sdk-9.1.4 - 2025-05-29
|
||||
>
|
||||
> * Run `npm audit fix` which should only do non-breaking changes [Otavio Jacobi]
|
||||
>
|
||||
> ### etcher-sdk-9.1.3 - 2025-02-17
|
||||
>
|
||||
> * Embed config.json with a fixed timestamp to enable consistent checksums [Pagan Gazzard]
|
||||
>
|
||||
> ### etcher-sdk-9.1.2 - 2024-10-09
|
||||
>
|
||||
> * Update dependency unzip-stream to v0.3.2 [SECURITY] [Self-hosted Renovate Bot]
|
||||
>
|
||||
> ### etcher-sdk-9.1.1 - 2024-10-09
|
||||
>
|
||||
> * patch: add EXLOCK flag for windows [Talha Can Havadar]
|
||||
>
|
||||
|
||||
</details>
|
||||
|
||||
## 22.0.4 - 2025-05-29
|
||||
|
||||
* tests: Replace request with got [Otavio Jacobi]
|
||||
* deploy-legacy: Replace request with got [Otavio Jacobi]
|
||||
|
||||
## 22.0.3 - 2025-05-29
|
||||
|
||||
* Bump sentry to v9 [Otavio Jacobi]
|
||||
|
||||
## 22.0.2 - 2025-05-28
|
||||
|
||||
* Fix balena build to work with --nologs [Otavio Jacobi]
|
||||
|
||||
## 22.0.1 - 2025-05-28
|
||||
|
||||
* DeviceAPI: Move away from `request` in favor of BalenaSdk request [myarmolinsky]
|
||||
* Update `nock` to 14.0.4 [myarmolinsky]
|
||||
|
||||
## 22.0.0 - 2025-05-26
|
||||
|
||||
* Add migration guide to v22 [Otavio Jacobi]
|
||||
* Build standalone without pkg [Otavio Jacobi]
|
||||
|
||||
## 21.1.14 - 2025-05-21
|
||||
|
||||
|
||||
<details>
|
||||
<summary> Bump balena-preload to 18.0.4 [Otavio Jacobi] </summary>
|
||||
|
||||
> ### balena-preload-18.0.4 - 2025-05-21
|
||||
>
|
||||
> * Fix balena-preload pip deps [Otavio Jacobi]
|
||||
>
|
||||
|
||||
</details>
|
||||
|
||||
## 21.1.13 - 2025-05-21
|
||||
|
||||
|
||||
<details>
|
||||
<summary> Bump balena-preload to 18.0.3 [Otavio Jacobi] </summary>
|
||||
|
||||
> ### balena-preload-18.0.3 - 2025-03-19
|
||||
>
|
||||
> * Update dependency sh to v1.14.3 [balena-renovate[bot]]
|
||||
>
|
||||
> ### balena-preload-18.0.2 - 2025-03-19
|
||||
>
|
||||
> * Update alpine Docker tag to v3.21 [balena-renovate[bot]]
|
||||
>
|
||||
|
||||
</details>
|
||||
|
||||
## 21.1.12 - 2025-05-16
|
||||
|
||||
* Update @balena/compose dependency to fix error with build secrets. [Ken Bannister]
|
||||
|
@ -14,7 +14,7 @@ The balena CLI is an open source project and your contribution is welcome!
|
||||
In order to ease development:
|
||||
|
||||
* `npm run build:fast` skips some of the build steps for interactive testing, or
|
||||
* `npm run test:source` skips testing the standalone zip packages (which is rather slow)
|
||||
* `npm run test:source` skips testing the standalone packages (which is rather slow)
|
||||
* `./bin/balena-dev` uses `ts-node/register` to transpile on the fly.
|
||||
|
||||
Before opening a PR, test your changes with `npm test`. Keep compatibility in mind, as the CLI is
|
||||
|
@ -8,8 +8,8 @@ There are 3 options to choose from to install balena's CLI:
|
||||
|
||||
* [Executable Installer](#executable-installer): the easiest method on Windows and macOS, using the
|
||||
traditional graphical desktop application installers.
|
||||
* [Standalone Zip Package](#standalone-zip-package): these are plain zip files with the balena CLI
|
||||
executable in them: extract and run. Available for all platforms: Linux, Windows, macOS.
|
||||
* [Standalone tar.gz Package](#standalone-targz-package): these are plain tar.gz files with the balena CLI
|
||||
bundled within. Available for all platforms: Linux, Windows, macOS.
|
||||
Recommended also for scripted installation in CI (continuous integration) environments.
|
||||
* [NPM Installation](#npm-installation): recommended for Node.js developers who may be interested
|
||||
in integrating the balena CLI in their existing projects or workflow.
|
||||
@ -30,9 +30,9 @@ instructions:
|
||||
> If you would like to use WSL, follow the [installations instructions for
|
||||
> Linux](./INSTALL-LINUX.md) rather than Windows, as WSL consists of a Linux environment.
|
||||
|
||||
If you had previously installed the CLI using a standalone zip package, it may be a good idea to
|
||||
If you had previously installed the CLI using a standalone tar package, it may be a good idea to
|
||||
check your system's `PATH` environment variable for duplicate entries, as the terminal will use the
|
||||
entry that comes first. Check the [Standalone Zip Package](#standalone-zip-package) instructions
|
||||
entry that comes first. Check the [Standalone tar.gz Package](#standalone-targz-package) instructions
|
||||
for how to modify the PATH variable.
|
||||
|
||||
By default, the CLI is installed to the following folders:
|
||||
@ -42,18 +42,17 @@ OS | Folders
|
||||
Windows: | `C:\Program Files\balena-cli\`
|
||||
macOS: | `/usr/local/src/balena-cli/` <br> `/usr/local/bin/balena`
|
||||
|
||||
## Standalone Zip Package
|
||||
## Standalone tar.gz Package
|
||||
|
||||
1. Download the latest zip file from the [releases page](https://github.com/balena-io/balena-cli/releases).
|
||||
1. Download the latest tar.gz file from the [releases page](https://github.com/balena-io/balena-cli/releases).
|
||||
Look for a file name that ends with the word "standalone", for example:
|
||||
`balena-cli-vX.Y.Z-linux-x64-standalone.zip` ← _also for the Windows Subsystem for Linux_
|
||||
`balena-cli-vX.Y.Z-macOS-x64-standalone.zip`
|
||||
`balena-cli-vX.Y.Z-windows-x64-standalone.zip`
|
||||
`balena-cli-vX.Y.Z-linux-x64-standalone.tar.gz` ← _also for the Windows Subsystem for Linux_
|
||||
`balena-cli-vX.Y.Z-macOS-x64-standalone.tar.gz`
|
||||
`balena-cli-vX.Y.Z-windows-x64-standalone.tar.gz`
|
||||
|
||||
2. Extract the zip file contents to any folder you choose. The extracted contents will include a
|
||||
`balena-cli` folder.
|
||||
2. Extract the tar.gz file contents to any folder you choose. The extracted contents will be a `balena` folder containing a `bin` subdirectory.
|
||||
|
||||
3. Add the `balena-cli` folder to the system's `PATH` environment variable.
|
||||
3. Add the `balena/bin` folder to the system's `PATH` environment variable.
|
||||
See instructions for:
|
||||
[Linux](https://stackoverflow.com/questions/14637979/how-to-permanently-set-path-on-linux-unix) |
|
||||
[macOS](https://www.architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.Uydjga1dXDg) |
|
||||
@ -61,14 +60,14 @@ macOS: | `/usr/local/src/balena-cli/` <br> `/usr/local/bin/balena`
|
||||
|
||||
> * If you are using macOS 10.15 or later (Catalina, Big Sur), [check this known issue and
|
||||
> workaround](https://github.com/balena-io/balena-cli/issues/2244).
|
||||
> * **Linux Alpine** and **Busybox:** the standalone zip package is not currently compatible with
|
||||
> * **Linux Alpine** and **Busybox:** the standalone tar.gz package is not currently compatible with
|
||||
> these "compact" Linux distributions, because of the alternative C libraries they ship with.
|
||||
> For these, consider the [NPM Installation](#npm-installation) option.
|
||||
> * Note that moving the `balena` executable out of the extracted `balena-cli` folder on its own
|
||||
> * Note that moving the `balena/bin/balena` executable out of the extracted `balena` folder on its own
|
||||
> (e.g. moving it to `/usr/local/bin/balena`) will **not** work, as it depends on the other
|
||||
> folders and files also present in the `balena-cli` folder.
|
||||
> folders and files also present in the `balena` folder.
|
||||
|
||||
To update the CLI to a new version, download a new release zip file and replace the previous
|
||||
To update the CLI to a new version, download a new release tar.gz file and replace the previous
|
||||
installation folder. To uninstall, simply delete the folder and edit the PATH environment variable
|
||||
as described above.
|
||||
|
||||
@ -78,8 +77,8 @@ If you are a Node.js developer, you may wish to install the balena CLI via [npm]
|
||||
The npm installation involves building native (platform-specific) binary modules, which require
|
||||
some development tools to be installed first, as follows.
|
||||
|
||||
> **The balena CLI currently requires Node.js version ^20.6.0**
|
||||
> **Versions 21 and later are not yet fully supported.**
|
||||
> **The balena CLI currently requires Node.js version >=20.6.0**
|
||||
> **Versions 23 and later are not yet fully supported.**
|
||||
|
||||
### Install development tools
|
||||
|
||||
@ -89,7 +88,7 @@ some development tools to be installed first, as follows.
|
||||
$ sudo apt-get update && sudo apt-get -y install curl python3 git make g++
|
||||
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
|
||||
$ . ~/.bashrc
|
||||
$ nvm install 20
|
||||
$ nvm install 22
|
||||
```
|
||||
|
||||
The `curl` command line above uses
|
||||
@ -106,7 +105,7 @@ recommended.
|
||||
```sh
|
||||
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
|
||||
$ . ~/.bashrc
|
||||
$ nvm install 20
|
||||
$ nvm install 22
|
||||
```
|
||||
|
||||
#### **Windows** (not WSL)
|
||||
@ -114,7 +113,7 @@ $ nvm install 20
|
||||
Install:
|
||||
|
||||
* If you'd like the ability to switch between Node.js versions, install
|
||||
- Node.js v20 from the [Nodejs.org releases page](https://nodejs.org/en/download/releases/).
|
||||
- Node.js v22 from the [Nodejs.org releases page](https://nodejs.org/en/download/releases/).
|
||||
[nvm-windows](https://github.com/coreybutler/nvm-windows#node-version-manager-nvm-for-windows)
|
||||
instead.
|
||||
* The [MSYS2 shell](https://www.msys2.org/), which provides `git`, `make`, `g++` and more:
|
||||
|
@ -8,15 +8,15 @@ method.
|
||||
|
||||
Selected operating system: **Linux**
|
||||
|
||||
1. Download the latest zip file from the [latest release
|
||||
1. Download the latest tar.gz file from the [latest release
|
||||
page](https://github.com/balena-io/balena-cli/releases/latest). Look for a file name that ends
|
||||
with "-standalone.zip", for example:
|
||||
`balena-cli-vX.Y.Z-linux-x64-standalone.zip`
|
||||
with "-standalone.tar.gz", for example:
|
||||
`balena-cli-vX.Y.Z-linux-x64-standalone.tar.gz`
|
||||
|
||||
2. Extract the zip file contents to any folder you choose, for example `/home/james`.
|
||||
The extracted contents will include a `balena-cli` folder.
|
||||
2. Extract the tar.gz file contents to any folder you choose, for example `/home/james`.
|
||||
The extracted contents will include a `balena/bin` folder.
|
||||
|
||||
3. Add that folder (e.g. `/home/james/balena-cli`) to the `PATH` environment variable.
|
||||
3. Add that folder (e.g. `/home/james/balena/bin`) to the `PATH` environment variable.
|
||||
Check this [StackOverflow
|
||||
post](https://stackoverflow.com/questions/14637979/how-to-permanently-set-path-on-linux-unix)
|
||||
for instructions. Close and reopen the terminal window so that the changes to `PATH`
|
||||
@ -27,7 +27,7 @@ Selected operating system: **Linux**
|
||||
* `balena version` - should print the CLI's version
|
||||
* `balena help` - should print a list of available commands
|
||||
|
||||
To update the balena CLI to a new version, download a new release zip file and replace the previous
|
||||
To update the balena CLI to a new version, download a new release tar.gz file and replace the previous
|
||||
installation folder. To uninstall, simply delete the folder and edit the PATH environment variable
|
||||
as described above.
|
||||
|
||||
|
@ -7,8 +7,8 @@ Selected operating system: **macOS**
|
||||
|
||||
1. Download the installer from the [latest release
|
||||
page](https://github.com/balena-io/balena-cli/releases/latest).
|
||||
Look for a file name that ends with "-installer.pkg":
|
||||
`balena-cli-vX.Y.Z-macOS-x64-installer.pkg`
|
||||
Look for a file name that ends with "-installer.pkg":
|
||||
`balena-cli-vX.Y.Z-macOS-x64-installer.pkg`
|
||||
|
||||
2. Double click on the downloaded file to run the installer and follow the installer's
|
||||
instructions.
|
||||
|
@ -8,7 +8,7 @@ Selected operating system: **Windows**
|
||||
1. Download the installer from the [latest release
|
||||
page](https://github.com/balena-io/balena-cli/releases/latest).
|
||||
Look for a file name that ends with "-installer.exe":
|
||||
`balena-cli-vX.Y.Z-windows-x64-installer.exe`
|
||||
`balena-cli-vX.Y.Z-windows-x64-installer.exe`
|
||||
|
||||
2. Double click on the downloaded file to run the installer and follow the installer's
|
||||
instructions.
|
||||
|
45
MIGRATIONS.md
Normal file
45
MIGRATIONS.md
Normal file
@ -0,0 +1,45 @@
|
||||
## Migrating to balena CLI v22
|
||||
|
||||
This guide outlines the changes introduced in balena CLI v22 and provides instructions for when and how to migrate.
|
||||
|
||||
---
|
||||
|
||||
### For Installer Users (Windows .exe, macOS .pkg)
|
||||
|
||||
If you are using the Windows executable (.exe) or macOS package (.pkg) installers, **no changes** are required for this update. You can continue to use the installers as before.
|
||||
|
||||
---
|
||||
|
||||
### For npm Installation Users
|
||||
|
||||
If you installed balena CLI via npm, **no changes** are required for this update. Your existing installation and update process remains the same.
|
||||
|
||||
---
|
||||
|
||||
### For Standalone Installation Users
|
||||
|
||||
Users of the standalone balena CLI will need to make the following adjustments:
|
||||
|
||||
1. **Archive Format Change**: The distribution archive format has changed from `.zip` to `.tar.gz`. You will need to use the `tar` command instead of `unzip` to extract the CLI.
|
||||
|
||||
* **Previous command (v21.x.x and older):**
|
||||
```bash
|
||||
unzip balena-cli-v21.1.12-linux-x64-standalone.zip
|
||||
```
|
||||
* **New command (v22.0.0 and newer):**
|
||||
```bash
|
||||
tar -xzf balena-cli-v22.0.0-linux-x64-standalone.tar.gz
|
||||
```
|
||||
|
||||
2. **Executable Path Change**: The path to the balena CLI executable within the extracted folder has been updated.
|
||||
|
||||
* **Previous path (v21.x.x and older):**
|
||||
```
|
||||
balena-cli/balena
|
||||
```
|
||||
* **New path (v22.0.0 and newer):**
|
||||
```
|
||||
balena/bin/balena
|
||||
```
|
||||
|
||||
Please update your scripts and any aliases to reflect these changes if you are using the standalone version.
|
@ -20,6 +20,8 @@ GitHub](https://github.com/balena-io/balena-cli/), and your contribution is also
|
||||
Check the [balena CLI installation instructions on
|
||||
GitHub](https://github.com/balena-io/balena-cli/blob/master/INSTALL.md).
|
||||
|
||||
Note for v22 Migration: If you are upgrading to balena CLI v22 from a previous standalone installation, please [see the v22 Migration Guide](https://github.com/balena-io/balena-cli/blob/master/MIGRATIONS.md) for installation changes.
|
||||
|
||||
## Choosing a shell (command prompt/terminal)
|
||||
|
||||
On **Windows,** the standard Command Prompt (`cmd.exe`) and
|
||||
|
@ -115,7 +115,7 @@ If nothing seems to help, consider also using a different client-side terminal a
|
||||
## "Docker seems to be unavailable" error when using Windows Subsystem for Linux (WSL)
|
||||
|
||||
When running on WSL, the recommendation is to install a CLI release for Linux, like the standalone
|
||||
zip package for Linux. However, commands like "balena build" will, by default, attempt to reach the
|
||||
tar.gz package for Linux. However, commands like "balena build" will, by default, attempt to reach the
|
||||
Docker daemon at the Unix socket path `/var/run/docker.sock`, while Docker Desktop for Windows uses
|
||||
a Windows named pipe at `//./pipe/docker_engine` (which the Linux CLI on WSL cannot use). A
|
||||
solution is:
|
||||
|
@ -15,29 +15,17 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import type { JsonVersions } from '../src/commands/version/index';
|
||||
|
||||
import { run as oclifRun } from '@oclif/core';
|
||||
import * as archiver from 'archiver';
|
||||
import { exec, execFile } from 'child_process';
|
||||
import * as filehound from 'filehound';
|
||||
import type { Stats } from 'fs';
|
||||
import * as fs from 'fs-extra';
|
||||
import * as klaw from 'klaw';
|
||||
import * as path from 'path';
|
||||
import * as rimraf from 'rimraf';
|
||||
import * as semver from 'semver';
|
||||
import { promisify } from 'util';
|
||||
import { notarize } from '@electron/notarize';
|
||||
|
||||
import { stripIndent } from '../build/utils/lazy';
|
||||
import {
|
||||
diffLines,
|
||||
loadPackageJson,
|
||||
ROOT,
|
||||
StdOutTap,
|
||||
whichSpawn,
|
||||
} from './utils';
|
||||
import { loadPackageJson, ROOT, whichSpawn } from './utils';
|
||||
|
||||
const execFileAsync = promisify(execFile);
|
||||
const execAsync = promisify(exec);
|
||||
@ -55,12 +43,6 @@ interface PathByPlatform {
|
||||
[platform: string]: string;
|
||||
}
|
||||
|
||||
const standaloneZips: PathByPlatform = {
|
||||
linux: dPath(`balena-cli-${version}-linux-${arch}-standalone.zip`),
|
||||
darwin: dPath(`balena-cli-${version}-macOS-${arch}-standalone.zip`),
|
||||
win32: dPath(`balena-cli-${version}-windows-${arch}-standalone.zip`),
|
||||
};
|
||||
|
||||
const getOclifInstallersOriginalNames = async (): Promise<PathByPlatform> => {
|
||||
const { stdout } = await execAsync('git rev-parse --short HEAD');
|
||||
const sha = stdout.trim();
|
||||
@ -75,260 +57,28 @@ const renamedOclifInstallers: PathByPlatform = {
|
||||
win32: dPath(`balena-cli-${version}-windows-${arch}-installer.exe`),
|
||||
};
|
||||
|
||||
export const finalReleaseAssets: { [platform: string]: string[] } = {
|
||||
win32: [standaloneZips['win32'], renamedOclifInstallers['win32']],
|
||||
darwin: [standaloneZips['darwin'], renamedOclifInstallers['darwin']],
|
||||
linux: [standaloneZips['linux']],
|
||||
const getOclifStandaloneOriginalNames = async (): Promise<PathByPlatform> => {
|
||||
const { stdout } = await execAsync('git rev-parse --short HEAD');
|
||||
const sha = stdout.trim();
|
||||
return {
|
||||
linux: dPath(`balena-${version}-${sha}-linux-${arch}.tar.gz`),
|
||||
darwin: dPath(`balena-${version}-${sha}-darwin-${arch}.tar.gz`),
|
||||
win32: dPath(`balena-${version}-${sha}-win32-${arch}.tar.gz`),
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Given the output of `pkg` as a string (containing warning messages),
|
||||
* diff it against previously saved output of known "safe" warnings.
|
||||
* Throw an error if the diff is not empty.
|
||||
*/
|
||||
async function diffPkgOutput(pkgOut: string) {
|
||||
const { monochrome } = await import('../tests/helpers');
|
||||
const relSavedPath = path.join(
|
||||
'tests',
|
||||
'test-data',
|
||||
'pkg',
|
||||
`expected-warnings-${process.platform}-${arch}.txt`,
|
||||
);
|
||||
const absSavedPath = path.join(ROOT, relSavedPath);
|
||||
const ignoreStartsWith = [
|
||||
'> pkg@',
|
||||
'> Fetching base Node.js binaries',
|
||||
' fetched-',
|
||||
'prebuild-install WARN install No prebuilt binaries found',
|
||||
];
|
||||
const modulesRE =
|
||||
process.platform === 'win32'
|
||||
? /(?<=[ '])([A-Z]:)?\\.+?\\node_modules(?=\\)/
|
||||
: /(?<=[ '])\/.+?\/node_modules(?=\/)/;
|
||||
const buildRE =
|
||||
process.platform === 'win32'
|
||||
? /(?<=[ '])([A-Z]:)?\\.+\\build(?=\\)/
|
||||
: /(?<=[ '])\/.+\/build(?=\/)/;
|
||||
|
||||
const cleanLines = (chunks: string | string[]) => {
|
||||
const lines = typeof chunks === 'string' ? chunks.split('\n') : chunks;
|
||||
return lines
|
||||
.map((line: string) => monochrome(line)) // remove ASCII colors
|
||||
.filter((line: string) => !/^\s*$/.test(line)) // blank lines
|
||||
.filter((line: string) =>
|
||||
ignoreStartsWith.every((i) => !line.startsWith(i)),
|
||||
)
|
||||
.map((line: string) => {
|
||||
// replace absolute paths with relative paths
|
||||
let replaced = line.replace(modulesRE, 'node_modules');
|
||||
if (replaced === line) {
|
||||
replaced = line.replace(buildRE, 'build');
|
||||
}
|
||||
return replaced;
|
||||
});
|
||||
};
|
||||
|
||||
pkgOut = cleanLines(pkgOut).join('\n');
|
||||
const { readFile } = (await import('fs')).promises;
|
||||
const expectedOut = cleanLines(await readFile(absSavedPath, 'utf8')).join(
|
||||
'\n',
|
||||
);
|
||||
if (expectedOut !== pkgOut) {
|
||||
const sep =
|
||||
'================================================================================';
|
||||
const diff = diffLines(expectedOut, pkgOut);
|
||||
const msg = `pkg output does not match expected output from "${relSavedPath}"
|
||||
Diff:
|
||||
${sep}
|
||||
${diff}
|
||||
${sep}
|
||||
Check whether the new or changed pkg warnings are safe to ignore, then update
|
||||
"${relSavedPath}"
|
||||
and share the result of your investigation as comments on the pull request.
|
||||
Hint: the fix is often a matter of updating the 'pkg.scripts' or 'pkg.assets'
|
||||
sections in the CLI's 'package.json' file, or a matter of updating the
|
||||
'buildPkg' function in 'automation/build-bin.ts'. Sometimes it requires
|
||||
patching dependencies: See for example 'patches/all/open+7.0.2.patch'.
|
||||
${sep}
|
||||
`;
|
||||
throw new Error(msg);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Call `pkg.exec` to generate the standalone zip file, capturing its warning
|
||||
* messages (stdout and stderr) in order to call diffPkgOutput().
|
||||
*/
|
||||
async function execPkg(...args: any[]) {
|
||||
const { exec: pkgExec } = await import('@yao-pkg/pkg');
|
||||
const outTap = new StdOutTap(true);
|
||||
try {
|
||||
outTap.tap();
|
||||
await (pkgExec as any)(...args);
|
||||
} catch (err) {
|
||||
outTap.untap();
|
||||
console.log(outTap.stdoutBuf.join(''));
|
||||
console.error(outTap.stderrBuf.join(''));
|
||||
throw err;
|
||||
}
|
||||
outTap.untap();
|
||||
await diffPkgOutput(outTap.allBuf.join(''));
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the 'pkg' module to create a single large executable file with
|
||||
* the contents of 'node_modules' and the CLI's javascript code.
|
||||
* Also copy a number of native modules (binary '.node' files) that are
|
||||
* compiled during 'npm install' to the 'build-bin' folder, alongside
|
||||
* the single large executable file created by pkg. (This is necessary
|
||||
* because of a pkg limitation that does not allow binary executables
|
||||
* to be directly executed from inside another binary executable.)
|
||||
*/
|
||||
async function buildPkg() {
|
||||
// https://github.com/vercel/pkg#targets
|
||||
let targets = `linux-${arch}`;
|
||||
if (process.platform === 'darwin') {
|
||||
targets = `macos-${arch}`;
|
||||
}
|
||||
// TBC: not yet possible to build for Windows arm64 on x64 nodes
|
||||
if (process.platform === 'win32') {
|
||||
targets = `win-x64`;
|
||||
}
|
||||
const args = [
|
||||
'--targets',
|
||||
targets,
|
||||
'--output',
|
||||
'build-bin/balena',
|
||||
'package.json',
|
||||
];
|
||||
console.log('=======================================================');
|
||||
console.log(`execPkg ${args.join(' ')}`);
|
||||
console.log(`cwd="${process.cwd()}" ROOT="${ROOT}"`);
|
||||
console.log('=======================================================');
|
||||
|
||||
await execPkg(args);
|
||||
|
||||
const paths: Array<[string, string[], string[]]> = [
|
||||
// [platform, [source path], [destination path]]
|
||||
['*', ['open', 'xdg-open'], ['xdg-open']],
|
||||
['darwin', ['denymount', 'bin', 'denymount'], ['denymount']],
|
||||
];
|
||||
await Promise.all(
|
||||
paths.map(([platform, source, dest]) => {
|
||||
if (platform === '*' || platform === process.platform) {
|
||||
// eg copy from node_modules/open/xdg-open to build-bin/xdg-open
|
||||
return fs.copy(
|
||||
path.join(ROOT, 'node_modules', ...source),
|
||||
path.join(ROOT, 'build-bin', ...dest),
|
||||
);
|
||||
}
|
||||
}),
|
||||
);
|
||||
const nativeExtensionPaths: string[] = await filehound
|
||||
.create()
|
||||
.paths(path.join(ROOT, 'node_modules'))
|
||||
.ext(['node', 'dll'])
|
||||
.find();
|
||||
|
||||
console.log(`\nCopying to build-bin:\n${nativeExtensionPaths.join('\n')}`);
|
||||
|
||||
await Promise.all(
|
||||
nativeExtensionPaths.map((extPath) =>
|
||||
fs.copy(
|
||||
extPath,
|
||||
extPath.replace(
|
||||
path.join(ROOT, 'node_modules'),
|
||||
path.join(ROOT, 'build-bin'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run some basic tests on the built pkg executable.
|
||||
* TODO: test more than just `balena version -j`; integrate with the
|
||||
* existing mocha/chai CLI command testing.
|
||||
*/
|
||||
async function testPkg() {
|
||||
const pkgBalenaPath = path.join(
|
||||
ROOT,
|
||||
'build-bin',
|
||||
process.platform === 'win32' ? 'balena.exe' : 'balena',
|
||||
);
|
||||
console.log(`Testing standalone package "${pkgBalenaPath}"...`);
|
||||
// Run `balena version -j`, parse its stdout as JSON, and check that the
|
||||
// reported Node.js major version matches semver.major(process.version)
|
||||
let { stdout, stderr } = await execFileAsync(pkgBalenaPath, [
|
||||
'version',
|
||||
'-j',
|
||||
]);
|
||||
const { filterCliOutputForTests } = await import('../tests/helpers');
|
||||
const filtered = filterCliOutputForTests({
|
||||
err: stderr.split(/\r?\n/),
|
||||
out: stdout.split(/\r?\n/),
|
||||
});
|
||||
stdout = filtered.out.join('\n');
|
||||
stderr = filtered.err.join('\n');
|
||||
let pkgNodeVersion = '';
|
||||
let pkgNodeMajorVersion = 0;
|
||||
try {
|
||||
const balenaVersions: JsonVersions = JSON.parse(stdout);
|
||||
pkgNodeVersion = balenaVersions['Node.js'];
|
||||
pkgNodeMajorVersion = semver.major(pkgNodeVersion);
|
||||
} catch (err) {
|
||||
throw new Error(stripIndent`
|
||||
Error parsing JSON output of "balena version -j": ${err}
|
||||
Original output: "${stdout}"`);
|
||||
}
|
||||
if (semver.major(process.version) !== pkgNodeMajorVersion) {
|
||||
throw new Error(
|
||||
`Mismatched major version: built-in pkg Node version="${pkgNodeVersion}" vs process.version="${process.version}"`,
|
||||
);
|
||||
}
|
||||
if (filtered.err.length > 0) {
|
||||
const err = filtered.err.join('\n');
|
||||
throw new Error(`"${pkgBalenaPath}": non-empty stderr "${err}"`);
|
||||
}
|
||||
console.log('Success! (standalone package test successful)');
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the zip file for the standalone 'pkg' bundle previously created
|
||||
* by the buildPkg() function in 'build-bin.ts'.
|
||||
*/
|
||||
async function zipPkg() {
|
||||
const outputFile = standaloneZips[process.platform];
|
||||
if (!outputFile) {
|
||||
throw new Error(
|
||||
`Standalone installer unavailable for platform "${process.platform}"`,
|
||||
);
|
||||
}
|
||||
await fs.mkdirp(path.dirname(outputFile));
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
console.log(`Zipping standalone package to "${outputFile}"...`);
|
||||
|
||||
const archive = archiver('zip', {
|
||||
zlib: { level: 7 },
|
||||
});
|
||||
archive.directory(path.join(ROOT, 'build-bin'), 'balena-cli');
|
||||
|
||||
const outputStream = fs.createWriteStream(outputFile);
|
||||
|
||||
outputStream.on('close', resolve);
|
||||
outputStream.on('error', reject);
|
||||
|
||||
archive.on('error', reject);
|
||||
archive.on('warning', console.warn);
|
||||
|
||||
archive.pipe(outputStream);
|
||||
archive.finalize().catch(reject);
|
||||
});
|
||||
}
|
||||
const renamedOclifStandalone: PathByPlatform = {
|
||||
linux: dPath(`balena-cli-${version}-linux-${arch}-standalone.tar.gz`),
|
||||
darwin: dPath(`balena-cli-${version}-macOS-${arch}-standalone.tar.gz`),
|
||||
win32: dPath(`balena-cli-${version}-windows-${arch}-standalone.tar.gz`),
|
||||
};
|
||||
|
||||
export async function signFilesForNotarization() {
|
||||
console.log('Signing files for notarization');
|
||||
if (process.platform !== 'darwin') {
|
||||
// If signFilesForNotarization is called on the test CI environment (which will not set CSC_LINK)
|
||||
// then we skip the signing process.
|
||||
if (process.platform !== 'darwin' || !process.env.CSC_LINK) {
|
||||
console.log('Skipping signing for notarization');
|
||||
return;
|
||||
}
|
||||
console.log('Deleting unneeded zip files...');
|
||||
@ -416,20 +166,39 @@ export async function signFilesForNotarization() {
|
||||
]);
|
||||
}
|
||||
|
||||
export async function buildStandaloneZip() {
|
||||
console.log(`Building standalone zip package for CLI ${version}`);
|
||||
export async function buildStandalone() {
|
||||
console.log(`Building standalone tarball for CLI ${version}`);
|
||||
fs.rmSync('./tmp', { recursive: true, force: true });
|
||||
fs.rmSync('./dist', { recursive: true, force: true });
|
||||
fs.mkdirSync('./dist');
|
||||
try {
|
||||
await buildPkg();
|
||||
await testPkg();
|
||||
await zipPkg();
|
||||
console.log(`Standalone zip package build completed`);
|
||||
let packOpts = ['-r', ROOT, '--no-xz'];
|
||||
if (process.platform === 'darwin') {
|
||||
packOpts = packOpts.concat('--targets', `darwin-${arch}`);
|
||||
} else if (process.platform === 'win32') {
|
||||
packOpts = packOpts.concat('--targets', 'win32-x64');
|
||||
} else if (process.platform === 'linux') {
|
||||
packOpts = packOpts.concat('--targets', `linux-${arch}`);
|
||||
}
|
||||
|
||||
console.log(`Building oclif installer for CLI ${version}`);
|
||||
const packCmd = `pack:tarballs`;
|
||||
console.log('=======================================================');
|
||||
console.log(`oclif ${packCmd} ${packOpts.join(' ')}`);
|
||||
console.log(`cwd="${process.cwd()}" ROOT="${ROOT}"`);
|
||||
console.log('=======================================================');
|
||||
const oclifPath = path.join(ROOT, 'node_modules', 'oclif');
|
||||
await oclifRun([packCmd].concat(...packOpts), oclifPath);
|
||||
await renameStandalone();
|
||||
|
||||
console.log(`Standalone tarball package build completed`);
|
||||
} catch (error) {
|
||||
console.error(`Error creating or testing standalone zip package`);
|
||||
console.error(`Error creating or testing standalone tarball package`);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async function renameInstallerFiles() {
|
||||
async function renameInstallers() {
|
||||
const oclifInstallers = await getOclifInstallersOriginalNames();
|
||||
if (await fs.pathExists(oclifInstallers[process.platform])) {
|
||||
await fs.rename(
|
||||
@ -439,6 +208,16 @@ async function renameInstallerFiles() {
|
||||
}
|
||||
}
|
||||
|
||||
async function renameStandalone() {
|
||||
const oclifStandalone = await getOclifStandaloneOriginalNames();
|
||||
if (await fs.pathExists(oclifStandalone[process.platform])) {
|
||||
await fs.rename(
|
||||
oclifStandalone[process.platform],
|
||||
renamedOclifStandalone[process.platform],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* If the CSC_LINK and CSC_KEY_PASSWORD env vars are set, digitally sign the
|
||||
* executable installer using Microsoft SignTool.exe (Sign Tool)
|
||||
@ -446,7 +225,7 @@ async function renameInstallerFiles() {
|
||||
*/
|
||||
async function signWindowsInstaller() {
|
||||
if (process.env.SM_CODE_SIGNING_CERT_SHA1_HASH) {
|
||||
const exeName = renamedOclifInstallers[process.platform];
|
||||
const exeName = (await getOclifInstallersOriginalNames())[process.platform];
|
||||
console.log(`Signing installer "${exeName}"`);
|
||||
// trust ...
|
||||
await execFileAsync('signtool.exe', [
|
||||
@ -480,12 +259,14 @@ async function notarizeMacInstaller(): Promise<void> {
|
||||
const appleId =
|
||||
process.env.XCODE_APP_LOADER_EMAIL || 'accounts+apple@balena.io';
|
||||
const appleIdPassword = process.env.XCODE_APP_LOADER_PASSWORD;
|
||||
const appPath = (await getOclifInstallersOriginalNames())[process.platform];
|
||||
console.log(`Notarizing file "${appPath}"`);
|
||||
|
||||
if (appleIdPassword && teamId) {
|
||||
await notarize({
|
||||
tool: 'notarytool',
|
||||
teamId,
|
||||
appPath: renamedOclifInstallers.darwin,
|
||||
appPath,
|
||||
appleId,
|
||||
appleIdPassword,
|
||||
});
|
||||
@ -525,7 +306,6 @@ export async function buildOclifInstaller() {
|
||||
console.log('=======================================================');
|
||||
const oclifPath = path.join(ROOT, 'node_modules', 'oclif');
|
||||
await oclifRun([packCmd].concat(...packOpts), oclifPath);
|
||||
await renameInstallerFiles();
|
||||
// The Windows installer is explicitly signed here (oclif doesn't do it).
|
||||
// The macOS installer is automatically signed by oclif (which runs the
|
||||
// `pkgbuild` tool), using the certificate name given in package.json
|
||||
@ -537,6 +317,7 @@ export async function buildOclifInstaller() {
|
||||
await notarizeMacInstaller(); // Notarize
|
||||
console.log('Package notarized.');
|
||||
}
|
||||
await renameInstallers();
|
||||
console.log(`oclif installer build completed`);
|
||||
}
|
||||
}
|
||||
@ -572,4 +353,5 @@ export async function testShrinkwrap(): Promise<void> {
|
||||
if (process.platform !== 'win32') {
|
||||
await whichSpawn(path.resolve(__dirname, 'test-lock-deduplicated.sh'));
|
||||
}
|
||||
await Promise.resolve();
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ import * as _ from 'lodash';
|
||||
|
||||
import {
|
||||
buildOclifInstaller,
|
||||
buildStandaloneZip,
|
||||
buildStandalone,
|
||||
catchUncommitted,
|
||||
signFilesForNotarization,
|
||||
testShrinkwrap,
|
||||
@ -36,7 +36,7 @@ process.env.DEBUG = ['0', 'no', 'false', '', undefined].includes(
|
||||
* Trivial command-line parser. Check whether the command-line argument is one
|
||||
* of the following strings, then call the appropriate functions:
|
||||
* 'build:installer' (to build a native oclif installer)
|
||||
* 'build:standalone' (to build a standalone pkg package)
|
||||
* 'build:standalone' (to build a standalone package)
|
||||
*
|
||||
* @param args Arguments to parse (default is process.argv.slice(2))
|
||||
*/
|
||||
@ -49,7 +49,7 @@ async function parse(args?: string[]) {
|
||||
}
|
||||
const commands: { [cmd: string]: () => void | Promise<void> } = {
|
||||
'build:installer': buildOclifInstaller,
|
||||
'build:standalone': buildStandaloneZip,
|
||||
'build:standalone': buildStandalone,
|
||||
'sign:binaries': signFilesForNotarization,
|
||||
'catch-uncommitted': catchUncommitted,
|
||||
'test-shrinkwrap': testShrinkwrap,
|
||||
|
@ -18,73 +18,10 @@
|
||||
import { spawn } from 'child_process';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
import { diffTrimmedLines } from 'diff';
|
||||
import * as whichMod from 'which';
|
||||
|
||||
export const ROOT = path.join(__dirname, '..');
|
||||
|
||||
/** Tap and buffer this process' stdout and stderr */
|
||||
export class StdOutTap {
|
||||
public stdoutBuf: string[] = [];
|
||||
public stderrBuf: string[] = [];
|
||||
public allBuf: string[] = []; // both stdout and stderr
|
||||
|
||||
protected origStdoutWrite: typeof process.stdout.write;
|
||||
protected origStderrWrite: typeof process.stdout.write;
|
||||
|
||||
constructor(protected printDots = false) {}
|
||||
|
||||
tap() {
|
||||
this.origStdoutWrite = process.stdout.write;
|
||||
this.origStderrWrite = process.stderr.write;
|
||||
|
||||
process.stdout.write = (chunk: string, ...args: any[]): boolean => {
|
||||
this.stdoutBuf.push(chunk);
|
||||
this.allBuf.push(chunk);
|
||||
const str = this.printDots ? '.' : chunk;
|
||||
return this.origStdoutWrite.call(process.stdout, str, ...args);
|
||||
};
|
||||
|
||||
process.stderr.write = (chunk: string, ...args: any[]): boolean => {
|
||||
this.stderrBuf.push(chunk);
|
||||
this.allBuf.push(chunk);
|
||||
const str = this.printDots ? '.' : chunk;
|
||||
return this.origStderrWrite.call(process.stderr, str, ...args);
|
||||
};
|
||||
}
|
||||
|
||||
untap() {
|
||||
process.stdout.write = this.origStdoutWrite;
|
||||
process.stderr.write = this.origStderrWrite;
|
||||
if (this.printDots) {
|
||||
console.error('');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Diff strings by line, using the 'diff' npm package:
|
||||
* https://www.npmjs.com/package/diff
|
||||
*/
|
||||
export function diffLines(str1: string, str2: string): string {
|
||||
const diffObjs = diffTrimmedLines(str1, str2);
|
||||
const prefix = (chunk: string, char: string) =>
|
||||
chunk
|
||||
.split('\n')
|
||||
.map((line: string) => `${char} ${line}`)
|
||||
.join('\n');
|
||||
const diffStr = diffObjs
|
||||
.map((part: any) => {
|
||||
return part.added
|
||||
? prefix(part.value, '+')
|
||||
: part.removed
|
||||
? prefix(part.value, '-')
|
||||
: prefix(part.value, ' ');
|
||||
})
|
||||
.join('\n');
|
||||
return diffStr;
|
||||
}
|
||||
|
||||
export function loadPackageJson() {
|
||||
const packageJsonPath = path.join(ROOT, 'package.json');
|
||||
|
||||
|
@ -13,6 +13,8 @@ GitHub](https://github.com/balena-io/balena-cli/), and your contribution is also
|
||||
Check the [balena CLI installation instructions on
|
||||
GitHub](https://github.com/balena-io/balena-cli/blob/master/INSTALL.md).
|
||||
|
||||
Note for v22 Migration: If you are upgrading to balena CLI v22 from a previous standalone installation, please [see the v22 Migration Guide](https://github.com/balena-io/balena-cli/blob/master/MIGRATIONS.md) for installation changes.
|
||||
|
||||
## Choosing a shell (command prompt/terminal)
|
||||
|
||||
On **Windows,** the standard Command Prompt (`cmd.exe`) and
|
||||
|
3864
npm-shrinkwrap.json
generated
3864
npm-shrinkwrap.json
generated
File diff suppressed because it is too large
Load Diff
48
package.json
48
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "balena-cli",
|
||||
"version": "21.1.12",
|
||||
"version": "22.1.1",
|
||||
"description": "The official balena Command Line Interface",
|
||||
"main": "./build/app.js",
|
||||
"homepage": "https://github.com/balena-io/balena-cli",
|
||||
@ -24,26 +24,6 @@
|
||||
"bin": {
|
||||
"balena": "./bin/run.js"
|
||||
},
|
||||
"pkg": {
|
||||
"scripts": [
|
||||
"build/**/*.js",
|
||||
"node_modules/balena-sdk/es2018/index.js",
|
||||
"node_modules/pinejs-client-request/node_modules/pinejs-client-core/es2018/index.js",
|
||||
"node_modules/@balena/compose/dist/parse/schemas/*.json"
|
||||
],
|
||||
"assets": [
|
||||
"build/auth/pages/*.ejs",
|
||||
"node_modules/balena-sdk/node_modules/balena-pine/**/*",
|
||||
"node_modules/balena-pine/**/*",
|
||||
"node_modules/pinejs-client-core/**/*",
|
||||
"node_modules/open/xdg-open",
|
||||
"node_modules/windosu/*.bat",
|
||||
"node_modules/windosu/*.cmd",
|
||||
"node_modules/axios/**/*",
|
||||
"npm-shrinkwrap.json",
|
||||
"oclif.manifest.json"
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
"postinstall": "node patches/apply-patches.js",
|
||||
"prebuild": "rimraf build/ build-bin/",
|
||||
@ -92,7 +72,7 @@
|
||||
"author": "Balena Inc. (https://balena.io/)",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": "^20.6.0"
|
||||
"node": ">=20.6.0 <23"
|
||||
},
|
||||
"oclif": {
|
||||
"bin": "balena",
|
||||
@ -114,14 +94,12 @@
|
||||
"devDependencies": {
|
||||
"@balena/lint": "^9.1.3",
|
||||
"@electron/notarize": "^2.0.0",
|
||||
"@types/archiver": "^6.0.2",
|
||||
"@types/bluebird": "^3.5.36",
|
||||
"@types/body-parser": "^1.19.2",
|
||||
"@types/chai": "^4.3.0",
|
||||
"@types/chai-as-promised": "^7.1.4",
|
||||
"@types/cli-truncate": "^2.0.0",
|
||||
"@types/common-tags": "^1.8.1",
|
||||
"@types/diff": "^5.0.3",
|
||||
"@types/dockerode": "3.3.23",
|
||||
"@types/ejs": "^3.1.0",
|
||||
"@types/express": "^4.17.13",
|
||||
@ -146,7 +124,6 @@
|
||||
"@types/node-cleanup": "^2.1.2",
|
||||
"@types/prettyjson": "^0.0.33",
|
||||
"@types/progress-stream": "^2.0.2",
|
||||
"@types/request": "^2.48.7",
|
||||
"@types/rewire": "^2.5.30",
|
||||
"@types/rimraf": "^3.0.2",
|
||||
"@types/semver": "^7.3.9",
|
||||
@ -160,16 +137,12 @@
|
||||
"@types/update-notifier": "^4.1.1",
|
||||
"@types/which": "^2.0.1",
|
||||
"@types/window-size": "^1.1.1",
|
||||
"@yao-pkg/pkg": "^5.11.1",
|
||||
"archiver": "^7.0.1",
|
||||
"catch-uncommitted": "^2.0.0",
|
||||
"chai": "^4.3.4",
|
||||
"chai-as-promised": "^7.1.1",
|
||||
"cross-env": "^7.0.3",
|
||||
"deep-object-diff": "^1.1.0",
|
||||
"diff": "^5.0.0",
|
||||
"ent": "^2.2.0",
|
||||
"filehound": "^1.17.5",
|
||||
"fs-extra": "^11.2.0",
|
||||
"http-proxy": "^1.18.1",
|
||||
"husky": "^9.1.5",
|
||||
@ -180,7 +153,7 @@
|
||||
"mocha": "^10.6.0",
|
||||
"mock-fs": "^5.2.0",
|
||||
"mock-require": "^3.0.3",
|
||||
"nock": "^13.2.1",
|
||||
"nock": "^14.0.4",
|
||||
"oclif": "^4.17.0",
|
||||
"rewire": "^7.0.0",
|
||||
"simple-git": "^3.14.1",
|
||||
@ -195,12 +168,12 @@
|
||||
"@balena/env-parsing": "^1.1.8",
|
||||
"@balena/es-version": "^1.0.1",
|
||||
"@oclif/core": "^4.1.0",
|
||||
"@sentry/node": "^6.16.1",
|
||||
"@sentry/node": "^9.0.0",
|
||||
"balena-config-json": "^4.2.7",
|
||||
"balena-device-init": "^8.1.3",
|
||||
"balena-device-init": "^8.1.11",
|
||||
"balena-errors": "^4.7.3",
|
||||
"balena-image-fs": "^7.5.2",
|
||||
"balena-preload": "^18.0.1",
|
||||
"balena-preload": "^18.0.4",
|
||||
"balena-sdk": "^21.3.0",
|
||||
"balena-semver": "^2.3.0",
|
||||
"balena-settings-client": "^5.0.2",
|
||||
@ -218,7 +191,7 @@
|
||||
"docker-progress": "^5.1.3",
|
||||
"dockerode": "^4.0.5",
|
||||
"ejs": "^3.1.6",
|
||||
"etcher-sdk": "9.1.0",
|
||||
"etcher-sdk": "^10.0.0",
|
||||
"express": "^4.17.2",
|
||||
"fast-boot2": "^1.1.0",
|
||||
"fast-levenshtein": "^3.0.0",
|
||||
@ -246,9 +219,8 @@
|
||||
"prettyjson": "^1.2.5",
|
||||
"progress-stream": "^2.0.0",
|
||||
"reconfix": "^1.0.0-v0-1-0-fork-46760acff4d165f5238bfac5e464256ef1944476",
|
||||
"request": "^2.88.2",
|
||||
"resin-cli-form": "^3.0.0",
|
||||
"resin-cli-visuals": "^2.0.1",
|
||||
"resin-cli-form": "^4.0.0",
|
||||
"resin-cli-visuals": "^3.0.0",
|
||||
"resin-doodles": "^0.2.0",
|
||||
"resin-stream-logger": "^0.1.2",
|
||||
"rimraf": "^3.0.2",
|
||||
@ -276,6 +248,6 @@
|
||||
}
|
||||
},
|
||||
"versionist": {
|
||||
"publishedAt": "2025-05-16T18:54:50.104Z"
|
||||
"publishedAt": "2025-06-19T09:32:53.877Z"
|
||||
}
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
diff --git a/node_modules/open/index.js b/node_modules/open/index.js
|
||||
index 13147d0..ff161dd 100644
|
||||
--- a/node_modules/open/index.js
|
||||
+++ b/node_modules/open/index.js
|
||||
@@ -10,7 +10,10 @@ const pAccess = promisify(fs.access);
|
||||
const pReadFile = promisify(fs.readFile);
|
||||
|
||||
// Path to included `xdg-open`.
|
||||
-const localXdgOpenPath = path.join(__dirname, 'xdg-open');
|
||||
+const localXdgOpenPath = process.pkg
|
||||
+ ? path.join(path.dirname(process.execPath), 'xdg-open')
|
||||
+ : path.join(__dirname, 'xdg-open');
|
||||
+
|
||||
|
||||
/**
|
||||
Get the mount point for fixed drives in WSL.
|
@ -1,14 +0,0 @@
|
||||
diff --git a/node_modules/node-gyp-build/node-gyp-build.js b/node_modules/node-gyp-build/node-gyp-build.js
|
||||
index 61b398e..3cc3be8 100644
|
||||
--- a/node_modules/node-gyp-build/node-gyp-build.js
|
||||
+++ b/node_modules/node-gyp-build/node-gyp-build.js
|
||||
@@ -30,6 +30,9 @@ load.resolve = load.path = function (dir) {
|
||||
if (process.env[name + '_PREBUILD']) dir = process.env[name + '_PREBUILD']
|
||||
} catch (err) {}
|
||||
|
||||
+ // pkg fix: native node modules are located externally to the pkg executable
|
||||
+ dir = dir.replace(/^\/snapshot\/.+?\/node_modules\//, path.dirname(process.execPath) + path.sep)
|
||||
+
|
||||
if (!prebuildsOnly) {
|
||||
var release = getFirst(path.join(dir, 'build/Release'), matchBuild)
|
||||
if (release) return release
|
@ -1,38 +0,0 @@
|
||||
diff --git a/node_modules/windosu/lib/pipe.js b/node_modules/windosu/lib/pipe.js
|
||||
index dc81fa5..a381cc7 100644
|
||||
--- a/node_modules/windosu/lib/pipe.js
|
||||
+++ b/node_modules/windosu/lib/pipe.js
|
||||
@@ -42,7 +42,8 @@ function pipe(path, options) {
|
||||
return d.promise;
|
||||
}
|
||||
module.exports = pipe;
|
||||
-if (module === require.main) {
|
||||
+
|
||||
+function main() {
|
||||
if (!process.argv[4]) {
|
||||
console.error('Incorrect arguments!');
|
||||
process.exit(-1);
|
||||
@@ -52,3 +53,8 @@ if (module === require.main) {
|
||||
serve: process.argv[3] == 'server'
|
||||
});
|
||||
}
|
||||
+module.exports.main = main;
|
||||
+
|
||||
+if (module === require.main) {
|
||||
+ main();
|
||||
+}
|
||||
diff --git a/node_modules/windosu/lib/windosu.js b/node_modules/windosu/lib/windosu.js
|
||||
index 6502812..dd0391a 100644
|
||||
--- a/node_modules/windosu/lib/windosu.js
|
||||
+++ b/node_modules/windosu/lib/windosu.js
|
||||
@@ -16,7 +16,9 @@ module.exports.exec = function (command, options, callback) {
|
||||
temp: temp,
|
||||
command: command,
|
||||
cliWidth: cliWidth(),
|
||||
- pipe: '"' + process.execPath + '" "' + path.join(__dirname, 'pipe.js') + '"',
|
||||
+ pipe: process.pkg
|
||||
+ ? '"' + process.execPath + '" pkgExec "' + path.join(__dirname, 'pipe.js') + '::main"'
|
||||
+ : '"' + process.execPath + '" "' + path.join(__dirname, 'pipe.js') + '"',
|
||||
input: inputName = id + '-in',
|
||||
output: outputName = id + '-out',
|
||||
stderr_redir: process.stdout.isTTY ? '2>&1' : '2> %ERROR%'
|
20
src/app.ts
20
src/app.ts
@ -34,18 +34,14 @@ export const setupSentry = onceAsync(async () => {
|
||||
const config = await import('./config');
|
||||
const Sentry = await import('@sentry/node');
|
||||
Sentry.init({
|
||||
autoSessionTracking: false,
|
||||
dsn: config.sentryDsn,
|
||||
release: packageJSON.version,
|
||||
});
|
||||
Sentry.configureScope((scope) => {
|
||||
scope.setExtras({
|
||||
is_pkg: !!(process as any).pkg,
|
||||
node_version: process.version,
|
||||
platform: process.platform,
|
||||
});
|
||||
Sentry.getCurrentScope().setExtras({
|
||||
is_pkg: !!(process as any).pkg,
|
||||
node_version: process.version,
|
||||
platform: process.platform,
|
||||
});
|
||||
return Sentry.getCurrentHub();
|
||||
});
|
||||
|
||||
async function checkNodeVersion() {
|
||||
@ -159,18 +155,12 @@ async function oclifRun(command: string[], options: AppOptions) {
|
||||
/** CLI entrypoint. Called by the `bin/run.js` and `bin/dev.js` scripts. */
|
||||
export async function run(cliArgs = process.argv, options: AppOptions) {
|
||||
try {
|
||||
const { setOfflineModeEnvVars, normalizeEnvVars, pkgExec } = await import(
|
||||
const { setOfflineModeEnvVars, normalizeEnvVars } = await import(
|
||||
'./utils/bootstrap'
|
||||
);
|
||||
setOfflineModeEnvVars();
|
||||
normalizeEnvVars();
|
||||
|
||||
// The 'pkgExec' special/internal command provides a Node.js interpreter
|
||||
// for use of the standalone zip package. See pkgExec function.
|
||||
if (cliArgs.length > 3 && cliArgs[2] === 'pkgExec') {
|
||||
return pkgExec(cliArgs[3], cliArgs.slice(4));
|
||||
}
|
||||
|
||||
await init();
|
||||
|
||||
// Look for commands that have been removed and if so, exit with a notice
|
||||
|
@ -38,11 +38,11 @@ import { stripIndent } from './utils/lazy';
|
||||
export async function trackCommand(commandSignature: string) {
|
||||
try {
|
||||
let Sentry: typeof import('@sentry/node');
|
||||
let scope: import('@sentry/node').Scope;
|
||||
if (!process.env.BALENARC_NO_SENTRY) {
|
||||
Sentry = await import('@sentry/node');
|
||||
Sentry.configureScope((scope) => {
|
||||
scope.setExtra('command', commandSignature);
|
||||
});
|
||||
scope = Sentry.getCurrentScope();
|
||||
scope.setExtra('command', commandSignature);
|
||||
}
|
||||
const { getCachedUsername } = await import('./utils/bootstrap');
|
||||
let username: string | undefined;
|
||||
@ -52,11 +52,9 @@ export async function trackCommand(commandSignature: string) {
|
||||
// ignore
|
||||
}
|
||||
if (!process.env.BALENARC_NO_SENTRY) {
|
||||
Sentry!.configureScope((scope) => {
|
||||
scope.setUser({
|
||||
id: username,
|
||||
username,
|
||||
});
|
||||
scope!.setUser({
|
||||
id: username,
|
||||
username,
|
||||
});
|
||||
}
|
||||
if (
|
||||
|
@ -83,43 +83,6 @@ export function setOfflineModeEnvVars() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements the 'pkgExec' command, used as a way to provide a Node.js
|
||||
* interpreter for child_process.spawn()-like operations when the CLI is
|
||||
* executing as a standalone zip package (built-in Node interpreter) and
|
||||
* the system may not have a separate Node.js installation. A present use
|
||||
* case is a patched version of the 'windosu' package that requires a
|
||||
* Node.js interpreter to spawn a privileged child process.
|
||||
*
|
||||
* @param modFunc Path to a JS module that will be executed via require().
|
||||
* The modFunc argument may optionally contain a function name separated
|
||||
* by '::', for example '::main' in:
|
||||
* 'C:\\snapshot\\balena-cli\\node_modules\\windosu\\lib\\pipe.js::main'
|
||||
* in which case that function is executed in the require'd module.
|
||||
* @param args Optional arguments to passed through process.argv and as
|
||||
* arguments to the function specified via modFunc.
|
||||
*/
|
||||
export async function pkgExec(modFunc: string, args: string[]) {
|
||||
const [modPath, funcName] = modFunc.split('::');
|
||||
let replacedModPath = modPath;
|
||||
const match = modPath
|
||||
.replace(/\\/g, '/')
|
||||
.match(/\/snapshot\/balena-cli\/(.+)/);
|
||||
if (match) {
|
||||
replacedModPath = `../${match[1]}`;
|
||||
}
|
||||
process.argv = [process.argv[0], process.argv[1], ...args];
|
||||
try {
|
||||
const mod: any = await import(replacedModPath);
|
||||
if (funcName) {
|
||||
await mod[funcName](...args);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(`Error executing pkgExec "${modFunc}" [${args.join()}]`);
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
export interface CachedUsername {
|
||||
token: string;
|
||||
username: string;
|
||||
|
@ -1322,6 +1322,9 @@ async function pushAndUpdateServiceImages(
|
||||
}
|
||||
}
|
||||
|
||||
// Error messages are limited to 300KB characters in the API, so we truncate longer ones.
|
||||
const MAX_ERROR_MESSAGE_LENGTH = 300_000;
|
||||
|
||||
async function pushServiceImages(
|
||||
docker: Dockerode,
|
||||
logger: Logger,
|
||||
@ -1344,23 +1347,34 @@ async function pushServiceImages(
|
||||
delete serviceImage.build_log;
|
||||
}
|
||||
|
||||
await releaseMod.updateImage(
|
||||
pineClient,
|
||||
serviceImage.id,
|
||||
// These are the only update-able image fields in bC atm, and passing
|
||||
// the whole image object in v7+ would result the allowlist to reject the request.
|
||||
_.pick(serviceImage, [
|
||||
'end_timestamp',
|
||||
'project_type',
|
||||
'error_message',
|
||||
'build_log',
|
||||
'push_timestamp',
|
||||
'status',
|
||||
'content_hash',
|
||||
'dockerfile',
|
||||
'image_size',
|
||||
]),
|
||||
);
|
||||
// These are the only update-able image fields in bC atm, and passing
|
||||
// the whole image object in v7+ would result the allowlist to reject the request.
|
||||
const imagePayload = _.pick(serviceImage, [
|
||||
'end_timestamp',
|
||||
'project_type',
|
||||
'error_message',
|
||||
'build_log',
|
||||
'push_timestamp',
|
||||
'status',
|
||||
'content_hash',
|
||||
'dockerfile',
|
||||
'image_size',
|
||||
]);
|
||||
|
||||
if (
|
||||
typeof imagePayload.error_message === 'string' &&
|
||||
imagePayload.error_message.length > MAX_ERROR_MESSAGE_LENGTH
|
||||
) {
|
||||
logger.logDebug(
|
||||
`Truncating error message of image ${serviceImage.is_stored_at__image_location} to ${MAX_ERROR_MESSAGE_LENGTH} characters.`,
|
||||
);
|
||||
imagePayload.error_message = imagePayload.error_message.substring(
|
||||
0,
|
||||
MAX_ERROR_MESSAGE_LENGTH,
|
||||
);
|
||||
}
|
||||
|
||||
await releaseMod.updateImage(pineClient, serviceImage.id, imagePayload);
|
||||
},
|
||||
);
|
||||
}
|
||||
@ -1596,7 +1610,9 @@ function buildProgressAdapter(inline: boolean) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!str.startsWith('Successfully tagged ')) {
|
||||
// We want to keep the regex match instead of startsWith as it also works with buffers
|
||||
// eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with
|
||||
if (!/^Successfully tagged /.test(str)) {
|
||||
const match = stepRegex.exec(str);
|
||||
if (match) {
|
||||
step = match[1];
|
||||
|
@ -19,7 +19,7 @@ import { getVisuals } from './lazy';
|
||||
import { promisify } from 'util';
|
||||
import type * as Dockerode from 'dockerode';
|
||||
import type Logger = require('./logger');
|
||||
import type { Request } from 'request';
|
||||
import type got from 'got';
|
||||
|
||||
const getBuilderPushEndpoint = function (
|
||||
baseUrl: string,
|
||||
@ -75,7 +75,10 @@ const showPushProgress = function (message: string) {
|
||||
return progressBar;
|
||||
};
|
||||
|
||||
const uploadToPromise = (uploadRequest: Request, logger: Logger) =>
|
||||
const uploadToPromise = (
|
||||
uploadRequest: ReturnType<typeof got.stream.post>,
|
||||
logger: Logger,
|
||||
) =>
|
||||
new Promise<{ buildId: number }>(function (resolve, reject) {
|
||||
uploadRequest.on('error', reject).on('data', function handleMessage(data) {
|
||||
let obj;
|
||||
@ -106,10 +109,7 @@ const uploadToPromise = (uploadRequest: Request, logger: Logger) =>
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* @returns {Promise<{ buildId: number }>}
|
||||
*/
|
||||
const uploadImage = function (
|
||||
const uploadImage = async function (
|
||||
imageStream: NodeJS.ReadableStream & { length: number },
|
||||
token: string,
|
||||
username: string,
|
||||
@ -117,10 +117,9 @@ const uploadImage = function (
|
||||
appName: string,
|
||||
logger: Logger,
|
||||
): Promise<{ buildId: number }> {
|
||||
const request = require('request') as typeof import('request');
|
||||
const progressStream =
|
||||
require('progress-stream') as typeof import('progress-stream');
|
||||
const zlib = require('zlib') as typeof import('zlib');
|
||||
const { default: got } = await import('got');
|
||||
const progressStream = await import('progress-stream');
|
||||
const zlib = await import('zlib');
|
||||
|
||||
// Need to strip off the newline
|
||||
const progressMessage = logger
|
||||
@ -141,25 +140,26 @@ const uploadImage = function (
|
||||
),
|
||||
);
|
||||
|
||||
const uploadRequest = request.post({
|
||||
url: getBuilderPushEndpoint(url, username, appName),
|
||||
headers: {
|
||||
'Content-Encoding': 'gzip',
|
||||
const uploadRequest = got.stream.post(
|
||||
getBuilderPushEndpoint(url, username, appName),
|
||||
{
|
||||
headers: {
|
||||
'Content-Encoding': 'gzip',
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
body: streamWithProgress.pipe(
|
||||
zlib.createGzip({
|
||||
level: 6,
|
||||
}),
|
||||
),
|
||||
throwHttpErrors: false,
|
||||
},
|
||||
auth: {
|
||||
bearer: token,
|
||||
},
|
||||
body: streamWithProgress.pipe(
|
||||
zlib.createGzip({
|
||||
level: 6,
|
||||
}),
|
||||
),
|
||||
});
|
||||
);
|
||||
|
||||
return uploadToPromise(uploadRequest, logger);
|
||||
};
|
||||
|
||||
const uploadLogs = function (
|
||||
const uploadLogs = async function (
|
||||
logs: string,
|
||||
token: string,
|
||||
url: string,
|
||||
@ -167,14 +167,14 @@ const uploadLogs = function (
|
||||
username: string,
|
||||
appName: string,
|
||||
) {
|
||||
const request = require('request') as typeof import('request');
|
||||
return request.post({
|
||||
json: true,
|
||||
url: getBuilderLogPushEndpoint(url, buildId, username, appName),
|
||||
auth: {
|
||||
bearer: token,
|
||||
const { default: got } = await import('got');
|
||||
return got.post(getBuilderLogPushEndpoint(url, buildId, username, appName), {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
body: Buffer.from(logs),
|
||||
responseType: 'json',
|
||||
throwHttpErrors: false,
|
||||
});
|
||||
};
|
||||
|
||||
@ -232,7 +232,7 @@ export const deployLegacy = async function (
|
||||
username,
|
||||
appName,
|
||||
]);
|
||||
uploadLogs(...args);
|
||||
await uploadLogs(...args);
|
||||
}
|
||||
|
||||
return buildId;
|
||||
|
@ -15,12 +15,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
import * as _ from 'lodash';
|
||||
import * as request from 'request';
|
||||
import type * as Stream from 'stream';
|
||||
|
||||
import { retry } from '../helpers';
|
||||
import Logger = require('../logger');
|
||||
import * as ApiErrors from './errors';
|
||||
import { getBalenaSdk } from '../lazy';
|
||||
import type { BalenaSDK } from 'balena-sdk';
|
||||
|
||||
export interface DeviceResponse {
|
||||
[key: string]: any;
|
||||
@ -80,9 +80,9 @@ export class DeviceAPI {
|
||||
}
|
||||
|
||||
// Either return nothing, or throw an error with the info
|
||||
public async setTargetState(state: any): Promise<void> {
|
||||
public async setTargetState(state: Record<string, any>) {
|
||||
const url = this.getUrlForAction('setTargetState');
|
||||
return DeviceAPI.promisifiedRequest(
|
||||
await DeviceAPI.sendRequest(
|
||||
{
|
||||
method: 'POST',
|
||||
url,
|
||||
@ -96,37 +96,37 @@ export class DeviceAPI {
|
||||
public async getTargetState() {
|
||||
const url = this.getUrlForAction('getTargetState');
|
||||
|
||||
return DeviceAPI.promisifiedRequest(
|
||||
return await DeviceAPI.sendRequest(
|
||||
{
|
||||
method: 'GET',
|
||||
url,
|
||||
json: true,
|
||||
},
|
||||
this.logger,
|
||||
).then((body) => {
|
||||
return body.state;
|
||||
).then(({ state }: { state: Record<string, any> }) => {
|
||||
return state;
|
||||
});
|
||||
}
|
||||
|
||||
public async getDeviceInformation(): Promise<DeviceInfo> {
|
||||
public async getDeviceInformation() {
|
||||
const url = this.getUrlForAction('getDeviceInformation');
|
||||
|
||||
return DeviceAPI.promisifiedRequest(
|
||||
return await DeviceAPI.sendRequest(
|
||||
{
|
||||
method: 'GET',
|
||||
url,
|
||||
json: true,
|
||||
},
|
||||
this.logger,
|
||||
).then((body) => {
|
||||
return body.info;
|
||||
).then(({ info }: { info: DeviceInfo }) => {
|
||||
return info;
|
||||
});
|
||||
}
|
||||
|
||||
public async getContainerId(serviceName: string): Promise<string> {
|
||||
const url = this.getUrlForAction('containerId');
|
||||
|
||||
const body = await DeviceAPI.promisifiedRequest(
|
||||
const body = await DeviceAPI.sendRequest(
|
||||
{
|
||||
method: 'GET',
|
||||
url,
|
||||
@ -146,10 +146,10 @@ export class DeviceAPI {
|
||||
return body.containerId;
|
||||
}
|
||||
|
||||
public async ping(): Promise<void> {
|
||||
public async ping() {
|
||||
const url = this.getUrlForAction('ping');
|
||||
|
||||
return DeviceAPI.promisifiedRequest(
|
||||
await DeviceAPI.sendRequest(
|
||||
{
|
||||
method: 'GET',
|
||||
url,
|
||||
@ -158,10 +158,10 @@ export class DeviceAPI {
|
||||
);
|
||||
}
|
||||
|
||||
public getVersion(): Promise<string> {
|
||||
public async getVersion(): Promise<string> {
|
||||
const url = this.getUrlForAction('version');
|
||||
|
||||
return DeviceAPI.promisifiedRequest({
|
||||
return await DeviceAPI.sendRequest({
|
||||
method: 'GET',
|
||||
url,
|
||||
json: true,
|
||||
@ -176,10 +176,10 @@ export class DeviceAPI {
|
||||
});
|
||||
}
|
||||
|
||||
public getStatus(): Promise<Status> {
|
||||
public async getStatus() {
|
||||
const url = this.getUrlForAction('status');
|
||||
|
||||
return DeviceAPI.promisifiedRequest({
|
||||
return await DeviceAPI.sendRequest({
|
||||
method: 'GET',
|
||||
url,
|
||||
json: true,
|
||||
@ -194,96 +194,60 @@ export class DeviceAPI {
|
||||
});
|
||||
}
|
||||
|
||||
public getLogStream(): Promise<Stream.Readable> {
|
||||
public async getLogStream() {
|
||||
const url = this.getUrlForAction('logs');
|
||||
const sdk = getBalenaSdk();
|
||||
|
||||
// Don't use the promisified version here as we want to stream the output
|
||||
return new Promise((resolve, reject) => {
|
||||
const req = request.get(url);
|
||||
|
||||
req.on('error', reject).on('response', (res) => {
|
||||
if (res.statusCode !== 200) {
|
||||
reject(
|
||||
new ApiErrors.DeviceAPIError(
|
||||
'Non-200 response from log streaming endpoint',
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
res.socket.setKeepAlive(true, 1000);
|
||||
} catch (error) {
|
||||
reject(error as Error);
|
||||
}
|
||||
resolve(res);
|
||||
});
|
||||
const stream = await sdk.request.stream({ url });
|
||||
stream.on('response', (res) => {
|
||||
if (res.statusCode !== 200) {
|
||||
throw new ApiErrors.DeviceAPIError(
|
||||
'Non-200 response from log streaming endpoint',
|
||||
);
|
||||
}
|
||||
res.socket.setKeepAlive(true, 1000);
|
||||
});
|
||||
return stream;
|
||||
}
|
||||
|
||||
private getUrlForAction(action: keyof typeof deviceEndpoints): string {
|
||||
private getUrlForAction(action: keyof typeof deviceEndpoints) {
|
||||
return `${this.deviceAddress}${deviceEndpoints[action]}`;
|
||||
}
|
||||
|
||||
// A helper method for promisifying general (non-streaming) requests. Streaming
|
||||
// requests should use a seperate setup
|
||||
private static async promisifiedRequest<
|
||||
T extends Parameters<typeof request>[0],
|
||||
>(opts: T, logger?: Logger): Promise<any> {
|
||||
interface ObjectWithUrl {
|
||||
url?: string;
|
||||
}
|
||||
|
||||
if (logger != null) {
|
||||
let url: string | null = null;
|
||||
if (_.isObject(opts) && (opts as ObjectWithUrl).url != null) {
|
||||
// the `as string` shouldn't be necessary, but the type system
|
||||
// is getting a little confused
|
||||
url = (opts as ObjectWithUrl).url!;
|
||||
} else if (typeof opts === 'string') {
|
||||
url = opts;
|
||||
}
|
||||
|
||||
if (url != null) {
|
||||
logger.logDebug(`Sending request to ${url}`);
|
||||
}
|
||||
private static async sendRequest(
|
||||
opts: Parameters<BalenaSDK['request']['send']>[number],
|
||||
logger?: Logger,
|
||||
) {
|
||||
if (logger != null && opts.url != null) {
|
||||
logger.logDebug(`Sending request to ${opts.url}`);
|
||||
}
|
||||
|
||||
const sdk = getBalenaSdk();
|
||||
const doRequest = async () => {
|
||||
return await new Promise((resolve, reject) => {
|
||||
return request(opts, (err, response, body) => {
|
||||
if (err) {
|
||||
reject(err as Error);
|
||||
return;
|
||||
}
|
||||
switch (response.statusCode) {
|
||||
case 200: {
|
||||
resolve(body);
|
||||
return;
|
||||
}
|
||||
case 400: {
|
||||
reject(new ApiErrors.BadRequestDeviceAPIError(body.message));
|
||||
return;
|
||||
}
|
||||
case 503: {
|
||||
reject(new ApiErrors.ServiceUnavailableAPIError(body.message));
|
||||
return;
|
||||
}
|
||||
default: {
|
||||
reject(new ApiErrors.DeviceAPIError(body.message));
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
const response = await sdk.request.send(opts);
|
||||
const bodyError =
|
||||
typeof response.body === 'string'
|
||||
? response.body
|
||||
: response.body.message;
|
||||
switch (response.statusCode) {
|
||||
case 200:
|
||||
return response.body;
|
||||
case 400:
|
||||
throw new ApiErrors.BadRequestDeviceAPIError(bodyError);
|
||||
case 503:
|
||||
throw new ApiErrors.ServiceUnavailableAPIError(bodyError);
|
||||
default:
|
||||
new ApiErrors.DeviceAPIError(bodyError);
|
||||
}
|
||||
};
|
||||
|
||||
return await retry({
|
||||
func: doRequest,
|
||||
initialDelayMs: 2000,
|
||||
maxAttempts: 6,
|
||||
label: `Supervisor API (${opts.method} ${(opts as any).url})`,
|
||||
label: `Supervisor API (${opts.method} ${opts.url})`,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default DeviceAPI;
|
||||
|
@ -603,11 +603,11 @@ function getImageNameFromTask(task: BuildTask): string {
|
||||
}
|
||||
|
||||
export function generateTargetState(
|
||||
currentTargetState: any,
|
||||
currentTargetState: Record<string, any>,
|
||||
composition: Composition,
|
||||
buildTasks: BuildTask[],
|
||||
env: ParsedEnvironment,
|
||||
): any {
|
||||
) {
|
||||
const keyedBuildTasks = _.keyBy(buildTasks, 'serviceName');
|
||||
|
||||
const services: { [serviceId: string]: any } = {};
|
||||
|
@ -28,7 +28,7 @@ import { instanceOf } from '../../errors';
|
||||
import Logger = require('../logger');
|
||||
|
||||
import { Dockerfile } from 'livepush';
|
||||
import type DeviceAPI from './api';
|
||||
import type { DeviceAPI } from './api';
|
||||
import type { DeviceInfo, Status } from './api';
|
||||
import type { DeviceDeployOptions } from './deploy';
|
||||
import { generateTargetState, rebuildSingleTask } from './deploy';
|
||||
|
@ -94,7 +94,7 @@ async function installQemu(arch: string, qemuPath: string) {
|
||||
const urlVersion = encodeURIComponent(QEMU_VERSION);
|
||||
const qemuUrl = `https://github.com/balena-io/qemu/releases/download/${urlVersion}/${urlFile}`;
|
||||
|
||||
const request = await import('request');
|
||||
const { default: got } = await import('got');
|
||||
const fs = await import('fs');
|
||||
const zlib = await import('zlib');
|
||||
const tar = await import('tar-stream');
|
||||
@ -117,7 +117,8 @@ async function installQemu(arch: string, qemuPath: string) {
|
||||
reject(err as Error);
|
||||
}
|
||||
});
|
||||
request(qemuUrl)
|
||||
got.stream
|
||||
.get(qemuUrl)
|
||||
.on('error', reject)
|
||||
.pipe(zlib.createGunzip())
|
||||
.on('error', reject)
|
||||
|
@ -16,7 +16,8 @@ limitations under the License.
|
||||
import type { BalenaSDK } from 'balena-sdk';
|
||||
import * as JSONStream from 'JSONStream';
|
||||
import * as readline from 'readline';
|
||||
import * as request from 'request';
|
||||
import type { PlainResponse } from 'got';
|
||||
import type got from 'got';
|
||||
import type { RegistrySecrets } from '@balena/compose/dist/multibuild';
|
||||
import type * as Stream from 'stream';
|
||||
import streamToPromise = require('stream-to-promise');
|
||||
@ -119,7 +120,7 @@ export async function startRemoteBuild(
|
||||
} catch (err) {
|
||||
console.error(err.message);
|
||||
} finally {
|
||||
buildRequest.abort();
|
||||
buildRequest.destroy();
|
||||
const sigintErr = new SIGINTError('Build aborted on SIGINT signal');
|
||||
sigintErr.code = 'SIGINT';
|
||||
stream.emit('error', sigintErr);
|
||||
@ -337,32 +338,29 @@ async function getTarStream(build: RemoteBuild): Promise<Stream.Readable> {
|
||||
/**
|
||||
* Initiate a POST HTTP request to the remote builder and add some event
|
||||
* listeners.
|
||||
*
|
||||
* ¡! Note: this function must be synchronous because of a bug in the `request`
|
||||
* library that requires the following two steps to take place in the same
|
||||
* iteration of Node's event loop: (1) adding a listener for the 'response'
|
||||
* event and (2) calling request.pipe():
|
||||
* https://github.com/request/request/issues/887
|
||||
*/
|
||||
function createRemoteBuildRequest(
|
||||
async function createRemoteBuildRequest(
|
||||
build: RemoteBuild,
|
||||
tarStream: Stream.Readable,
|
||||
builderUrl: string,
|
||||
onError: (error: Error) => void,
|
||||
): request.Request {
|
||||
const zlib = require('zlib') as typeof import('zlib');
|
||||
) {
|
||||
const { default: got } = await import('got');
|
||||
const zlib = await import('zlib');
|
||||
if (DEBUG_MODE) {
|
||||
console.error(`[debug] Connecting to builder at ${builderUrl}`);
|
||||
}
|
||||
return request
|
||||
.post({
|
||||
url: builderUrl,
|
||||
auth: { bearer: build.auth },
|
||||
headers: { 'Content-Encoding': 'gzip' },
|
||||
return got.stream
|
||||
.post(builderUrl, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${build.auth}`,
|
||||
'Content-Encoding': 'gzip',
|
||||
},
|
||||
body: tarStream.pipe(zlib.createGzip({ level: 6 })),
|
||||
throwHttpErrors: false,
|
||||
})
|
||||
.once('error', onError) // `.once` because the handler re-emits
|
||||
.once('response', (response: request.RequestResponse) => {
|
||||
.once('response', (response: PlainResponse) => {
|
||||
if (response.statusCode >= 100 && response.statusCode < 400) {
|
||||
if (DEBUG_MODE) {
|
||||
console.error(
|
||||
@ -374,8 +372,8 @@ function createRemoteBuildRequest(
|
||||
'Remote builder responded with HTTP error:',
|
||||
`${response.statusCode} ${response.statusMessage}`,
|
||||
];
|
||||
if (response.body) {
|
||||
msgArr.push(response.body);
|
||||
if (response.rawBody) {
|
||||
msgArr.push(response.rawBody.toString());
|
||||
}
|
||||
onError(new ExpectedError(msgArr.join('\n')));
|
||||
}
|
||||
@ -384,7 +382,7 @@ function createRemoteBuildRequest(
|
||||
|
||||
async function getRemoteBuildStream(
|
||||
build: RemoteBuild,
|
||||
): Promise<[request.Request, Stream.Stream]> {
|
||||
): Promise<[ReturnType<typeof got.stream.post>, Stream.Stream]> {
|
||||
const builderUrl = await getBuilderEndpoint(
|
||||
build.baseUrl,
|
||||
build.appSlug,
|
||||
@ -412,7 +410,7 @@ async function getRemoteBuildStream(
|
||||
}
|
||||
|
||||
const tarStream = await getTarStream(build);
|
||||
const buildRequest = createRemoteBuildRequest(
|
||||
const buildRequest = await createRemoteBuildRequest(
|
||||
build,
|
||||
tarStream,
|
||||
builderUrl,
|
||||
|
@ -20,7 +20,7 @@ import * as chaiAsPromised from 'chai-as-promised';
|
||||
import * as ejs from 'ejs';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as request from 'request';
|
||||
import got from 'got';
|
||||
import * as sinon from 'sinon';
|
||||
|
||||
import { LoginServer } from '../../build/auth/server';
|
||||
@ -61,38 +61,30 @@ describe('Login server:', function () {
|
||||
server.shutdown();
|
||||
});
|
||||
|
||||
async function testLogin(opt: {
|
||||
async function testLogin({
|
||||
verb = 'post',
|
||||
...opt
|
||||
}: {
|
||||
expectedBody: string;
|
||||
expectedErrorMsg?: string;
|
||||
expectedStatusCode: number;
|
||||
expectedToken: string;
|
||||
urlPath?: string;
|
||||
verb?: string;
|
||||
verb?: 'post' | 'put';
|
||||
}) {
|
||||
opt.urlPath = opt.urlPath ?? addr.urlPath;
|
||||
const post = opt.verb
|
||||
? ((request as any)[opt.verb] as typeof request.post)
|
||||
: request.post;
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
post(
|
||||
`http://${addr.host}:${addr.port}${opt.urlPath}`,
|
||||
{
|
||||
form: {
|
||||
token: opt.expectedToken,
|
||||
},
|
||||
const res = await got[verb](
|
||||
`http://${addr.host}:${addr.port}${opt.urlPath}`,
|
||||
{
|
||||
form: {
|
||||
token: opt.expectedToken,
|
||||
},
|
||||
function (error, response, body) {
|
||||
try {
|
||||
expect(error).to.not.exist;
|
||||
expect(response.statusCode).to.equal(opt.expectedStatusCode);
|
||||
expect(body).to.equal(opt.expectedBody);
|
||||
resolve();
|
||||
} catch (err) {
|
||||
reject(err as Error);
|
||||
}
|
||||
},
|
||||
);
|
||||
});
|
||||
throwHttpErrors: false,
|
||||
},
|
||||
);
|
||||
|
||||
expect(res.body).to.equal(opt.expectedBody);
|
||||
expect(res.statusCode).to.equal(opt.expectedStatusCode);
|
||||
|
||||
try {
|
||||
const token = await server.awaitForToken();
|
||||
@ -127,7 +119,7 @@ describe('Login server:', function () {
|
||||
expectedStatusCode: 404,
|
||||
expectedToken: tokens.johndoe.token,
|
||||
expectedErrorMsg: 'Unknown path or verb',
|
||||
verb: 'get',
|
||||
verb: 'put',
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -442,6 +442,93 @@ describe('balena build', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('should create the expected tar stream (docker-compose --nologs)', async () => {
|
||||
const projectPath = path.join(projectsPath, 'docker-compose', 'basic');
|
||||
const service1Dockerfile = (
|
||||
await fs.readFile(
|
||||
path.join(projectPath, 'service1', 'Dockerfile.template'),
|
||||
'utf8',
|
||||
)
|
||||
).replace('%%BALENA_MACHINE_NAME%%', 'nuc');
|
||||
const expectedFilesByService: ExpectedTarStreamFilesByService = {
|
||||
service1: {
|
||||
Dockerfile: {
|
||||
contents: service1Dockerfile,
|
||||
fileSize: service1Dockerfile.length,
|
||||
type: 'file',
|
||||
},
|
||||
'Dockerfile.template': { fileSize: 144, type: 'file' },
|
||||
'file1.sh': { fileSize: 12, type: 'file' },
|
||||
},
|
||||
service2: {
|
||||
'Dockerfile-alt': { fileSize: 13, type: 'file' },
|
||||
'file2-crlf.sh': {
|
||||
fileSize: isWindows ? 12 : 14,
|
||||
testStream: isWindows ? expectStreamNoCRLF : undefined,
|
||||
type: 'file',
|
||||
},
|
||||
'src/file1.sh': { fileSize: 12, type: 'file' },
|
||||
},
|
||||
};
|
||||
const responseFilename = 'build-POST.json';
|
||||
const responseBody = await fs.readFile(
|
||||
path.join(dockerResponsePath, responseFilename),
|
||||
'utf8',
|
||||
);
|
||||
const expectedQueryParamsByService = {
|
||||
service1: Object.entries(
|
||||
_.merge({}, commonComposeQueryParams, {
|
||||
buildargs: {
|
||||
COMPOSE_ARG: 'A',
|
||||
barg: 'b',
|
||||
SERVICE1_VAR: 'This is a service specific variable',
|
||||
},
|
||||
cachefrom: ['my/img1', 'my/img2'],
|
||||
}),
|
||||
),
|
||||
service2: Object.entries(
|
||||
_.merge({}, commonComposeQueryParamsIntel, {
|
||||
buildargs: {
|
||||
COMPOSE_ARG: 'A',
|
||||
barg: 'b',
|
||||
},
|
||||
cachefrom: ['my/img1', 'my/img2'],
|
||||
dockerfile: 'Dockerfile-alt',
|
||||
}),
|
||||
),
|
||||
};
|
||||
const expectedResponseLines: string[] = [
|
||||
...commonResponseLines[responseFilename],
|
||||
...getDockerignoreWarn1(
|
||||
[path.join(projectPath, 'service2', '.dockerignore')],
|
||||
'build',
|
||||
),
|
||||
];
|
||||
if (isWindows) {
|
||||
expectedResponseLines.push(
|
||||
`[Info] Converting line endings CRLF -> LF for file: ${path.join(
|
||||
projectPath,
|
||||
'service2',
|
||||
'file2-crlf.sh',
|
||||
)}`,
|
||||
);
|
||||
}
|
||||
docker.expectGetInfo({});
|
||||
docker.expectGetManifestNucAlpine();
|
||||
docker.expectGetManifestBusybox();
|
||||
await testDockerBuildStream({
|
||||
commandLine: `build ${projectPath} --deviceType nuc --arch amd64 -B COMPOSE_ARG=A -B barg=b --cache-from my/img1,my/img2 --nologs`,
|
||||
dockerMock: docker,
|
||||
expectedFilesByService,
|
||||
expectedQueryParamsByService,
|
||||
expectedResponseLines,
|
||||
projectPath,
|
||||
responseBody,
|
||||
responseCode: 200,
|
||||
services: ['service1', 'service2'],
|
||||
});
|
||||
});
|
||||
|
||||
it('should create the expected tar stream (docker-compose, --multi-dockerignore)', async () => {
|
||||
const projectPath = path.join(projectsPath, 'docker-compose', 'basic');
|
||||
const service1Dockerfile = (
|
||||
|
@ -27,7 +27,7 @@ import * as sinon from 'sinon';
|
||||
import { BalenaAPIMock } from '../nock/balena-api-mock';
|
||||
import { expectStreamNoCRLF, testDockerBuildStream } from '../docker-build';
|
||||
import { DockerMock, dockerResponsePath } from '../nock/docker-mock';
|
||||
import { cleanOutput, runCommand, switchSentry } from '../helpers';
|
||||
import { cleanOutput, runCommand } from '../helpers';
|
||||
import type {
|
||||
ExpectedTarStreamFiles,
|
||||
ExpectedTarStreamFilesByService,
|
||||
@ -262,7 +262,6 @@ describe('balena deploy', function () {
|
||||
});
|
||||
|
||||
it('should update a release with status="failed" on error (single container)', async () => {
|
||||
let sentryStatus: boolean | undefined;
|
||||
const projectPath = path.join(projectsPath, 'no-docker-compose', 'basic');
|
||||
const expectedFiles: ExpectedTarStreamFiles = {
|
||||
'src/.dockerignore': { fileSize: 16, type: 'file' },
|
||||
@ -319,7 +318,6 @@ describe('balena deploy', function () {
|
||||
api.expectPostImageLabel();
|
||||
|
||||
try {
|
||||
sentryStatus = await switchSentry(false);
|
||||
sinon.stub(process, 'exit');
|
||||
|
||||
await testDockerBuildStream({
|
||||
@ -337,9 +335,8 @@ describe('balena deploy', function () {
|
||||
});
|
||||
expect(failedImagePatchRequests).to.equal(maxRequestRetries);
|
||||
} finally {
|
||||
await switchSentry(sentryStatus);
|
||||
// @ts-expect-error claims restore does not exist
|
||||
process.exit.restore();
|
||||
// We mock process.exit and need to force cast it to a SinonStub to restore it
|
||||
(process.exit as unknown as sinon.SinonStub).restore();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -21,8 +21,6 @@ import { BalenaAPIMock } from '../../nock/balena-api-mock';
|
||||
import { cleanOutput, runCommand } from '../../helpers';
|
||||
import { SupervisorMock } from '../../nock/supervisor-mock';
|
||||
|
||||
const itS = process.env.BALENA_CLI_TEST_TYPE === 'standalone' ? it : it.skip;
|
||||
|
||||
describe('balena device logs', function () {
|
||||
let api: BalenaAPIMock;
|
||||
let supervisor: SupervisorMock;
|
||||
@ -39,10 +37,7 @@ describe('balena device logs', function () {
|
||||
supervisor.done();
|
||||
});
|
||||
|
||||
// skip non-standalone tests because nock's mock socket causes the error:
|
||||
// "setKeepAliveInterval expects an instance of socket as its first argument"
|
||||
// in utils/device/api.ts: NetKeepalive.setKeepAliveInterval(sock, 5000);
|
||||
itS('should reach the expected endpoints on a local device', async () => {
|
||||
it('should reach the expected endpoints on a local device', async () => {
|
||||
supervisor.expectGetPing();
|
||||
supervisor.expectGetLogs();
|
||||
supervisor.expectGetLogs();
|
||||
|
@ -17,13 +17,21 @@
|
||||
|
||||
import * as _ from 'lodash';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
import { createGunzip } from 'zlib';
|
||||
|
||||
import * as packageJSON from '../package.json';
|
||||
import { getNodeEngineVersionWarn } from '../build/utils/messages';
|
||||
import { warnify } from '../build/utils/messages';
|
||||
|
||||
const balenaExe = process.platform === 'win32' ? 'balena.exe' : 'balena';
|
||||
const standalonePath = path.resolve(__dirname, '..', 'build-bin', balenaExe);
|
||||
const standalonePath = path.resolve(
|
||||
__dirname,
|
||||
'..',
|
||||
'dist',
|
||||
'balena',
|
||||
'bin',
|
||||
'balena',
|
||||
);
|
||||
|
||||
export interface TestOutput {
|
||||
err: string[]; // stderr
|
||||
@ -164,11 +172,11 @@ async function runCommandInSubprocess(
|
||||
// override default proxy exclusion to allow proxying of requests to 127.0.0.1
|
||||
BALENARC_DO_PROXY: '127.0.0.1,localhost',
|
||||
};
|
||||
const { execFile } = await import('child_process');
|
||||
const { exec } = await import('child_process');
|
||||
|
||||
await new Promise<void>((resolve) => {
|
||||
const child = execFile(
|
||||
standalonePath,
|
||||
cmd.split(' ').filter((c) => c),
|
||||
const child = exec(
|
||||
`${standalonePath} ${cmd}`,
|
||||
{ env: { ...process.env, ...addedEnvs } },
|
||||
($error, $stdout, $stderr) => {
|
||||
stderr = $stderr || '';
|
||||
@ -213,6 +221,67 @@ ${$error}`;
|
||||
};
|
||||
}
|
||||
|
||||
async function extractTarStream() {
|
||||
if (
|
||||
fs.existsSync(path.join(__dirname, '..', 'dist', 'balena', 'bin', 'balena'))
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
const tar = await import('tar-stream');
|
||||
|
||||
const version = 'v' + packageJSON.version;
|
||||
const arch = process.arch;
|
||||
const platform =
|
||||
process.platform === 'win32'
|
||||
? 'windows'
|
||||
: process.platform === 'darwin'
|
||||
? 'macOS'
|
||||
: process.platform;
|
||||
|
||||
const sourceFile = path.join(
|
||||
__dirname,
|
||||
'..',
|
||||
'dist',
|
||||
`balena-cli-${version}-${platform}-${arch}-standalone.tar.gz`,
|
||||
);
|
||||
const destinationDir = path.join(__dirname, '..', 'dist');
|
||||
|
||||
const extract = tar.extract();
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
extract.on('entry', (header, stream, next) => {
|
||||
const outputPath = path.join(destinationDir, header.name);
|
||||
|
||||
if (header.type === 'directory') {
|
||||
fs.mkdirSync(outputPath, { recursive: true });
|
||||
next();
|
||||
} else {
|
||||
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
||||
const fileStream = fs.createWriteStream(outputPath);
|
||||
|
||||
stream.pipe(fileStream);
|
||||
|
||||
fileStream.on('close', () => {
|
||||
if (header.mode) {
|
||||
fs.chmodSync(outputPath, header.mode); // Set file permissions
|
||||
}
|
||||
next();
|
||||
});
|
||||
fileStream.on('error', reject);
|
||||
}
|
||||
});
|
||||
|
||||
extract.on('finish', resolve);
|
||||
extract.on('error', reject);
|
||||
|
||||
fs.createReadStream(sourceFile)
|
||||
.pipe(createGunzip())
|
||||
.pipe(extract)
|
||||
.on('error', reject);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Run a CLI command and capture its stdout, stderr and exit code for testing.
|
||||
* If the BALENA_CLI_TEST_TYPE env var is set to 'standalone', then the command
|
||||
@ -223,6 +292,7 @@ ${$error}`;
|
||||
*/
|
||||
export async function runCommand(cmd: string): Promise<TestOutput> {
|
||||
if (process.env.BALENA_CLI_TEST_TYPE === 'standalone') {
|
||||
await extractTarStream();
|
||||
const semver = await import('semver');
|
||||
if (semver.lt(process.version, '10.16.0')) {
|
||||
throw new Error(
|
||||
@ -347,15 +417,3 @@ export function deepJsonParse(data: any): any {
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
export async function switchSentry(
|
||||
enabled: boolean | undefined,
|
||||
): Promise<boolean | undefined> {
|
||||
const balenaCLI = await import('../build/app');
|
||||
const sentryOpts = (await balenaCLI.setupSentry()).getClient()?.getOptions();
|
||||
if (sentryOpts) {
|
||||
const sentryStatus = sentryOpts.enabled;
|
||||
sentryOpts.enabled = enabled;
|
||||
return sentryStatus;
|
||||
}
|
||||
}
|
||||
|
@ -41,23 +41,18 @@ export class BuilderMock extends NockMock {
|
||||
checkBuildRequestBody: (requestBody: string | Buffer) => Promise<void>;
|
||||
}) {
|
||||
this.optPost(/^\/v3\/build($|[(?])/, opts).reply(
|
||||
async function (uri, requestBody, callback) {
|
||||
let error: Error | null = null;
|
||||
try {
|
||||
await opts.checkURI(uri);
|
||||
if (typeof requestBody === 'string') {
|
||||
const gzipped = Buffer.from(requestBody, 'hex');
|
||||
const gunzipped = await gunzipAsync(gzipped);
|
||||
await opts.checkBuildRequestBody(gunzipped);
|
||||
} else {
|
||||
throw new Error(
|
||||
`unexpected requestBody type "${typeof requestBody}"`,
|
||||
);
|
||||
}
|
||||
} catch (err) {
|
||||
error = err;
|
||||
async function (uri, requestBody) {
|
||||
await opts.checkURI(uri);
|
||||
if (typeof requestBody === 'string') {
|
||||
const gzipped = Buffer.from(requestBody, 'hex');
|
||||
const gunzipped = await gunzipAsync(gzipped);
|
||||
await opts.checkBuildRequestBody(gunzipped);
|
||||
return [opts.responseCode, opts.responseBody];
|
||||
} else {
|
||||
throw new Error(
|
||||
`unexpected requestBody type "${typeof requestBody}"`,
|
||||
);
|
||||
}
|
||||
callback(error, [opts.responseCode, opts.responseBody]);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
@ -81,21 +81,14 @@ export class DockerMock extends NockMock {
|
||||
this.optPost(
|
||||
new RegExp(`^/build\\?(|.+&)${qs.stringify({ t: opts.tag })}&`),
|
||||
opts,
|
||||
).reply(async function (uri, requestBody, cb) {
|
||||
let error: Error | null = null;
|
||||
try {
|
||||
await opts.checkURI(uri);
|
||||
if (typeof requestBody === 'string') {
|
||||
await opts.checkBuildRequestBody(requestBody);
|
||||
} else {
|
||||
throw new Error(
|
||||
`unexpected requestBody type "${typeof requestBody}"`,
|
||||
);
|
||||
}
|
||||
} catch (err) {
|
||||
error = err;
|
||||
).reply(async function (uri, requestBody) {
|
||||
await opts.checkURI(uri);
|
||||
if (typeof requestBody === 'string') {
|
||||
await opts.checkBuildRequestBody(requestBody);
|
||||
return [opts.responseCode, opts.responseBody];
|
||||
} else {
|
||||
throw new Error(`unexpected requestBody type "${typeof requestBody}"`);
|
||||
}
|
||||
cb(error, [opts.responseCode, opts.responseBody]);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1,382 +0,0 @@
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/app.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/app.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/help.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/common-args.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/common-flags.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/compose_ts.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/docker.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/env-common.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/helpers.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/lazy.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/generate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/revoke.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/app/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/block/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/generate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/inject.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/read.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/reconfigure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/write.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/deploy/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/deactivate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/detect.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/identify.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/init.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/local-mode.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/logs.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/move.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/note.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/os-update.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/pin.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/public-url.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/purge.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/reboot.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/register.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/restart.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/shutdown.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/ssh.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/start-service.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/stop-service.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/track-fleet.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/tunnel.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device-type/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/set.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/pin.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/purge.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/restart.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/track-latest.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/internal/osinit.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/join/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/leave/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/local/configure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/local/flash.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/login/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/logout/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/organization/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/build-config.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/configure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/download.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/initialize.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/versions.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/preload/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/push/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/finalize.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/invalidate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/validate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/settings/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/add.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/support/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/set.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/util/available-drives.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/version/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/whoami/index.js
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/open/xdg-open
|
||||
%2: path-to-executable/xdg-open
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/open/xdg-open
|
||||
%2: path-to-executable/xdg-open
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/build/Release/drivelist.node
|
||||
%2: path-to-executable/drivelist.node
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/darwin.sh
|
||||
%2: path-to-executable/drivelist/darwin.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/linux.sh
|
||||
%2: path-to-executable/drivelist/linux.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/build/Release/drivelist.node
|
||||
%2: path-to-executable/drivelist.node
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/darwin.sh
|
||||
%2: path-to-executable/drivelist/darwin.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/linux.sh
|
||||
%2: path-to-executable/drivelist/linux.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Cannot resolve 'path'
|
||||
node_modules/@balena/compose/dist/parse/schemas/index.js
|
||||
Dynamic require may fail at run time, because the requested file
|
||||
is unknown at compilation time and not included into executable.
|
||||
Use a string literal as an argument for 'require', or leave it
|
||||
as is and specify the resolved file name in 'scripts' option.
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/axios.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/utils.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/adapters/adapters.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/adapters/http.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/adapters/xhr.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/cancel/CancelToken.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/cancel/CanceledError.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/cancel/isCancel.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/Axios.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/AxiosError.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/AxiosHeaders.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/InterceptorManager.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/buildFullPath.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/dispatchRequest.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/mergeConfig.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/settle.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/transformData.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/defaults/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/defaults/transitional.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/env/data.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/AxiosTransformStream.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/AxiosURLSearchParams.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/HttpStatusCode.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/bind.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/buildURL.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/callbackify.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/combineURLs.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/cookies.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/formDataToJSON.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/formDataToStream.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/fromDataURI.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/isAbsoluteURL.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/isAxiosError.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/isURLSameOrigin.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/parseHeaders.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/parseProtocol.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/readBlob.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/speedometer.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/spread.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/throttle.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/toFormData.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/toURLEncodedForm.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/validator.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/platform/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/platform/common/utils.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/platform/node/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/platform/node/classes/FormData.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/platform/node/classes/URLSearchParams.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/form-data-encoder/lib/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/formdata-node/lib/form-data.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/@isaacs/cliui/node_modules/string-width/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/@isaacs/cliui/node_modules/strip-ansi/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/@isaacs/cliui/node_modules/wrap-ansi/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/@isaacs/cliui/node_modules/ansi-regex/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/@isaacs/cliui/node_modules/ansi-styles/index.js
|
@ -1,382 +0,0 @@
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/app.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/app.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/help.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/common-args.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/common-flags.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/compose_ts.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/docker.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/env-common.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/helpers.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/lazy.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/generate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/revoke.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/app/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/block/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/generate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/inject.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/read.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/reconfigure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/write.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/deploy/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/deactivate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/detect.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/identify.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/init.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/local-mode.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/logs.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/move.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/note.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/os-update.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/pin.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/public-url.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/purge.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/reboot.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/register.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/restart.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/shutdown.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/ssh.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/start-service.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/stop-service.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/track-fleet.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/tunnel.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device-type/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/set.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/pin.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/purge.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/restart.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/track-latest.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/internal/osinit.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/join/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/leave/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/local/configure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/local/flash.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/login/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/logout/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/organization/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/build-config.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/configure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/download.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/initialize.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/versions.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/preload/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/push/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/finalize.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/invalidate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/validate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/settings/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/add.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/support/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/set.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/util/available-drives.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/version/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/whoami/index.js
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/open/xdg-open
|
||||
%2: path-to-executable/xdg-open
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/open/xdg-open
|
||||
%2: path-to-executable/xdg-open
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/build/Release/drivelist.node
|
||||
%2: path-to-executable/drivelist.node
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/darwin.sh
|
||||
%2: path-to-executable/drivelist/darwin.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/linux.sh
|
||||
%2: path-to-executable/drivelist/linux.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/build/Release/drivelist.node
|
||||
%2: path-to-executable/drivelist.node
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/darwin.sh
|
||||
%2: path-to-executable/drivelist/darwin.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/linux.sh
|
||||
%2: path-to-executable/drivelist/linux.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Cannot resolve 'path'
|
||||
node_modules/@balena/compose/dist/parse/schemas/index.js
|
||||
Dynamic require may fail at run time, because the requested file
|
||||
is unknown at compilation time and not included into executable.
|
||||
Use a string literal as an argument for 'require', or leave it
|
||||
as is and specify the resolved file name in 'scripts' option.
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/axios.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/utils.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/adapters/adapters.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/adapters/http.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/adapters/xhr.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/cancel/CancelToken.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/cancel/CanceledError.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/cancel/isCancel.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/Axios.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/AxiosError.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/AxiosHeaders.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/InterceptorManager.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/buildFullPath.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/dispatchRequest.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/mergeConfig.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/settle.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/transformData.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/defaults/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/defaults/transitional.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/env/data.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/AxiosTransformStream.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/AxiosURLSearchParams.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/HttpStatusCode.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/bind.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/buildURL.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/callbackify.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/combineURLs.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/cookies.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/formDataToJSON.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/formDataToStream.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/fromDataURI.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/isAbsoluteURL.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/isAxiosError.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/isURLSameOrigin.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/parseHeaders.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/parseProtocol.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/readBlob.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/speedometer.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/spread.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/throttle.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/toFormData.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/toURLEncodedForm.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/validator.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/platform/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/platform/common/utils.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/platform/node/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/platform/node/classes/FormData.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/platform/node/classes/URLSearchParams.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/form-data-encoder/lib/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/formdata-node/lib/form-data.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/@isaacs/cliui/node_modules/string-width/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/@isaacs/cliui/node_modules/strip-ansi/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/@isaacs/cliui/node_modules/wrap-ansi/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/@isaacs/cliui/node_modules/ansi-regex/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/@isaacs/cliui/node_modules/ansi-styles/index.js
|
@ -1,382 +0,0 @@
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/app.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/app.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/help.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/common-args.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/common-flags.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/compose_ts.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/docker.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/env-common.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/helpers.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/lazy.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/generate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/revoke.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/app/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/block/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/generate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/inject.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/read.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/reconfigure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/write.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/deploy/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/deactivate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/detect.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/identify.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/init.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/local-mode.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/logs.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/move.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/note.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/os-update.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/pin.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/public-url.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/purge.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/reboot.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/register.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/restart.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/shutdown.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/ssh.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/start-service.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/stop-service.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/track-fleet.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/tunnel.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device-type/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/set.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/pin.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/purge.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/restart.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/track-latest.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/internal/osinit.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/join/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/leave/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/local/configure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/local/flash.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/login/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/logout/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/organization/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/build-config.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/configure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/download.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/initialize.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/versions.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/preload/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/push/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/finalize.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/invalidate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/validate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/settings/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/add.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/support/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/set.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/util/available-drives.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/version/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/whoami/index.js
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/open/xdg-open
|
||||
%2: path-to-executable/xdg-open
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/open/xdg-open
|
||||
%2: path-to-executable/xdg-open
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/build/Release/drivelist.node
|
||||
%2: path-to-executable/drivelist.node
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/darwin.sh
|
||||
%2: path-to-executable/drivelist/darwin.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/linux.sh
|
||||
%2: path-to-executable/drivelist/linux.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/build/Release/drivelist.node
|
||||
%2: path-to-executable/drivelist.node
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/darwin.sh
|
||||
%2: path-to-executable/drivelist/darwin.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/linux.sh
|
||||
%2: path-to-executable/drivelist/linux.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Cannot resolve 'path'
|
||||
node_modules/@balena/compose/dist/parse/schemas/index.js
|
||||
Dynamic require may fail at run time, because the requested file
|
||||
is unknown at compilation time and not included into executable.
|
||||
Use a string literal as an argument for 'require', or leave it
|
||||
as is and specify the resolved file name in 'scripts' option.
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/axios.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/utils.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/adapters/adapters.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/adapters/http.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/adapters/xhr.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/cancel/CancelToken.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/cancel/CanceledError.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/cancel/isCancel.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/Axios.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/AxiosError.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/AxiosHeaders.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/InterceptorManager.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/buildFullPath.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/dispatchRequest.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/mergeConfig.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/settle.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/core/transformData.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/defaults/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/defaults/transitional.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/env/data.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/AxiosTransformStream.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/AxiosURLSearchParams.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/HttpStatusCode.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/bind.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/buildURL.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/callbackify.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/combineURLs.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/cookies.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/formDataToJSON.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/formDataToStream.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/fromDataURI.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/isAbsoluteURL.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/isAxiosError.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/isURLSameOrigin.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/parseHeaders.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/parseProtocol.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/readBlob.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/speedometer.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/spread.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/throttle.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/toFormData.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/toURLEncodedForm.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/helpers/validator.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/platform/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/platform/common/utils.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/platform/node/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/platform/node/classes/FormData.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/axios/lib/platform/node/classes/URLSearchParams.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/form-data-encoder/lib/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/formdata-node/lib/form-data.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/@isaacs/cliui/node_modules/string-width/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/@isaacs/cliui/node_modules/strip-ansi/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/@isaacs/cliui/node_modules/wrap-ansi/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/@isaacs/cliui/node_modules/ansi-regex/index.js
|
||||
> Warning Failed to make bytecode node20-arm64 for file node_modules/@isaacs/cliui/node_modules/ansi-styles/index.js
|
@ -1,382 +0,0 @@
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/app.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/app.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/help.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/common-args.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/common-flags.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/compose_ts.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/docker.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/env-common.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/helpers.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/utils/lazy.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/generate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/api-key/revoke.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/app/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/block/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/generate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/inject.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/read.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/reconfigure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/config/write.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/deploy/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/deactivate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/detect.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/identify.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/init.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/local-mode.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/logs.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/move.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/note.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/os-update.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/pin.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/public-url.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/purge.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/reboot.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/register.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/restart.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/shutdown.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/ssh.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/start-service.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/stop-service.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/track-fleet.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device/tunnel.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/device-type/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/env/set.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/pin.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/purge.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/restart.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/fleet/track-latest.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/internal/osinit.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/join/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/leave/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/local/configure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/local/flash.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/login/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/logout/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/organization/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/build-config.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/configure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/download.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/initialize.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/os/versions.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/preload/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/push/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/finalize.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/invalidate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/release/validate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/settings/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/add.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/ssh-key/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/support/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/tag/set.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/util/available-drives.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/version/index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules/@oclif/core/package.json
|
||||
%2: build/commands/whoami/index.js
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/open/xdg-open
|
||||
%2: path-to-executable/xdg-open
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/open/xdg-open
|
||||
%2: path-to-executable/xdg-open
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/build/Release/drivelist.node
|
||||
%2: path-to-executable/drivelist.node
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/darwin.sh
|
||||
%2: path-to-executable/drivelist/darwin.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/linux.sh
|
||||
%2: path-to-executable/drivelist/linux.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/build/Release/drivelist.node
|
||||
%2: path-to-executable/drivelist.node
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/darwin.sh
|
||||
%2: path-to-executable/drivelist/darwin.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/linux.sh
|
||||
%2: path-to-executable/drivelist/linux.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Cannot resolve 'path'
|
||||
node_modules/@balena/compose/dist/parse/schemas/index.js
|
||||
Dynamic require may fail at run time, because the requested file
|
||||
is unknown at compilation time and not included into executable.
|
||||
Use a string literal as an argument for 'require', or leave it
|
||||
as is and specify the resolved file name in 'scripts' option.
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/axios.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/utils.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/adapters/adapters.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/adapters/http.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/adapters/xhr.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/cancel/CancelToken.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/cancel/CanceledError.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/cancel/isCancel.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/Axios.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/AxiosError.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/AxiosHeaders.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/InterceptorManager.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/buildFullPath.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/dispatchRequest.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/mergeConfig.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/settle.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/core/transformData.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/defaults/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/defaults/transitional.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/env/data.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/AxiosTransformStream.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/AxiosURLSearchParams.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/HttpStatusCode.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/bind.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/buildURL.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/callbackify.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/combineURLs.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/cookies.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/formDataToJSON.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/formDataToStream.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/fromDataURI.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/isAbsoluteURL.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/isAxiosError.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/isURLSameOrigin.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/parseHeaders.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/parseProtocol.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/readBlob.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/speedometer.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/spread.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/throttle.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/toFormData.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/toURLEncodedForm.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/helpers/validator.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/platform/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/platform/common/utils.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/platform/node/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/platform/node/classes/FormData.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/axios/lib/platform/node/classes/URLSearchParams.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/form-data-encoder/lib/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/formdata-node/lib/form-data.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/@isaacs/cliui/node_modules/string-width/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/@isaacs/cliui/node_modules/strip-ansi/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/@isaacs/cliui/node_modules/wrap-ansi/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/@isaacs/cliui/node_modules/ansi-regex/index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules/@isaacs/cliui/node_modules/ansi-styles/index.js
|
@ -1,382 +0,0 @@
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\app.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\app.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\help.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\utils\common-args.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\utils\common-flags.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\utils\compose_ts.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\utils\docker.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\utils\env-common.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\utils\helpers.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\utils\lazy.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\api-key\generate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\api-key\list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\api-key\revoke.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\app\create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\block\create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\config\generate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\config\inject.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\config\read.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\config\reconfigure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\config\write.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\deploy\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\deactivate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\detect.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\identify.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\init.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\local-mode.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\logs.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\move.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\note.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\os-update.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\pin.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\public-url.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\purge.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\reboot.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\register.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\restart.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\shutdown.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\ssh.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\start-service.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\stop-service.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\track-fleet.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device\tunnel.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\device-type\list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\env\list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\env\rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\env\rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\env\set.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\fleet\create.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\fleet\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\fleet\list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\fleet\pin.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\fleet\purge.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\fleet\rename.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\fleet\restart.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\fleet\rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\fleet\track-latest.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\internal\osinit.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\join\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\leave\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\local\configure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\local\flash.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\login\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\logout\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\organization\list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\os\build-config.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\os\configure.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\os\download.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\os\initialize.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\os\versions.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\preload\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\push\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\release\finalize.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\release\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\release\invalidate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\release\list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\release\validate.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\settings\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\ssh-key\add.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\ssh-key\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\ssh-key\list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\ssh-key\rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\support\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\tag\list.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\tag\rm.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\tag\set.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\util\available-drives.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\version\index.js
|
||||
> Warning Entry 'main' not found in %1
|
||||
%1: node_modules\@oclif\core\package.json
|
||||
%2: build\commands\whoami\index.js
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\open\xdg-open
|
||||
%2: path-to-executable/xdg-open
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\open\xdg-open
|
||||
%2: path-to-executable/xdg-open
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\drivelist\build\Release\drivelist.node
|
||||
%2: path-to-executable/drivelist.node
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\drivelist\scripts\darwin.sh
|
||||
%2: path-to-executable/drivelist/darwin.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\drivelist\scripts\linux.sh
|
||||
%2: path-to-executable/drivelist/linux.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\drivelist\scripts\win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\drivelist\build\Release\drivelist.node
|
||||
%2: path-to-executable/drivelist.node
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\drivelist\scripts\darwin.sh
|
||||
%2: path-to-executable/drivelist/darwin.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\drivelist\scripts\linux.sh
|
||||
%2: path-to-executable/drivelist/linux.sh
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\drivelist\scripts\win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Cannot resolve 'path'
|
||||
node_modules\@balena\compose\dist\parse\schemas\index.js
|
||||
Dynamic require may fail at run time, because the requested file
|
||||
is unknown at compilation time and not included into executable.
|
||||
Use a string literal as an argument for 'require', or leave it
|
||||
as is and specify the resolved file name in 'scripts' option.
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\axios.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\utils.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\adapters\adapters.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\adapters\http.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\adapters\xhr.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\cancel\CanceledError.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\cancel\CancelToken.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\cancel\isCancel.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\core\Axios.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\core\AxiosError.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\core\AxiosHeaders.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\core\buildFullPath.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\core\dispatchRequest.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\core\InterceptorManager.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\core\mergeConfig.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\core\settle.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\core\transformData.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\defaults\index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\defaults\transitional.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\env\data.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\AxiosTransformStream.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\AxiosURLSearchParams.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\bind.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\buildURL.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\callbackify.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\combineURLs.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\cookies.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\formDataToJSON.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\formDataToStream.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\fromDataURI.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\HttpStatusCode.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\isAbsoluteURL.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\isAxiosError.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\isURLSameOrigin.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\parseHeaders.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\parseProtocol.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\readBlob.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\speedometer.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\spread.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\throttle.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\toFormData.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\toURLEncodedForm.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\validator.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\helpers\ZlibHeaderTransformStream.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\platform\index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\platform\common\utils.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\platform\node\index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\platform\node\classes\FormData.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\axios\lib\platform\node\classes\URLSearchParams.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\form-data-encoder\lib\index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\formdata-node\lib\form-data.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\@isaacs\cliui\node_modules\string-width\index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\@isaacs\cliui\node_modules\strip-ansi\index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\@isaacs\cliui\node_modules\wrap-ansi\index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\@isaacs\cliui\node_modules\ansi-regex\index.js
|
||||
> Warning Failed to make bytecode node20-x64 for file node_modules\@isaacs\cliui\node_modules\ansi-styles\index.js
|
@ -63,7 +63,7 @@ describe('detectEncoding() function', function () {
|
||||
it('should correctly detect the encoding of a few selected files', async () => {
|
||||
const sampleBinary = [
|
||||
'drivelist/build/Release/drivelist.node',
|
||||
'mountutils/build/Release/MountUtils.node',
|
||||
'mountutils/prebuilds/linux-x64/mountutils.node',
|
||||
];
|
||||
const sampleText = [
|
||||
'node_modules/.bin/mocha',
|
||||
|
Reference in New Issue
Block a user