mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-06-24 18:45:07 +00:00
Compare commits
39 Commits
simplify-c
...
allow-cust
Author | SHA1 | Date | |
---|---|---|---|
eed4a385a9 | |||
9e4dd3fce2 | |||
b2590136fc | |||
bf5e61a61c | |||
f550d0c596 | |||
54302669b8 | |||
a4a4e33d7b | |||
8d6a621bfb | |||
4b2602676b | |||
b0810c0f85 | |||
97a6013537 | |||
1ba8db1459 | |||
cdada0aec8 | |||
1166533482 | |||
01538728cd | |||
3a7f6d78b0 | |||
dce48c90e9 | |||
fe70d164c1 | |||
09e2550b32 | |||
07854c3d42 | |||
858a455501 | |||
4e5eb4bcee | |||
696bad3ed6 | |||
9a9d0f02ef | |||
f46d00640b | |||
e369bd3599 | |||
75b29112a7 | |||
b7b01ecd53 | |||
801a25995c | |||
8296dea78c | |||
1da5a75c14 | |||
166de57179 | |||
85dece9e95 | |||
bfbc71215c | |||
d243c14d74 | |||
804eb27551 | |||
4266dc6951 | |||
0ba3522584 | |||
19b0e9489d |
9
.github/actions/publish/action.yml
vendored
9
.github/actions/publish/action.yml
vendored
@ -18,7 +18,7 @@ inputs:
|
||||
default: 'accounts+apple@balena.io'
|
||||
NODE_VERSION:
|
||||
type: string
|
||||
default: '18.x'
|
||||
default: '20.x'
|
||||
VERBOSE:
|
||||
type: string
|
||||
default: 'true'
|
||||
@ -28,7 +28,7 @@ runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
- name: Download custom source artifact
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@f44cd7b40bfd40b6aa1cc1b9b5b7bf03d3c67110 # v4.1.0
|
||||
with:
|
||||
name: custom-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}-${{ runner.os }}-${{ runner.arch }}
|
||||
path: ${{ runner.temp }}
|
||||
@ -127,8 +127,9 @@ runs:
|
||||
XCODE_APP_LOADER_TEAM_ID: ${{ inputs.XCODE_APP_LOADER_TEAM_ID }}
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4
|
||||
with:
|
||||
name: gh-release-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}
|
||||
name: gh-release-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}-${{ strategy.job-index }}
|
||||
path: dist
|
||||
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: '18.x'
|
||||
default: '20.x'
|
||||
VERBOSE:
|
||||
type: string
|
||||
default: "true"
|
||||
@ -58,7 +58,7 @@ runs:
|
||||
run: tar --exclude-vcs -acf ${{ runner.temp }}/custom.tgz .
|
||||
|
||||
- name: Upload custom artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4
|
||||
with:
|
||||
name: custom-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}-${{ runner.os }}-${{ runner.arch }}
|
||||
path: ${{ runner.temp }}/custom.tgz
|
||||
|
4
.github/workflows/flowzone.yml
vendored
4
.github/workflows/flowzone.yml
vendored
@ -1,5 +1,4 @@
|
||||
name: Flowzone
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, closed]
|
||||
@ -7,7 +6,6 @@ on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, closed]
|
||||
branches: [main, master]
|
||||
|
||||
jobs:
|
||||
flowzone:
|
||||
name: Flowzone
|
||||
@ -24,7 +22,5 @@ jobs:
|
||||
secrets: inherit
|
||||
with:
|
||||
custom_runs_on: '[["self-hosted","Linux","distro:focal","X64"],["self-hosted","Linux","distro:focal","ARM64"],["macos-12"],["windows-2019"]]'
|
||||
repo_config: true
|
||||
repo_description: "The official balena CLI tool."
|
||||
github_prerelease: false
|
||||
restrict_custom_actions: false
|
||||
|
@ -1,3 +1,528 @@
|
||||
- commits:
|
||||
- subject: Update to Node 20
|
||||
hash: bf5e61a61c542f0c0a57ae49bb9a9998588d6851
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: major
|
||||
change-type: major
|
||||
author: Otávio Jacobi
|
||||
nested: []
|
||||
version: 18.0.0
|
||||
title: ""
|
||||
date: 2024-02-06T12:19:35.139Z
|
||||
- commits:
|
||||
- subject: Fix target state construction with livepush
|
||||
hash: 8d6a621bfb62147ed0a88f58057e38211e82f841
|
||||
body: >
|
||||
When constructing the target state after a reported change from
|
||||
livepush, the
|
||||
|
||||
handler function would not pass all build tasks to the function that
|
||||
|
||||
constructs the target state, causing a TypeError when trying to obtain
|
||||
|
||||
the target image name for each service. This updates the handler to pass
|
||||
|
||||
all build tasks, ensuring the information is available to construct the
|
||||
|
||||
target state.
|
||||
footer:
|
||||
Relates-to: "#2724"
|
||||
relates-to: "#2724"
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Felipe Lalanne
|
||||
nested: []
|
||||
version: 17.5.1
|
||||
title: ""
|
||||
date: 2024-01-31T01:05:17.796Z
|
||||
- commits:
|
||||
- subject: "os versions: Add the --include-draft option"
|
||||
hash: 1ba8db1459355f6a5887f9106876318bd81f7f02
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: "device os-update: Add option for including pre-release versions in the
|
||||
list"
|
||||
hash: cdada0aec8e8f7a6c72d629dfa7a36f5d56b1b0d
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: "device os-update: Enable updates to pre-release versions of higher
|
||||
base semver"
|
||||
hash: 116653348219f9ce8fd896428d690940350f2597
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
Depends-on: https://github.com/balena-io/balena-sdk/pull/1398
|
||||
depends-on: https://github.com/balena-io/balena-sdk/pull/1398
|
||||
See: https://balena.fibery.io/Work/Task/cli-Enable-OS-Updates-to-pre-release-OS-versions-1751
|
||||
see: https://balena.fibery.io/Work/Task/cli-Enable-OS-Updates-to-pre-release-OS-versions-1751
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Update balena-sdk to 19.4.0
|
||||
hash: 01538728cd4a0ad512b45c062b4d45f6d1f664e7
|
||||
body: |
|
||||
Update balena-sdk from 19.0.1 to 19.4.0
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested:
|
||||
- commits:
|
||||
- subject: Update the deviceType.getInstructions tests
|
||||
hash: 3fd5f7d88c6fd335e8ada5c9efd64ddd14c9a992
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: "os.getSupportedOsUpdateVersions: Add the option to include draft
|
||||
releases"
|
||||
hash: 87b3187274a5f417ab82855029f517dc99a2f503
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Enable OS Updates to pre-release versions of higher base semver
|
||||
hash: 38360a84d29f316d3619d3b899538ccdf71635fc
|
||||
body: |
|
||||
Update balena-hup-action-utils from 5.0.0 to 6.1.0
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested:
|
||||
- commits:
|
||||
- subject: Enable OS Updates to pre-release versions of higher base semver
|
||||
hash: 1b3e83b9519157be1ca9ba7756bba87a08bea04a
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-hup-action-utils-6.1.0
|
||||
title: ""
|
||||
date: 2024-01-04T13:32:14.391Z
|
||||
- commits:
|
||||
- subject: Drop support for TypeScript < 5.3.3
|
||||
hash: 7c3430280b47ea9a17f7bb94df068f2a46bfa975
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: major
|
||||
change-type: major
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Drop support for node < v18
|
||||
hash: b1eb6844578bff03c05c19bbf6436526a69a8b30
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: major
|
||||
change-type: major
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Update dependencies
|
||||
hash: 7413837d3aed9aa54ec5d1e218647f543308b298
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Move the build step from prepare to prepack
|
||||
hash: c4480c214c79f4e07cf3b65944b83d11c9c2e267
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-hup-action-utils-6.0.0
|
||||
title: ""
|
||||
date: 2023-12-20T13:33:03.867Z
|
||||
- commits:
|
||||
- subject: "patch: Update flowzone.yml"
|
||||
hash: 41a90775219e1b7b144069aea545f8f2141c88f7
|
||||
body: ""
|
||||
footer: {}
|
||||
author: Kyle Harding
|
||||
nested: []
|
||||
version: balena-hup-action-utils-5.0.1
|
||||
title: ""
|
||||
date: 2023-07-13T19:00:55.217Z
|
||||
- subject: "os.getAvailableOsVersions: Add the option to include draft releases"
|
||||
hash: b8e795ac01e2e05c6484cfd492ea9dfd5f16f142
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-sdk-19.4.0
|
||||
title: ""
|
||||
date: 2024-01-23T14:37:21.759Z
|
||||
- commits:
|
||||
- subject: Update date-fns to v3
|
||||
hash: f027a467b4fe45884650d2d8c56ce3a361842a6b
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-sdk-19.3.5
|
||||
title: ""
|
||||
date: 2023-12-21T13:16:48.448Z
|
||||
- commits:
|
||||
- subject: "types/Device: Deprecate the non-existent vpn_address property"
|
||||
hash: 0a9d79b71f7c97813831649d18a4bc1703d71307
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otávio Jacobi
|
||||
nested: []
|
||||
version: balena-sdk-19.3.4
|
||||
title: ""
|
||||
date: 2023-12-15T13:34:05.193Z
|
||||
- commits:
|
||||
- subject: "types/Device: Deprecate the non-existent state & status_sort_index
|
||||
properties"
|
||||
hash: 7013d15352906ae815f5cd630086222f5c9853df
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-sdk-19.3.3
|
||||
title: ""
|
||||
date: 2023-12-15T12:02:22.609Z
|
||||
- commits:
|
||||
- subject: "test:fast: Run the tests ignoring any linting errors"
|
||||
hash: 59811c2f19a2044b4a1a0d1068ba90ee1587f9a3
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: "tests: Re-enable the explicit error checks for non-tarball DWB
|
||||
requests"
|
||||
hash: cb7c1a2d842e53255975a91457da00bd7070d8f7
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-sdk-19.3.2
|
||||
title: ""
|
||||
date: 2023-12-08T15:49:54.842Z
|
||||
- commits:
|
||||
- subject: Update TypeScript to 5.3.2
|
||||
hash: d66ee5c290df275e18bbdcf8bd5cf9475e6db768
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-sdk-19.3.1
|
||||
title: ""
|
||||
date: 2023-11-30T15:10:55.747Z
|
||||
- commits:
|
||||
- subject: "tests: Remove the explicit error checks for non-tarball DWB requests"
|
||||
hash: 0ca96b7440af76a1b7c52899d880dc817cf69278
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: "tests: Properly cleanup the test orgs"
|
||||
hash: 431acbfa773b271b614c619595abc61f3c6e791c
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: "tests: Reduce the request batching chunk size to speed up tests"
|
||||
hash: d3397cb6fdf6fd7edb4247d0d5980086e9338c1d
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Add option for configuring the request batching chunk size
|
||||
hash: 94e5d7816ac813e9b8468b73e3d365f735182f4b
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-sdk-19.3.0
|
||||
title: ""
|
||||
date: 2023-11-30T13:54:32.874Z
|
||||
- commits:
|
||||
- subject: Add organization logo to organization
|
||||
hash: 251e835ad6fe778024bbe358fa70aa73c8e250b8
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Otávio Jacobi
|
||||
nested: []
|
||||
version: balena-sdk-19.2.0
|
||||
title: ""
|
||||
date: 2023-11-13T11:20:58.418Z
|
||||
- commits:
|
||||
- subject: Add the retryRateLimitedRequests sdk option for retrying after HTTP
|
||||
429s
|
||||
hash: 25e83b67f6f7c3f20982c97d4e561dd81c37a672
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-sdk-19.1.0
|
||||
title: ""
|
||||
date: 2023-11-06T13:49:10.660Z
|
||||
version: 17.5.0
|
||||
title: ""
|
||||
date: 2024-01-23T15:52:49.156Z
|
||||
- commits:
|
||||
- subject: Regression described in GitHub Issue 2715; balena push hangs in local
|
||||
mode.
|
||||
hash: 09e2550b32f628f8e5b5cb8be0cafe4b40c7ce10
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
Signed-off-by: Ken Bannister <kb2ma@runbox.com>
|
||||
signed-off-by: Ken Bannister <kb2ma@runbox.com>
|
||||
author: Ken Bannister
|
||||
nested: []
|
||||
version: 17.4.12
|
||||
title: ""
|
||||
date: 2024-01-18T10:55:45.599Z
|
||||
- commits:
|
||||
- subject: Exclude the oclif package patch from the published files
|
||||
hash: 4e5eb4bcee8e33a1aac337401c0180817e152b69
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Update the @oclif/core patch
|
||||
hash: 696bad3ed6f27832bf10f096c088367a57902920
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: 17.4.11
|
||||
title: ""
|
||||
date: 2024-01-05T23:01:07.859Z
|
||||
- commits:
|
||||
- subject: Normalize v prefixes in the --version parameter of all commands
|
||||
hash: b7b01ecd5314bddae73b7b062f9d034b3661bcef
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: 17.4.10
|
||||
title: ""
|
||||
date: 2024-01-02T12:41:38.978Z
|
||||
- commits:
|
||||
- subject: Fix publishing artifacts to gh release
|
||||
hash: 1da5a75c1411bdfece2b60f83095082f6ce68ace
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Otávio Jacobi
|
||||
nested: []
|
||||
version: 17.4.9
|
||||
title: ""
|
||||
date: 2023-12-19T23:02:29.500Z
|
||||
- commits:
|
||||
- subject: Remove repo config from flowzone.yml
|
||||
hash: bfbc71215c376e815e7d86561d87c5b697ba7482
|
||||
body: |
|
||||
This functionality is being deprecated in Flowzone.
|
||||
|
||||
See: https://github.com/product-os/flowzone/pull/833
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
Signed-off-by: Kyle Harding <kyle@balena.io>
|
||||
signed-off-by: Kyle Harding <kyle@balena.io>
|
||||
author: Kyle Harding
|
||||
nested: []
|
||||
version: 17.4.8
|
||||
title: ""
|
||||
date: 2023-12-19T21:59:06.220Z
|
||||
- commits:
|
||||
- subject: "deploy: Add rate-limiting aware retries for failed requests"
|
||||
hash: 4266dc69514c2177399fc605985196a436d75740
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Update dependencies
|
||||
hash: 0ba352258482048bbdb840be7ee9958b491f9b6c
|
||||
body: |
|
||||
Update @balena/compose from 3.0.5 to 3.2.0
|
||||
|
||||
Also updates pinejs-client-request to support
|
||||
using the Retry-After header and dockerode
|
||||
to 3.3.5 to be aligned with @balena/compose.
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested:
|
||||
- commits:
|
||||
- subject: 'release/createClient: Allow specifying the "retry" options'
|
||||
hash: b89b42a838ed2c3a7a8319cbd1b2a7c66a8210ef
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-compose-3.2.0
|
||||
title: ""
|
||||
date: 2023-12-05T15:26:57.394Z
|
||||
- commits:
|
||||
- subject: Update dockerode to 3.3.5
|
||||
hash: f5fc932f3203df4df66d38363974e62788e468ff
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Pagan Gazzard
|
||||
nested: []
|
||||
version: balena-compose-3.1.3
|
||||
title: ""
|
||||
date: 2023-11-29T14:49:55.816Z
|
||||
- commits:
|
||||
- subject: Use the JSONStream typings from @types/jsonstream
|
||||
hash: 155fdcc8e4e7df67d41152b494e1a80493bb0439
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Pagan Gazzard
|
||||
nested: []
|
||||
version: balena-compose-3.1.2
|
||||
title: ""
|
||||
date: 2023-11-29T13:33:49.557Z
|
||||
- commits:
|
||||
- subject: Make use of `pipeline` for piping streams together
|
||||
hash: 1d98cd535a20fa67869da242b0ec7ddd713a4c7b
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Pagan Gazzard
|
||||
nested: []
|
||||
version: balena-compose-3.1.1
|
||||
title: ""
|
||||
date: 2023-11-27T12:43:23.880Z
|
||||
- commits:
|
||||
- subject: Allow injecting any PinejsClientCore compatible API client
|
||||
hash: e0ab3ef95f8bc51d2e9055a1f822b8d340f0c587
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: minor
|
||||
change-type: minor
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-compose-3.1.0
|
||||
title: ""
|
||||
date: 2023-11-13T16:27:44.317Z
|
||||
- commits:
|
||||
- subject: "NodeResolver: Refactor the recursion to an async-await loop"
|
||||
hash: bde40f4430bc26a058598a64eeeedbb5ab35eb57
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Drop bluebird & bluebird-lru-cache in favor of memoizee
|
||||
hash: 82f90b210d73ff866f5d0546e73d8779db85a504
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-compose-3.0.7
|
||||
title: ""
|
||||
date: 2023-11-10T16:10:01.859Z
|
||||
- commits:
|
||||
- subject: Fix the remaining linting errors
|
||||
hash: 51b7893bc6156d0fa7a7821cc583032694ccda98
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Remove unnecessary regex escaping
|
||||
hash: 96b76abbcf78abd05157d49a5672a2621124bfe5
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Replace the {} type with object
|
||||
hash: dcf907ff124a638f591ae8e3fd80157eae1d1837
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
- subject: Update TypeScript to 5.2.2 and @blaena/lint to v7.2.1
|
||||
hash: b583dd7ce8e964bef47f73dee53e08b7c1286532
|
||||
body: ""
|
||||
footer:
|
||||
Change-type: patch
|
||||
change-type: patch
|
||||
author: Thodoris Greasidis
|
||||
nested: []
|
||||
version: balena-compose-3.0.6
|
||||
title: ""
|
||||
date: 2023-11-10T14:08:35.300Z
|
||||
version: 17.4.7
|
||||
title: ""
|
||||
date: 2023-12-19T14:26:26.818Z
|
||||
- commits:
|
||||
- subject: Bump oclif core & use default missing flag handler
|
||||
hash: b9722c67963c9b90e94aec7653ee488957ecd690
|
||||
|
147
CHANGELOG.md
147
CHANGELOG.md
@ -4,6 +4,153 @@ 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/).
|
||||
|
||||
## 18.0.0 - 2024-02-06
|
||||
|
||||
* Update to Node 20 [Otávio Jacobi]
|
||||
|
||||
## 17.5.1 - 2024-01-31
|
||||
|
||||
* Fix target state construction with livepush [Felipe Lalanne]
|
||||
|
||||
## 17.5.0 - 2024-01-23
|
||||
|
||||
* os versions: Add the --include-draft option [Thodoris Greasidis]
|
||||
* device os-update: Add option for including pre-release versions in the list [Thodoris Greasidis]
|
||||
* device os-update: Enable updates to pre-release versions of higher base semver [Thodoris Greasidis]
|
||||
|
||||
<details>
|
||||
<summary> Update balena-sdk to 19.4.0 [Thodoris Greasidis] </summary>
|
||||
|
||||
> ### balena-sdk-19.4.0 - 2024-01-23
|
||||
>
|
||||
> * Update the deviceType.getInstructions tests [Thodoris Greasidis]
|
||||
> * os.getSupportedOsUpdateVersions: Add the option to include draft releases [Thodoris Greasidis]
|
||||
>
|
||||
> <details>
|
||||
> <summary> Enable OS Updates to pre-release versions of higher base semver [Thodoris Greasidis] </summary>
|
||||
>
|
||||
>> #### balena-hup-action-utils-6.1.0 - 2024-01-04
|
||||
>>
|
||||
>> * Enable OS Updates to pre-release versions of higher base semver [Thodoris Greasidis]
|
||||
>>
|
||||
>> #### balena-hup-action-utils-6.0.0 - 2023-12-20
|
||||
>>
|
||||
>> * Drop support for TypeScript < 5.3.3 [Thodoris Greasidis]
|
||||
>> * Drop support for node < v18 [Thodoris Greasidis]
|
||||
>> * Update dependencies [Thodoris Greasidis]
|
||||
>> * Move the build step from prepare to prepack [Thodoris Greasidis]
|
||||
>>
|
||||
>> #### balena-hup-action-utils-5.0.1 - 2023-07-13
|
||||
>>
|
||||
>> * patch: Update flowzone.yml [Kyle Harding]
|
||||
>>
|
||||
>
|
||||
> </details>
|
||||
>
|
||||
> * os.getAvailableOsVersions: Add the option to include draft releases [Thodoris Greasidis]
|
||||
>
|
||||
> ### balena-sdk-19.3.5 - 2023-12-21
|
||||
>
|
||||
> * Update date-fns to v3 [Thodoris Greasidis]
|
||||
>
|
||||
> ### balena-sdk-19.3.4 - 2023-12-15
|
||||
>
|
||||
> * types/Device: Deprecate the non-existent vpn_address property [Otávio Jacobi]
|
||||
>
|
||||
> ### balena-sdk-19.3.3 - 2023-12-15
|
||||
>
|
||||
> * types/Device: Deprecate the non-existent state & status_sort_index properties [Thodoris Greasidis]
|
||||
>
|
||||
> ### balena-sdk-19.3.2 - 2023-12-08
|
||||
>
|
||||
> * test:fast: Run the tests ignoring any linting errors [Thodoris Greasidis]
|
||||
> * tests: Re-enable the explicit error checks for non-tarball DWB requests [Thodoris Greasidis]
|
||||
>
|
||||
> ### balena-sdk-19.3.1 - Invalid date
|
||||
>
|
||||
> * Update TypeScript to 5.3.2 [Thodoris Greasidis]
|
||||
>
|
||||
> ### balena-sdk-19.3.0 - Invalid date
|
||||
>
|
||||
> * tests: Remove the explicit error checks for non-tarball DWB requests [Thodoris Greasidis]
|
||||
> * tests: Properly cleanup the test orgs [Thodoris Greasidis]
|
||||
> * tests: Reduce the request batching chunk size to speed up tests [Thodoris Greasidis]
|
||||
> * Add option for configuring the request batching chunk size [Thodoris Greasidis]
|
||||
>
|
||||
> ### balena-sdk-19.2.0 - 2023-11-13
|
||||
>
|
||||
> * Add organization logo to organization [Otávio Jacobi]
|
||||
>
|
||||
> ### balena-sdk-19.1.0 - 2023-11-06
|
||||
>
|
||||
> * Add the retryRateLimitedRequests sdk option for retrying after HTTP 429s [Thodoris Greasidis]
|
||||
>
|
||||
|
||||
</details>
|
||||
|
||||
## 17.4.12 - 2024-01-18
|
||||
|
||||
* Regression described in GitHub Issue 2715; balena push hangs in local mode. [Ken Bannister]
|
||||
|
||||
## 17.4.11 - 2024-01-05
|
||||
|
||||
* Exclude the oclif package patch from the published files [Thodoris Greasidis]
|
||||
* Update the @oclif/core patch [Thodoris Greasidis]
|
||||
|
||||
## 17.4.10 - 2024-01-02
|
||||
|
||||
* Normalize v prefixes in the --version parameter of all commands [Thodoris Greasidis]
|
||||
|
||||
## 17.4.9 - 2023-12-19
|
||||
|
||||
* Fix publishing artifacts to gh release [Otávio Jacobi]
|
||||
|
||||
## 17.4.8 - 2023-12-19
|
||||
|
||||
* Remove repo config from flowzone.yml [Kyle Harding]
|
||||
|
||||
## 17.4.7 - 2023-12-19
|
||||
|
||||
* deploy: Add rate-limiting aware retries for failed requests [Thodoris Greasidis]
|
||||
|
||||
<details>
|
||||
<summary> Update dependencies [Thodoris Greasidis] </summary>
|
||||
|
||||
> ### balena-compose-3.2.0 - 2023-12-05
|
||||
>
|
||||
> * release/createClient: Allow specifying the "retry" options [Thodoris Greasidis]
|
||||
>
|
||||
> ### balena-compose-3.1.3 - 2023-11-29
|
||||
>
|
||||
> * Update dockerode to 3.3.5 [Pagan Gazzard]
|
||||
>
|
||||
> ### balena-compose-3.1.2 - 2023-11-29
|
||||
>
|
||||
> * Use the JSONStream typings from @types/jsonstream [Pagan Gazzard]
|
||||
>
|
||||
> ### balena-compose-3.1.1 - 2023-11-27
|
||||
>
|
||||
> * Make use of `pipeline` for piping streams together [Pagan Gazzard]
|
||||
>
|
||||
> ### balena-compose-3.1.0 - 2023-11-13
|
||||
>
|
||||
> * Allow injecting any PinejsClientCore compatible API client [Thodoris Greasidis]
|
||||
>
|
||||
> ### balena-compose-3.0.7 - 2023-11-10
|
||||
>
|
||||
> * NodeResolver: Refactor the recursion to an async-await loop [Thodoris Greasidis]
|
||||
> * Drop bluebird & bluebird-lru-cache in favor of memoizee [Thodoris Greasidis]
|
||||
>
|
||||
> ### balena-compose-3.0.6 - 2023-11-10
|
||||
>
|
||||
> * Fix the remaining linting errors [Thodoris Greasidis]
|
||||
> * Remove unnecessary regex escaping [Thodoris Greasidis]
|
||||
> * Replace the {} type with object [Thodoris Greasidis]
|
||||
> * Update TypeScript to 5.2.2 and @blaena/lint to v7.2.1 [Thodoris Greasidis]
|
||||
>
|
||||
|
||||
</details>
|
||||
|
||||
## 17.4.6 - 2023-12-08
|
||||
|
||||
* Bump oclif core & use default missing flag handler [Otávio Jacobi]
|
||||
|
@ -78,8 +78,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 18.**
|
||||
> **Versions 19 and later are not yet fully supported.**
|
||||
> **The balena CLI currently requires Node.js version 20.**
|
||||
> **Versions 21 and later are not yet fully supported.**
|
||||
|
||||
### Install development tools
|
||||
|
||||
@ -89,7 +89,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 18
|
||||
$ nvm install 20
|
||||
```
|
||||
|
||||
The `curl` command line above uses
|
||||
@ -106,7 +106,7 @@ recommended.
|
||||
```sh
|
||||
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
|
||||
$ . ~/.bashrc
|
||||
$ nvm install 18
|
||||
$ nvm install 20
|
||||
```
|
||||
|
||||
#### **Windows** (not WSL)
|
||||
@ -114,7 +114,7 @@ $ nvm install 18
|
||||
Install:
|
||||
|
||||
* If you'd like the ability to switch between Node.js versions, install
|
||||
- Node.js v18 from the [Nodejs.org releases page](https://nodejs.org/en/download/releases/).
|
||||
- Node.js v20 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:
|
||||
|
@ -155,7 +155,7 @@ ${sep}
|
||||
* messages (stdout and stderr) in order to call diffPkgOutput().
|
||||
*/
|
||||
async function execPkg(...args: any[]) {
|
||||
const { exec: pkgExec } = await import('pkg');
|
||||
const { exec: pkgExec } = await import('@yao-pkg/pkg');
|
||||
const outTap = new StdOutTap(true);
|
||||
try {
|
||||
outTap.tap();
|
||||
|
@ -882,6 +882,7 @@ Examples:
|
||||
|
||||
$ balena build --fleet myFleet
|
||||
$ balena build ./source/ --fleet myorg/myfleet
|
||||
$ balena build ./source/ --fleet myorg/myfleet --docker-compose my-custom-compose.yml
|
||||
$ balena build --deviceType raspberrypi3 --arch armv7hf --emulated
|
||||
$ balena build --docker /var/run/docker.sock --fleet myFleet # Linux, Mac
|
||||
$ balena build --docker //./pipe/docker_engine --fleet myFleet # Windows
|
||||
@ -915,6 +916,10 @@ Use QEMU for ARM architecture emulation during the image build
|
||||
|
||||
Alternative Dockerfile name/path, relative to the source folder
|
||||
|
||||
#### --docker-compose DOCKER-COMPOSE
|
||||
|
||||
Alternative compose yml file, relative to the source folder
|
||||
|
||||
#### --nologs
|
||||
|
||||
Hide the image build log output (produce less verbose output)
|
||||
@ -1087,6 +1092,7 @@ Examples:
|
||||
|
||||
$ balena deploy myFleet
|
||||
$ balena deploy myorg/myfleet --build --source myBuildDir/
|
||||
$ balena deploy myorg/myfleet --builld --source myBuildDir/ --docker-compose my-custom-compose.yml
|
||||
$ balena deploy myorg/myfleet --build --source myBuildDir/ --note "this is the note for this release"
|
||||
$ balena deploy myorg/myfleet myRepo/myImage
|
||||
$ balena deploy myFleet myRepo/myImage --release-tag key1 "" key2 "value2 with spaces"
|
||||
@ -1140,6 +1146,10 @@ Use QEMU for ARM architecture emulation during the image build
|
||||
|
||||
Alternative Dockerfile name/path, relative to the source folder
|
||||
|
||||
#### --docker-compose DOCKER-COMPOSE
|
||||
|
||||
Alternative compose yml file, relative to the source folder
|
||||
|
||||
#### --nologs
|
||||
|
||||
Hide the image build log output (produce less verbose output)
|
||||
@ -1454,6 +1464,7 @@ Examples:
|
||||
$ balena device os-update 23c73a1
|
||||
$ balena device os-update 23c73a1 --version 2.101.7
|
||||
$ balena device os-update 23c73a1 --version 2.31.0+rev1.prod
|
||||
$ balena device os-update 23c73a1 --include-draft
|
||||
|
||||
### Arguments
|
||||
|
||||
@ -1467,6 +1478,10 @@ the uuid of the device to update
|
||||
|
||||
a balenaOS version
|
||||
|
||||
#### --include-draft
|
||||
|
||||
include pre-release balenaOS versions
|
||||
|
||||
#### -y, --yes
|
||||
|
||||
answer "yes" to all questions (non interactive use)
|
||||
@ -2723,6 +2738,10 @@ device type
|
||||
|
||||
select balenaOS ESR versions
|
||||
|
||||
#### --include-draft
|
||||
|
||||
include pre-release balenaOS versions
|
||||
|
||||
## os download <type>
|
||||
|
||||
Download an unconfigured OS image for the specified device type.
|
||||
@ -3272,6 +3291,7 @@ Examples:
|
||||
$ balena push myFleet -s <source directory>
|
||||
$ balena push myFleet --source <source directory> --note "this is the note for this release"
|
||||
$ balena push myFleet --release-tag key1 "" key2 "value2 with spaces"
|
||||
$ balena push myorg/myfleet --docker-compose my-custom-compose.yml
|
||||
$ balena push myorg/myfleet
|
||||
|
||||
$ balena push 10.0.0.1
|
||||
@ -3306,6 +3326,10 @@ suspected issues with the balenaCloud backend.
|
||||
|
||||
Alternative Dockerfile name/path, relative to the source folder
|
||||
|
||||
#### --docker-compose DOCKER-COMPOSE
|
||||
|
||||
Alternative compose yml file, relative to the source folder
|
||||
|
||||
#### -c, --nocache
|
||||
|
||||
Don't use cached layers of previously built images for this project. This
|
||||
|
@ -67,6 +67,7 @@ ${dockerignoreHelp}
|
||||
public static examples = [
|
||||
'$ balena build --fleet myFleet',
|
||||
'$ balena build ./source/ --fleet myorg/myfleet',
|
||||
'$ balena build ./source/ --fleet myorg/myfleet --docker-compose my-custom-compose.yml',
|
||||
'$ balena build --deviceType raspberrypi3 --arch armv7hf --emulated',
|
||||
'$ balena build --docker /var/run/docker.sock --fleet myFleet # Linux, Mac',
|
||||
'$ balena build --docker //./pipe/docker_engine --fleet myFleet # Windows',
|
||||
|
@ -259,6 +259,8 @@ export default class ConfigGenerateCmd extends Command {
|
||||
if (!options.fleet && options.deviceType) {
|
||||
throw new ExpectedError(this.deviceTypeNotAllowedMessage);
|
||||
}
|
||||
const { normalizeOsVersion } = await import('../../utils/normalization');
|
||||
options.version = normalizeOsVersion(options.version);
|
||||
const { validateDevOptionAndWarn } = await import('../../utils/config');
|
||||
await validateDevOptionAndWarn(options.dev, options.version);
|
||||
}
|
||||
|
@ -98,6 +98,7 @@ ${dockerignoreHelp}
|
||||
public static examples = [
|
||||
'$ balena deploy myFleet',
|
||||
'$ balena deploy myorg/myfleet --build --source myBuildDir/',
|
||||
'$ balena deploy myorg/myfleet --builld --source myBuildDir/ --docker-compose my-custom-compose.yml',
|
||||
'$ balena deploy myorg/myfleet --build --source myBuildDir/ --note "this is the note for this release"',
|
||||
'$ balena deploy myorg/myfleet myRepo/myImage',
|
||||
'$ balena deploy myFleet myRepo/myImage --release-tag key1 "" key2 "value2 with spaces"',
|
||||
|
@ -37,6 +37,7 @@ export default class DeviceOsUpdateCmd extends Command {
|
||||
'$ balena device os-update 23c73a1',
|
||||
'$ balena device os-update 23c73a1 --version 2.101.7',
|
||||
'$ balena device os-update 23c73a1 --version 2.31.0+rev1.prod',
|
||||
'$ balena device os-update 23c73a1 --include-draft',
|
||||
];
|
||||
|
||||
public static args = {
|
||||
@ -51,6 +52,12 @@ export default class DeviceOsUpdateCmd extends Command {
|
||||
public static flags = {
|
||||
version: Flags.string({
|
||||
description: 'a balenaOS version',
|
||||
exclusive: ['include-draft'],
|
||||
}),
|
||||
'include-draft': Flags.boolean({
|
||||
description: 'include pre-release balenaOS versions',
|
||||
default: false,
|
||||
exclusive: ['version'],
|
||||
}),
|
||||
yes: cf.yes,
|
||||
help: cf.help,
|
||||
@ -86,10 +93,25 @@ export default class DeviceOsUpdateCmd extends Command {
|
||||
);
|
||||
}
|
||||
|
||||
let includeDraft = options['include-draft'];
|
||||
if (!includeDraft && options.version != null) {
|
||||
const bSemver = await import('balena-semver');
|
||||
const parsedVersion = bSemver.parse(options.version);
|
||||
// When the user provides a draft version, we need to pass `includeDraft`
|
||||
// to the os.getSupportedOsUpdateVersions() since w/o it the results
|
||||
// will for sure not include the user provided version and the command
|
||||
// would return a "not in the Host OS update targets" error.
|
||||
includeDraft =
|
||||
parsedVersion != null && parsedVersion.prerelease.length > 0;
|
||||
}
|
||||
|
||||
// Get supported OS update versions
|
||||
const hupVersionInfo = await sdk.models.os.getSupportedOsUpdateVersions(
|
||||
is_of__device_type[0].slug,
|
||||
currentOsVersion,
|
||||
{
|
||||
includeDraft,
|
||||
},
|
||||
);
|
||||
if (hupVersionInfo.versions.length === 0) {
|
||||
throw new ExpectedError(
|
||||
@ -100,6 +122,8 @@ export default class DeviceOsUpdateCmd extends Command {
|
||||
// Get target OS version
|
||||
let targetOsVersion = options.version;
|
||||
if (targetOsVersion != null) {
|
||||
const { normalizeOsVersion } = await import('../../utils/normalization');
|
||||
targetOsVersion = normalizeOsVersion(targetOsVersion);
|
||||
if (!hupVersionInfo.versions.includes(targetOsVersion)) {
|
||||
throw new ExpectedError(
|
||||
`The provided version ${targetOsVersion} is not in the Host OS update targets for this device`,
|
||||
|
@ -216,9 +216,15 @@ export default class OsConfigureCmd extends Command {
|
||||
configJson = JSON.parse(rawConfig);
|
||||
}
|
||||
|
||||
const osVersion =
|
||||
const { normalizeOsVersion } = await import('../../utils/normalization');
|
||||
const osVersion = normalizeOsVersion(
|
||||
options.version ||
|
||||
(await getOsVersionFromImage(params.image, deviceTypeManifest, devInit));
|
||||
(await getOsVersionFromImage(
|
||||
params.image,
|
||||
deviceTypeManifest,
|
||||
devInit,
|
||||
)),
|
||||
);
|
||||
|
||||
const { validateDevOptionAndWarn } = await import('../../utils/config');
|
||||
await validateDevOptionAndWarn(options.dev, osVersion);
|
||||
|
@ -48,15 +48,33 @@ export default class OsVersionsCmd extends Command {
|
||||
description: 'select balenaOS ESR versions',
|
||||
default: false,
|
||||
}),
|
||||
'include-draft': Flags.boolean({
|
||||
description: 'include pre-release balenaOS versions',
|
||||
default: false,
|
||||
}),
|
||||
};
|
||||
|
||||
public async run() {
|
||||
const { args: params, flags: options } = await this.parse(OsVersionsCmd);
|
||||
|
||||
if (options['include-draft']) {
|
||||
const { warnify } = await import('../../utils/messages');
|
||||
console.error(
|
||||
warnify(stripIndent`
|
||||
Using pre-release balenaOS versions is only supported for OS updates
|
||||
and not for OS image downloads.
|
||||
`),
|
||||
);
|
||||
}
|
||||
|
||||
const { formatOsVersion, getOsVersions } = await import(
|
||||
'../../utils/cloud'
|
||||
);
|
||||
const vs = await getOsVersions(params.type, !!options.esr);
|
||||
const vs = await getOsVersions(
|
||||
params.type,
|
||||
!!options.esr,
|
||||
options['include-draft'],
|
||||
);
|
||||
|
||||
console.log(vs.map((v) => formatOsVersion(v)).join('\n'));
|
||||
}
|
||||
|
@ -78,6 +78,7 @@ export default class PushCmd extends Command {
|
||||
'$ balena push myFleet -s <source directory>',
|
||||
'$ balena push myFleet --source <source directory> --note "this is the note for this release"',
|
||||
'$ balena push myFleet --release-tag key1 "" key2 "value2 with spaces"',
|
||||
'$ balena push myorg/myfleet --docker-compose my-custom-compose.yml',
|
||||
'$ balena push myorg/myfleet',
|
||||
'',
|
||||
'$ balena push 10.0.0.1',
|
||||
@ -121,6 +122,10 @@ export default class PushCmd extends Command {
|
||||
description:
|
||||
'Alternative Dockerfile name/path, relative to the source folder',
|
||||
}),
|
||||
'docker-compose': Flags.string({
|
||||
description:
|
||||
'Alternative compose yml file, relative to the source folder',
|
||||
}),
|
||||
nocache: Flags.boolean({
|
||||
description: stripIndent`
|
||||
Don't use cached layers of previously built images for this project. This
|
||||
@ -365,6 +370,7 @@ export default class PushCmd extends Command {
|
||||
dockerfilePath,
|
||||
registrySecrets,
|
||||
multiDockerignore: options['multi-dockerignore'],
|
||||
composefileName: options['docker-compose'],
|
||||
nocache: options.nocache,
|
||||
pull: options.pull,
|
||||
noParentCheck: options['noparent-check'],
|
||||
|
@ -47,6 +47,12 @@ export class NoPortsDefinedError extends ExpectedError {
|
||||
|
||||
export class SIGINTError extends ExpectedError {}
|
||||
|
||||
export class CompositionFileNotFoundError extends ExpectedError {
|
||||
constructor(filePath: string) {
|
||||
super(`Composition file not found at: "${filePath}"`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* instanceOf is a more reliable implementation of the plain `instanceof`
|
||||
* typescript operator, for use with TypedError errors when the error
|
||||
|
@ -200,22 +200,23 @@ async function resolveOSVersion(
|
||||
version: string,
|
||||
): Promise<string> {
|
||||
if (['menu', 'menu-esr'].includes(version)) {
|
||||
return await selectOSVersionFromMenu(deviceType, version === 'menu-esr');
|
||||
}
|
||||
// Note that `version` may also be 'latest', 'recommended', 'default'
|
||||
if (/^v?\d+\.\d+\.\d+/.test(version)) {
|
||||
if (version[0] === 'v') {
|
||||
version = version.slice(1);
|
||||
}
|
||||
return await selectOSVersionFromMenu(
|
||||
deviceType,
|
||||
version === 'menu-esr',
|
||||
false,
|
||||
);
|
||||
}
|
||||
const { normalizeOsVersion } = await import('./normalization');
|
||||
version = normalizeOsVersion(version);
|
||||
return version;
|
||||
}
|
||||
|
||||
async function selectOSVersionFromMenu(
|
||||
deviceType: string,
|
||||
esr: boolean,
|
||||
includeDraft: boolean,
|
||||
): Promise<string> {
|
||||
const vs = await getOsVersions(deviceType, esr);
|
||||
const vs = await getOsVersions(deviceType, esr, includeDraft);
|
||||
|
||||
const choices = vs.map((v) => ({
|
||||
value: v.raw_version,
|
||||
@ -237,17 +238,22 @@ async function selectOSVersionFromMenu(
|
||||
export async function getOsVersions(
|
||||
deviceType: string,
|
||||
esr: boolean,
|
||||
includeDraft: boolean,
|
||||
): Promise<SDK.OsVersion[]> {
|
||||
const sdk = getBalenaSdk();
|
||||
let slug = deviceType;
|
||||
let versions: SDK.OsVersion[] =
|
||||
await sdk.models.os.getAvailableOsVersions(slug);
|
||||
let versions: SDK.OsVersion[] = await sdk.models.os.getAvailableOsVersions(
|
||||
slug,
|
||||
{ includeDraft },
|
||||
);
|
||||
// if slug is an alias, fetch the real slug
|
||||
if (!versions.length) {
|
||||
// unalias device type slug
|
||||
slug = (await sdk.models.deviceType.get(slug, { $select: 'slug' })).slug;
|
||||
if (slug !== deviceType) {
|
||||
versions = await sdk.models.os.getAvailableOsVersions(slug);
|
||||
versions = await sdk.models.os.getAvailableOsVersions(slug, {
|
||||
includeDraft,
|
||||
});
|
||||
}
|
||||
}
|
||||
versions = versions.filter(
|
||||
|
2
lib/utils/compose-types.d.ts
vendored
2
lib/utils/compose-types.d.ts
vendored
@ -53,6 +53,7 @@ export interface TaggedImage {
|
||||
export interface ComposeOpts {
|
||||
convertEol: boolean;
|
||||
dockerfilePath?: string;
|
||||
composefileName?: string;
|
||||
inlineLogs?: boolean;
|
||||
multiDockerignore: boolean;
|
||||
noParentCheck: boolean;
|
||||
@ -65,6 +66,7 @@ export interface ComposeCliFlags {
|
||||
emulated: boolean;
|
||||
dockerfile?: string;
|
||||
nologs: boolean;
|
||||
'docker-compose'?: string;
|
||||
'multi-dockerignore': boolean;
|
||||
'noparent-check': boolean;
|
||||
'registry-secrets'?: RegistrySecrets;
|
||||
|
@ -20,6 +20,7 @@ import type * as SDK from 'balena-sdk';
|
||||
import type Dockerode = require('dockerode');
|
||||
import * as path from 'path';
|
||||
import type { Composition, ImageDescriptor } from '@balena/compose/dist/parse';
|
||||
import type { RetryParametersObj } from 'pinejs-client-core';
|
||||
import type {
|
||||
BuiltImage,
|
||||
ComposeOpts,
|
||||
@ -39,6 +40,7 @@ export function generateOpts(options: {
|
||||
dockerfile?: string;
|
||||
'multi-dockerignore': boolean;
|
||||
'noparent-check': boolean;
|
||||
'docker-compose'?: string;
|
||||
}): Promise<ComposeOpts> {
|
||||
const { promises: fs } = require('fs') as typeof import('fs');
|
||||
return fs.realpath(options.source || '.').then((projectPath) => ({
|
||||
@ -48,6 +50,7 @@ export function generateOpts(options: {
|
||||
convertEol: !options['noconvert-eol'],
|
||||
dockerfilePath: options.dockerfile,
|
||||
multiDockerignore: !!options['multi-dockerignore'],
|
||||
composefileName: options['docker-compose'],
|
||||
noParentCheck: options['noparent-check'],
|
||||
}));
|
||||
}
|
||||
@ -94,22 +97,62 @@ export function createProject(
|
||||
};
|
||||
}
|
||||
|
||||
const getRequestRetryParameters = (): RetryParametersObj => {
|
||||
if (
|
||||
process.env.BALENA_CLI_TEST_TYPE != null &&
|
||||
process.env.BALENA_CLI_TEST_TYPE !== ''
|
||||
) {
|
||||
// We only read the test env vars when in test mode.
|
||||
const { intVar } =
|
||||
require('@balena/env-parsing') as typeof import('@balena/env-parsing');
|
||||
// We use the BALENARCTEST namespace and only parse the env vars while in test mode
|
||||
// since we plan to switch all pinejs clients with the one of the SDK and might not
|
||||
// want to have to support these env vars.
|
||||
return {
|
||||
minDelayMs: intVar('BALENARCTEST_API_RETRY_MIN_DELAY_MS'),
|
||||
maxDelayMs: intVar('BALENARCTEST_API_RETRY_MAX_DELAY_MS'),
|
||||
maxAttempts: intVar('BALENARCTEST_API_RETRY_MAX_ATTEMPTS'),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
minDelayMs: 1000,
|
||||
maxDelayMs: 60000,
|
||||
maxAttempts: 7,
|
||||
};
|
||||
};
|
||||
|
||||
export const createRelease = async function (
|
||||
logger: Logger,
|
||||
apiEndpoint: string,
|
||||
auth: string,
|
||||
userId: number,
|
||||
appId: number,
|
||||
composition: Composition,
|
||||
draft: boolean,
|
||||
semver?: string,
|
||||
contract?: string,
|
||||
semver: string | undefined,
|
||||
contract: string | undefined,
|
||||
): Promise<Release> {
|
||||
const _ = require('lodash') as typeof import('lodash');
|
||||
const crypto = require('crypto') as typeof import('crypto');
|
||||
const releaseMod =
|
||||
require('@balena/compose/dist/release') as typeof import('@balena/compose/dist/release');
|
||||
|
||||
const client = releaseMod.createClient({ apiEndpoint, auth });
|
||||
const client = releaseMod.createClient({
|
||||
apiEndpoint,
|
||||
auth,
|
||||
retry: {
|
||||
...getRequestRetryParameters(),
|
||||
onRetry: (err, delayMs, attempt, maxAttempts) => {
|
||||
const code = err?.statusCode ?? 0;
|
||||
logger.logDebug(
|
||||
`API call failed with code ${code}. Attempting retry ${attempt} of ${maxAttempts} in ${
|
||||
delayMs / 1000
|
||||
} seconds`,
|
||||
);
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const { release, serviceImages } = await releaseMod.create({
|
||||
client,
|
||||
|
@ -31,7 +31,7 @@ import type * as MultiBuild from '@balena/compose/dist/multibuild';
|
||||
import * as semver from 'semver';
|
||||
import type { Duplex, Readable } from 'stream';
|
||||
import type { Pack } from 'tar-stream';
|
||||
import { ExpectedError } from '../errors';
|
||||
import { CompositionFileNotFoundError, ExpectedError } from '../errors';
|
||||
import {
|
||||
BuiltImage,
|
||||
ComposeOpts,
|
||||
@ -128,7 +128,11 @@ export async function loadProject(
|
||||
composeStr = compose.defaultComposition(image);
|
||||
} else {
|
||||
logger.logDebug('Resolving project...');
|
||||
[composeName, composeStr] = await resolveProject(logger, opts.projectPath);
|
||||
[composeName, composeStr] = await resolveProject({
|
||||
logger,
|
||||
projectRoot: opts.projectPath,
|
||||
compositionFile: opts.composefileName,
|
||||
});
|
||||
|
||||
if (composeName) {
|
||||
if (opts.dockerfilePath) {
|
||||
@ -198,33 +202,55 @@ async function mergeDevComposeOverlay(
|
||||
return composeStr;
|
||||
}
|
||||
|
||||
async function getDefaultCompositionFileName(
|
||||
projectRoot: string,
|
||||
): Promise<string | undefined> {
|
||||
for (const fname of compositionFileNames) {
|
||||
if (await exists(path.join(projectRoot, fname))) {
|
||||
return fname;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface ResolveProjectParameters {
|
||||
logger: Logger;
|
||||
projectRoot: string;
|
||||
quiet?: boolean;
|
||||
compositionFile?: string;
|
||||
}
|
||||
/**
|
||||
* Look into the given directory for valid compose files and return
|
||||
* the contents of the first one found.
|
||||
*/
|
||||
async function resolveProject(
|
||||
logger: Logger,
|
||||
projectRoot: string,
|
||||
async function resolveProject({
|
||||
logger,
|
||||
projectRoot,
|
||||
quiet = false,
|
||||
): Promise<[string, string]> {
|
||||
let composeFileName = '';
|
||||
compositionFile,
|
||||
}: ResolveProjectParameters): Promise<[string, string]> {
|
||||
logger.logError(`Iam on resolve project and have ${compositionFile}`);
|
||||
const composeFileName =
|
||||
compositionFile ?? (await getDefaultCompositionFileName(projectRoot));
|
||||
let composeFileContents = '';
|
||||
for (const fname of compositionFileNames) {
|
||||
const fpath = path.join(projectRoot, fname);
|
||||
if (await exists(fpath)) {
|
||||
logger.logDebug(`${fname} file found at "${projectRoot}"`);
|
||||
composeFileName = fname;
|
||||
try {
|
||||
composeFileContents = await fs.readFile(fpath, 'utf8');
|
||||
} catch (err) {
|
||||
logger.logError(`Error reading composition file "${fpath}":\n${err}`);
|
||||
throw err;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (composeFileName == null) {
|
||||
throw new CompositionFileNotFoundError(projectRoot);
|
||||
}
|
||||
|
||||
const fpath = path.join(projectRoot, composeFileName);
|
||||
if (!(await exists(fpath))) {
|
||||
throw new CompositionFileNotFoundError(fpath);
|
||||
}
|
||||
|
||||
logger.logDebug(`Using composition file at "${fpath}"`);
|
||||
try {
|
||||
composeFileContents = await fs.readFile(fpath, 'utf8');
|
||||
} catch (err) {
|
||||
logger.logError(`Error reading composition file "${fpath}":\n${err}`);
|
||||
throw err;
|
||||
}
|
||||
if (!quiet && !composeFileName) {
|
||||
logger.logInfo(`No "docker-compose.yml" file found at "${projectRoot}"`);
|
||||
logger.logInfo(`No composition file found at "${projectRoot}"`);
|
||||
}
|
||||
|
||||
return [composeFileName, composeFileContents];
|
||||
@ -680,15 +706,17 @@ async function loadBuildMetatada(
|
||||
export async function getServiceDirsFromComposition(
|
||||
sourceDir: string,
|
||||
composition?: Composition,
|
||||
compositionFile?: string,
|
||||
): Promise<Dictionary<string>> {
|
||||
const { createProject } = await import('./compose');
|
||||
const serviceDirs: Dictionary<string> = {};
|
||||
if (!composition) {
|
||||
const [, composeStr] = await resolveProject(
|
||||
Logger.getLogger(),
|
||||
sourceDir,
|
||||
true,
|
||||
);
|
||||
const [, composeStr] = await resolveProject({
|
||||
logger: Logger.getLogger(),
|
||||
projectRoot: sourceDir,
|
||||
quiet: true,
|
||||
compositionFile,
|
||||
});
|
||||
if (composeStr) {
|
||||
composition = createProject(sourceDir, composeStr).composition;
|
||||
}
|
||||
@ -1385,6 +1413,7 @@ export async function deployProject(
|
||||
`${prefix}Creating release...`,
|
||||
() =>
|
||||
createRelease(
|
||||
logger,
|
||||
apiEndpoint,
|
||||
auth,
|
||||
userId,
|
||||
@ -1651,6 +1680,9 @@ export const composeCliFlags = {
|
||||
description:
|
||||
'Alternative Dockerfile name/path, relative to the source folder',
|
||||
}),
|
||||
'docker-compose': Flags.string({
|
||||
description: 'Alternative compose yml file, relative to the source folder',
|
||||
}),
|
||||
nologs: Flags.boolean({
|
||||
description:
|
||||
'Hide the image build log output (produce less verbose output)',
|
||||
|
@ -184,9 +184,9 @@ export async function validateDevOptionAndWarn(
|
||||
* option.
|
||||
*/
|
||||
export async function validateSecureBootOptionAndWarn(
|
||||
secureBoot?: boolean,
|
||||
slug?: string,
|
||||
version?: string,
|
||||
secureBoot: boolean,
|
||||
slug: string,
|
||||
version: string,
|
||||
logger?: import('./logger'),
|
||||
) {
|
||||
if (!secureBoot) {
|
||||
@ -202,7 +202,7 @@ export async function validateSecureBootOptionAndWarn(
|
||||
const sdk = getBalenaSdk();
|
||||
const [osRelease] = await sdk.models.os.getAllOsVersions(slug, {
|
||||
$select: 'contract',
|
||||
$filter: { raw_version: `${version.replace(/^v/, '')}` },
|
||||
$filter: { raw_version: version },
|
||||
});
|
||||
if (!osRelease) {
|
||||
throw new ExpectedError(`Error: No ${version} release for ${slug}`);
|
||||
|
@ -56,6 +56,7 @@ export interface DeviceDeployOptions {
|
||||
deviceHost: string;
|
||||
devicePort?: number;
|
||||
dockerfilePath?: string;
|
||||
composefileName?: string;
|
||||
registrySecrets: RegistrySecrets;
|
||||
multiDockerignore: boolean;
|
||||
nocache: boolean;
|
||||
@ -182,6 +183,7 @@ export async function deployToDevice(opts: DeviceDeployOptions): Promise<void> {
|
||||
const project = await loadProject(globalLogger, {
|
||||
convertEol: opts.convertEol,
|
||||
dockerfilePath: opts.dockerfilePath,
|
||||
composefileName: opts.composefileName,
|
||||
multiDockerignore: opts.multiDockerignore,
|
||||
noParentCheck: opts.noParentCheck,
|
||||
projectName: 'local',
|
||||
@ -627,17 +629,10 @@ export function generateTargetState(
|
||||
};
|
||||
|
||||
opts.environment = _.merge(opts.environment, env[name]);
|
||||
// This function can be called with a subset of the
|
||||
// build tasks, when a single dockerfile has changed
|
||||
// when livepushing, so check the build task exists for
|
||||
// this composition entry (everything else in this
|
||||
// function comes from the composition which doesn't
|
||||
// change)
|
||||
let contract;
|
||||
if (name in keyedBuildTasks) {
|
||||
contract = keyedBuildTasks[name].contract;
|
||||
}
|
||||
|
||||
// This function should always be called with all the build tasks
|
||||
// so we can construct the correct target state so we don't really need
|
||||
// to check that the key exists on the `keyedBuildTasks` object
|
||||
const contract = keyedBuildTasks[name].contract;
|
||||
const task = keyedBuildTasks[name];
|
||||
|
||||
services[idx] = {
|
||||
|
@ -423,7 +423,12 @@ export class LivepushManager {
|
||||
// If we re-apply the target state, the supervisor
|
||||
// should recreate the container
|
||||
await this.api.setTargetState(
|
||||
generateTargetState(currentState, this.composition, [buildTask], {}),
|
||||
generateTargetState(
|
||||
currentState,
|
||||
this.composition,
|
||||
this.buildTasks,
|
||||
{},
|
||||
),
|
||||
);
|
||||
|
||||
await this.awaitDeviceStateSettle();
|
||||
|
@ -81,3 +81,13 @@ export async function disambiguateReleaseParam(
|
||||
export async function lowercaseIfSlug(s: string) {
|
||||
return s.includes('/') ? s.toLowerCase() : s;
|
||||
}
|
||||
|
||||
export function normalizeOsVersion(version: string) {
|
||||
// Note that `version` may also be 'latest', 'recommended', 'default'
|
||||
if (/^v?\d+\.\d+\.\d+/.test(version)) {
|
||||
if (version[0] === 'v') {
|
||||
version = version.slice(1);
|
||||
}
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
5452
npm-shrinkwrap.json
generated
5452
npm-shrinkwrap.json
generated
File diff suppressed because it is too large
Load Diff
19
package.json
19
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "balena-cli",
|
||||
"version": "17.4.6",
|
||||
"version": "18.0.0",
|
||||
"description": "The official balena Command Line Interface",
|
||||
"main": "./build/app.js",
|
||||
"homepage": "https://github.com/balena-io/balena-cli",
|
||||
@ -16,6 +16,7 @@
|
||||
"doc/",
|
||||
"lib/",
|
||||
"patches/",
|
||||
"!patches/**/**.dev.patch",
|
||||
"*.md",
|
||||
"npm-shrinkwrap.json",
|
||||
"oclif.manifest.json"
|
||||
@ -39,6 +40,7 @@
|
||||
"node_modules/open/xdg-open",
|
||||
"node_modules/windosu/*.bat",
|
||||
"node_modules/windosu/*.cmd",
|
||||
"node_modules/axios/**/*",
|
||||
"npm-shrinkwrap.json",
|
||||
"oclif.manifest.json"
|
||||
]
|
||||
@ -89,7 +91,7 @@
|
||||
"author": "Balena Inc. (https://balena.io/)",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": ">=18 <20"
|
||||
"node": ">=20 <21"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
@ -146,7 +148,7 @@
|
||||
"@types/ndjson": "^2.0.1",
|
||||
"@types/net-keepalive": "^0.4.1",
|
||||
"@types/nock": "^11.1.0",
|
||||
"@types/node": "^18.17.6",
|
||||
"@types/node": "^20.0.0",
|
||||
"@types/node-cleanup": "^2.1.2",
|
||||
"@types/parse-link-header": "^1.0.1",
|
||||
"@types/prettyjson": "^0.0.30",
|
||||
@ -185,7 +187,6 @@
|
||||
"nock": "^13.2.1",
|
||||
"oclif": "^3.17.1",
|
||||
"parse-link-header": "^2.0.0",
|
||||
"pkg": "^5.8.1",
|
||||
"publish-release": "^1.6.1",
|
||||
"rewire": "^5.0.0",
|
||||
"simple-git": "^3.14.1",
|
||||
@ -194,21 +195,23 @@
|
||||
"typescript": "^5.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@balena/compose": "^3.0.5",
|
||||
"@balena/compose": "^3.2.0",
|
||||
"@balena/dockerignore": "^1.0.2",
|
||||
"@balena/env-parsing": "^1.1.8",
|
||||
"@balena/es-version": "^1.0.1",
|
||||
"@oclif/core": "^3.14.1",
|
||||
"@resin.io/valid-email": "^0.1.0",
|
||||
"@sentry/node": "^6.16.1",
|
||||
"@types/fast-levenshtein": "0.0.1",
|
||||
"@types/update-notifier": "^4.1.1",
|
||||
"@yao-pkg/pkg": "^5.11.1",
|
||||
"balena-config-json": "^4.2.0",
|
||||
"balena-device-init": "^6.0.0",
|
||||
"balena-errors": "^4.7.3",
|
||||
"balena-image-fs": "^7.0.6",
|
||||
"balena-image-manager": "^10.0.1",
|
||||
"balena-preload": "^15.0.1",
|
||||
"balena-sdk": "^19.0.0",
|
||||
"balena-sdk": "^19.4.0",
|
||||
"balena-semver": "^2.3.0",
|
||||
"balena-settings-client": "^5.0.2",
|
||||
"balena-settings-storage": "^8.1.0",
|
||||
@ -225,7 +228,7 @@
|
||||
"docker-progress": "^5.1.3",
|
||||
"dockerode": "3.3.3",
|
||||
"ejs": "^3.1.6",
|
||||
"etcher-sdk": "^8.7.0",
|
||||
"etcher-sdk": "9.0.6",
|
||||
"event-stream": "3.3.4",
|
||||
"express": "^4.17.2",
|
||||
"fast-boot2": "^1.1.0",
|
||||
@ -283,6 +286,6 @@
|
||||
"windosu": "^0.3.0"
|
||||
},
|
||||
"versionist": {
|
||||
"publishedAt": "2023-12-08T15:55:47.943Z"
|
||||
"publishedAt": "2024-02-06T12:19:36.007Z"
|
||||
}
|
||||
}
|
||||
|
@ -12,10 +12,10 @@ index 607d8dc..07ba1f2 100644
|
||||
return lines.join('\n');
|
||||
}
|
||||
diff --git a/node_modules/@oclif/core/lib/help/command.js b/node_modules/@oclif/core/lib/help/command.js
|
||||
index 82d9eed..0a8d45f 100644
|
||||
index 63c0545..7caad4a 100644
|
||||
--- a/node_modules/@oclif/core/lib/help/command.js
|
||||
+++ b/node_modules/@oclif/core/lib/help/command.js
|
||||
@@ -48,7 +48,7 @@ class CommandHelp extends formatter_1.HelpFormatter {
|
||||
@@ -58,7 +58,7 @@ class CommandHelp extends formatter_1.HelpFormatter {
|
||||
if (args.filter((a) => a.description).length === 0)
|
||||
return;
|
||||
return args.map((a) => {
|
||||
@ -24,8 +24,8 @@ index 82d9eed..0a8d45f 100644
|
||||
let description = a.description || '';
|
||||
if (a.default)
|
||||
description = `${(0, theme_1.colorize)(this.config?.theme?.flagDefaultValue, `[default: ${a.default}]`)} ${description}`;
|
||||
@@ -143,14 +143,12 @@ class CommandHelp extends formatter_1.HelpFormatter {
|
||||
label = labels.join((0, theme_1.colorize)(this.config?.theme?.flagSeparator, flag.char ? ', ' : ' '));
|
||||
@@ -153,14 +153,12 @@ class CommandHelp extends formatter_1.HelpFormatter {
|
||||
label = labels.join(flag.char ? (0, theme_1.colorize)(this.config?.theme?.flagSeparator, ', ') : ' ');
|
||||
}
|
||||
if (flag.type === 'option') {
|
||||
- let value = flag.helpValue || (this.opts.showFlagNameInTitle ? flag.name : '<value>');
|
||||
@ -40,7 +40,7 @@ index 82d9eed..0a8d45f 100644
|
||||
+ value += ' ...';
|
||||
label += `=${value}`;
|
||||
}
|
||||
return label;
|
||||
return (0, theme_1.colorize)(this.config.theme?.flag, label);
|
||||
diff --git a/node_modules/@oclif/core/lib/help/index.js b/node_modules/@oclif/core/lib/help/index.js
|
||||
index 242538a..efde8ac 100644
|
||||
--- a/node_modules/@oclif/core/lib/help/index.js
|
@ -15,6 +15,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { intVar } from '@balena/env-parsing';
|
||||
import type { Request as ReleaseRequest } from '@balena/compose/dist/release';
|
||||
import { expect } from 'chai';
|
||||
import { promises as fs } from 'fs';
|
||||
@ -284,16 +285,25 @@ describe('balena deploy', function () {
|
||||
api.expectPostRelease({});
|
||||
docker.expectGetManifestBusybox();
|
||||
|
||||
let failedImagePatchRequests = 0;
|
||||
// Mock this patch HTTP request to return status code 500, in which case
|
||||
// the release status should be saved as "failed" rather than "success"
|
||||
const maxRequestRetries = intVar('BALENARCTEST_API_RETRY_MAX_ATTEMPTS');
|
||||
expect(
|
||||
maxRequestRetries,
|
||||
'BALENARCTEST_API_RETRY_MAX_ATTEMPTS must be >= 2 for this test',
|
||||
).to.be.greaterThanOrEqual(2);
|
||||
api.expectPatchImage({
|
||||
replyBody: errMsg,
|
||||
statusCode: 500,
|
||||
// b/c failed requests are retried
|
||||
times: maxRequestRetries,
|
||||
inspectRequest: (_uri, requestBody) => {
|
||||
const imageBody = requestBody as Partial<
|
||||
import('@balena/compose/dist/release/models').ImageModel
|
||||
>;
|
||||
expect(imageBody.status).to.equal('success');
|
||||
failedImagePatchRequests++;
|
||||
},
|
||||
});
|
||||
// Check that the CLI patches the release with status="failed"
|
||||
@ -324,6 +334,7 @@ describe('balena deploy', function () {
|
||||
responseCode: 200,
|
||||
services: ['main'],
|
||||
});
|
||||
expect(failedImagePatchRequests).to.equal(maxRequestRetries);
|
||||
} finally {
|
||||
await switchSentry(sentryStatus);
|
||||
// @ts-expect-error claims restore does not exist
|
||||
@ -331,6 +342,82 @@ describe('balena deploy', function () {
|
||||
}
|
||||
});
|
||||
|
||||
it('should create the expected --build tar stream after retrying failing OData requests (single container)', async () => {
|
||||
const projectPath = path.join(projectsPath, 'no-docker-compose', 'basic');
|
||||
const expectedFiles: ExpectedTarStreamFiles = {
|
||||
'src/.dockerignore': { fileSize: 16, type: 'file' },
|
||||
'src/start.sh': { fileSize: 89, type: 'file' },
|
||||
'src/windows-crlf.sh': {
|
||||
fileSize: isWindows ? 68 : 70,
|
||||
testStream: isWindows ? expectStreamNoCRLF : undefined,
|
||||
type: 'file',
|
||||
},
|
||||
Dockerfile: { fileSize: 88, type: 'file' },
|
||||
'Dockerfile-alt': { fileSize: 30, type: 'file' },
|
||||
};
|
||||
const responseFilename = 'build-POST.json';
|
||||
const responseBody = await fs.readFile(
|
||||
path.join(dockerResponsePath, responseFilename),
|
||||
'utf8',
|
||||
);
|
||||
const expectedResponseLines = [
|
||||
...commonResponseLines[responseFilename],
|
||||
`[Info] No "docker-compose.yml" file found at "${projectPath}"`,
|
||||
`[Info] Creating default composition with source: "${projectPath}"`,
|
||||
...getDockerignoreWarn1(
|
||||
[path.join(projectPath, 'src', '.dockerignore')],
|
||||
'deploy',
|
||||
),
|
||||
];
|
||||
if (isWindows) {
|
||||
const fname = path.join(projectPath, 'src', 'windows-crlf.sh');
|
||||
expectedResponseLines.push(
|
||||
`[Info] Converting line endings CRLF -> LF for file: ${fname}`,
|
||||
);
|
||||
}
|
||||
|
||||
api.expectPostRelease({});
|
||||
docker.expectGetManifestBusybox();
|
||||
|
||||
const maxRequestRetries = intVar('BALENARCTEST_API_RETRY_MAX_ATTEMPTS');
|
||||
expect(
|
||||
maxRequestRetries,
|
||||
'BALENARCTEST_API_RETRY_MAX_ATTEMPTS must be >= 2 for this test',
|
||||
).to.be.greaterThanOrEqual(2);
|
||||
let failedImagePatchRequests = 0;
|
||||
let succesfullImagePatchRequests = 0;
|
||||
api
|
||||
.optPatch(/^\/v6\/image($|[(?])/, { times: maxRequestRetries })
|
||||
.reply((_uri, requestBody) => {
|
||||
const imageBody = requestBody as Partial<
|
||||
import('@balena/compose/dist/release/models').ImageModel
|
||||
>;
|
||||
expect(imageBody.status).to.equal('success');
|
||||
if (failedImagePatchRequests < maxRequestRetries - 1) {
|
||||
failedImagePatchRequests++;
|
||||
return [500, 'Patch Image Error'];
|
||||
}
|
||||
succesfullImagePatchRequests++;
|
||||
return [200, 'OK'];
|
||||
});
|
||||
api.expectPatchRelease({});
|
||||
api.expectPostImageLabel();
|
||||
|
||||
await testDockerBuildStream({
|
||||
commandLine: `deploy testApp --build --source ${projectPath}`,
|
||||
dockerMock: docker,
|
||||
expectedFilesByService: { main: expectedFiles },
|
||||
expectedQueryParamsByService: { main: commonQueryParams },
|
||||
expectedResponseLines,
|
||||
projectPath,
|
||||
responseBody,
|
||||
responseCode: 200,
|
||||
services: ['main'],
|
||||
});
|
||||
expect(failedImagePatchRequests).to.equal(maxRequestRetries - 1);
|
||||
expect(succesfullImagePatchRequests).to.equal(1);
|
||||
});
|
||||
|
||||
it('should create the expected tar stream (docker-compose, --multi-dockerignore)', async () => {
|
||||
const projectPath = path.join(projectsPath, 'docker-compose', 'basic');
|
||||
const service1Dockerfile = (
|
||||
|
@ -26,6 +26,11 @@ process.env.BALENARC_NO_SENTRY = '1';
|
||||
// Like the global `--unsupported` flag
|
||||
process.env.BALENARC_UNSUPPORTED = '1';
|
||||
|
||||
// Reduce the api request retry limits to keep the tests fast.
|
||||
process.env.BALENARCTEST_API_RETRY_MIN_DELAY_MS = '100';
|
||||
process.env.BALENARCTEST_API_RETRY_MAX_DELAY_MS = '1000';
|
||||
process.env.BALENARCTEST_API_RETRY_MAX_ATTEMPTS = '2';
|
||||
|
||||
import * as tmp from 'tmp';
|
||||
tmp.setGracefulCleanup();
|
||||
// Use a temporary dir for tests data
|
||||
|
@ -35,11 +35,13 @@ export class BalenaAPIMock extends NockMock {
|
||||
notFound = false,
|
||||
optional = false,
|
||||
persist = false,
|
||||
times = undefined as number | undefined,
|
||||
expandArchitecture = false,
|
||||
} = {}) {
|
||||
const interceptor = this.optGet(/^\/v6\/application($|[(?])/, {
|
||||
optional,
|
||||
persist,
|
||||
times,
|
||||
});
|
||||
if (notFound) {
|
||||
interceptor.reply(200, { d: [] });
|
||||
@ -105,10 +107,12 @@ export class BalenaAPIMock extends NockMock {
|
||||
notFound = false,
|
||||
optional = false,
|
||||
persist = false,
|
||||
times = undefined as number | undefined,
|
||||
} = {}) {
|
||||
const interceptor = this.optGet(/^\/v6\/release($|[(?])/, {
|
||||
persist,
|
||||
optional,
|
||||
times,
|
||||
});
|
||||
if (notFound) {
|
||||
interceptor.reply(200, { d: [] });
|
||||
@ -133,8 +137,9 @@ export class BalenaAPIMock extends NockMock {
|
||||
inspectRequest = this.inspectNoOp,
|
||||
optional = false,
|
||||
persist = false,
|
||||
times = undefined as number | undefined,
|
||||
}) {
|
||||
this.optPatch(/^\/v6\/release($|[(?])/, { optional, persist }).reply(
|
||||
this.optPatch(/^\/v6\/release($|[(?])/, { optional, persist, times }).reply(
|
||||
statusCode,
|
||||
this.getInspectedReplyBodyFunction(inspectRequest, replyBody),
|
||||
);
|
||||
@ -148,8 +153,9 @@ export class BalenaAPIMock extends NockMock {
|
||||
inspectRequest = this.inspectNoOp,
|
||||
optional = false,
|
||||
persist = false,
|
||||
times = undefined as number | undefined,
|
||||
}) {
|
||||
this.optPost(/^\/v6\/release($|[(?])/, { optional, persist }).reply(
|
||||
this.optPost(/^\/v6\/release($|[(?])/, { optional, persist, times }).reply(
|
||||
statusCode,
|
||||
this.getInspectedReplyFileFunction(
|
||||
inspectRequest,
|
||||
@ -167,8 +173,9 @@ export class BalenaAPIMock extends NockMock {
|
||||
inspectRequest = this.inspectNoOp,
|
||||
optional = false,
|
||||
persist = false,
|
||||
times = undefined as number | undefined,
|
||||
}) {
|
||||
this.optPatch(/^\/v6\/image($|[(?])/, { optional, persist }).reply(
|
||||
this.optPatch(/^\/v6\/image($|[(?])/, { optional, persist, times }).reply(
|
||||
statusCode,
|
||||
this.getInspectedReplyBodyFunction(inspectRequest, replyBody),
|
||||
);
|
||||
|
@ -21,6 +21,7 @@ import * as fs from 'fs';
|
||||
export interface ScopeOpts {
|
||||
optional?: boolean;
|
||||
persist?: boolean;
|
||||
times?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -52,36 +53,50 @@ export class NockMock {
|
||||
this.expect = this.scope;
|
||||
}
|
||||
|
||||
public optMethod(
|
||||
method: 'get' | 'delete' | 'patch' | 'post',
|
||||
uri: string | RegExp | ((uri: string) => boolean),
|
||||
{ optional = false, persist = false, times = undefined }: ScopeOpts,
|
||||
) {
|
||||
let scope = this.scope;
|
||||
if (persist) {
|
||||
scope = scope.persist();
|
||||
}
|
||||
let reqInterceptor = scope[method](uri);
|
||||
if (times != null) {
|
||||
reqInterceptor = reqInterceptor.times(times);
|
||||
} else if (optional) {
|
||||
reqInterceptor = reqInterceptor.optionally();
|
||||
}
|
||||
return reqInterceptor;
|
||||
}
|
||||
|
||||
public optGet(
|
||||
uri: string | RegExp | ((uri: string) => boolean),
|
||||
{ optional = false, persist = false }: ScopeOpts,
|
||||
opts: ScopeOpts,
|
||||
): nock.Interceptor {
|
||||
const get = (persist ? this.scope.persist() : this.scope).get(uri);
|
||||
return optional ? get.optionally() : get;
|
||||
return this.optMethod('get', uri, opts);
|
||||
}
|
||||
|
||||
public optDelete(
|
||||
uri: string | RegExp | ((uri: string) => boolean),
|
||||
{ optional = false, persist = false }: ScopeOpts,
|
||||
opts: ScopeOpts,
|
||||
) {
|
||||
const del = (persist ? this.scope.persist() : this.scope).delete(uri);
|
||||
return optional ? del.optionally() : del;
|
||||
return this.optMethod('delete', uri, opts);
|
||||
}
|
||||
|
||||
public optPatch(
|
||||
uri: string | RegExp | ((uri: string) => boolean),
|
||||
{ optional = false, persist = false }: ScopeOpts,
|
||||
opts: ScopeOpts,
|
||||
) {
|
||||
const patch = (persist ? this.scope.persist() : this.scope).patch(uri);
|
||||
return optional ? patch.optionally() : patch;
|
||||
return this.optMethod('patch', uri, opts);
|
||||
}
|
||||
|
||||
public optPost(
|
||||
uri: string | RegExp | ((uri: string) => boolean),
|
||||
{ optional = false, persist = false }: ScopeOpts,
|
||||
opts: ScopeOpts,
|
||||
) {
|
||||
const post = (persist ? this.scope.persist() : this.scope).post(uri);
|
||||
return optional ? post.optionally() : post;
|
||||
return this.optMethod('post', uri, opts);
|
||||
}
|
||||
|
||||
protected inspectNoOp(_uri: string, _requestBody: nock.Body): void {
|
||||
|
@ -76,13 +76,96 @@
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=x64 libc= platform=darwin)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=x64 libc= platform=darwin)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=x64 libc= platform=darwin)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=x64 libc= platform=darwin)
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules/@isaacs/cliui/node_modules/string-width/index.js
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules/@isaacs/cliui/node_modules/strip-ansi/index.js
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules/@isaacs/cliui/node_modules/wrap-ansi/index.js
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=x64 libc= platform=darwin)
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules/@isaacs/cliui/node_modules/ansi-regex/index.js
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules/@isaacs/cliui/node_modules/ansi-styles/index.js
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> 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
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=darwin)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=darwin)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=darwin)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=darwin)
|
||||
> 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
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=darwin)
|
||||
> 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
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=darwin)
|
@ -76,12 +76,95 @@
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=arm64 libc= platform=linux)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=arm64 libc= platform=linux)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=arm64 libc= platform=linux)
|
||||
> Warning Failed to make bytecode node18-arm64 for file node_modules/@isaacs/cliui/node_modules/string-width/index.js
|
||||
> Warning Failed to make bytecode node18-arm64 for file node_modules/@isaacs/cliui/node_modules/strip-ansi/index.js
|
||||
> Warning Failed to make bytecode node18-arm64 for file node_modules/@isaacs/cliui/node_modules/wrap-ansi/index.js
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=arm64 libc= platform=linux)
|
||||
> Warning Failed to make bytecode node18-arm64 for file node_modules/@isaacs/cliui/node_modules/ansi-regex/index.js
|
||||
> Warning Failed to make bytecode node18-arm64 for file node_modules/@isaacs/cliui/node_modules/ansi-styles/index.js
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> 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
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=arm64 libc= platform=linux)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=arm64 libc= platform=linux)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=arm64 libc= platform=linux)
|
||||
> 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
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=arm64 libc= platform=linux)
|
||||
> 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
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=arm64 libc= platform=linux)
|
||||
|
@ -76,12 +76,95 @@
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=x64 libc= platform=linux)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=x64 libc= platform=linux)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=x64 libc= platform=linux)
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules/@isaacs/cliui/node_modules/string-width/index.js
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules/@isaacs/cliui/node_modules/strip-ansi/index.js
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules/@isaacs/cliui/node_modules/wrap-ansi/index.js
|
||||
prebuild-install warn install No prebuilt binaries found (target=v18.5.0 runtime=node arch=x64 libc= platform=linux)
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules/@isaacs/cliui/node_modules/ansi-regex/index.js
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules/@isaacs/cliui/node_modules/ansi-styles/index.js
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/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/resin-cli-visuals/node_modules/drivelist/scripts/win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> 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
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=linux)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=linux)
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=linux)
|
||||
> 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
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=linux)
|
||||
> 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
|
||||
prebuild-install warn install No prebuilt binaries found (target=v20.10.0 runtime=node arch=x64 libc= platform=linux)
|
||||
|
@ -76,8 +76,90 @@
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\drivelist\scripts\win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules\@isaacs\cliui\node_modules\string-width\index.js
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules\@isaacs\cliui\node_modules\strip-ansi\index.js
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules\@isaacs\cliui\node_modules\wrap-ansi\index.js
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules\@isaacs\cliui\node_modules\ansi-regex\index.js
|
||||
> Warning Failed to make bytecode node18-x64 for file node_modules\@isaacs\cliui\node_modules\ansi-styles\index.js
|
||||
> Warning Cannot include file %1 into executable.
|
||||
The file must be distributed with executable as %2.
|
||||
%1: node_modules\resin-cli-visuals\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\resin-cli-visuals\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\resin-cli-visuals\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\resin-cli-visuals\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\resin-cli-visuals\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\resin-cli-visuals\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\resin-cli-visuals\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\resin-cli-visuals\node_modules\drivelist\scripts\win32.bat
|
||||
%2: path-to-executable/drivelist/win32.bat
|
||||
> 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\@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
|
||||
|
4
typings/pkg/index.d.ts
vendored
4
typings/pkg/index.d.ts
vendored
@ -21,7 +21,3 @@ declare namespace NodeJS {
|
||||
pkg?: boolean;
|
||||
}
|
||||
}
|
||||
|
||||
declare module 'pkg' {
|
||||
export function exec(args: string[]): Promise<void>;
|
||||
}
|
||||
|
Reference in New Issue
Block a user