balena-cli 25.1.2 → 25.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3365,651 +3365,483 @@
3365
3365
  "rm.js"
3366
3366
  ]
3367
3367
  },
3368
- "os:configure": {
3368
+ "preload": {
3369
3369
  "aliases": [],
3370
3370
  "args": {
3371
3371
  "image": {
3372
- "description": "path to a balenaOS image file, e.g. \"rpi3.img\"",
3372
+ "description": "the image file path",
3373
3373
  "name": "image",
3374
3374
  "required": true
3375
3375
  }
3376
3376
  },
3377
- "description": "Configure a previously downloaded balenaOS image.\n\nConfigure a previously downloaded balenaOS image for a specific device type\nor fleet.\n\nConfiguration settings such as WiFi authentication will be taken from the\nfollowing sources, in precedence order:\n1. Command-line options like `--config-wifi-ssid`\n2. A given `config.json` file specified with the `--config` option.\n3. User input through interactive prompts (text menus).\n\nThe --device-type option is used to override the fleet's default device type,\nin case of a fleet with mixed device types.\n\nThe '--dev' option is used to configure balenaOS to operate in development mode,\nallowing unauthenticated root ssh access and exposing network ports such as\nbalenaEngine's 2375 (unencrypted). This option causes `\"developmentMode\": true`\nto be inserted in the 'config.json' file in the image's boot partition. Development\nmode (as a configurable option) is applicable to balenaOS releases from early\n2022. Older releases have separate development and production balenaOS images\nthat cannot be reconfigured through 'config.json' or the '--dev' option. Do not\nconfuse the balenaOS \"development mode\" with a device's \"local mode\", the latter\nbeing a supervisor feature that allows the \"balena push\" command to push a user's\napplication directly to a device in the local network.\n\nThe '--secureBoot' option is used to configure a balenaOS installer image to opt-in\nsecure boot and disk encryption.\n\nThe --system-connection (-c) option is used to inject NetworkManager connection\nprofiles for additional network interfaces, such as cellular/GSM or additional\nWiFi or ethernet connections. This option may be passed multiple times in case there\nare multiple files to inject. See connection profile examples and reference at:\nhttps://www.balena.io/docs/reference/OS/network/2.x/\nhttps://developer.gnome.org/NetworkManager/stable/ref-settings.html\n\nFleets may be specified by fleet name or slug. Fleet slugs are\nthe recommended option, as they are unique and unambiguous. Slugs can be\nlisted with the `balena fleet list` command. Note that slugs may change if the\nfleet is renamed. Fleet names are not unique and may result in \"Fleet is\nambiguous\" errors at any time (even if it \"used to work in the past\"), for\nexample if the name clashes with a newly created public fleet, or with fleets\nfrom other balena accounts that you may be invited to join under any role.\nFor this reason, fleet names are especially discouraged in scripts (e.g. CI\nenvironments).",
3377
+ "description": "Preload a release on a disk image (or Edison zip archive).\n\nPreload a release (service images/containers) from a balena fleet, and optionally\na balenaOS splash screen, in a previously downloaded '.img' balenaOS image file\nin the local disk (a zip file is only accepted for the Intel Edison device type).\nAfter preloading, the balenaOS image file can be flashed to a device's SD card.\nWhen the device boots, it will not need to download the release, as it was\npreloaded. This is usually combined with release pinning\n(https://www.balena.io/docs/learn/deploy/release-strategy/release-policy/)\nto avoid the device downloading a newer release straight away, if available.\nCheck also the Preloading and Preregistering section of the balena CLI's advanced\nmasterclass document:\nhttps://www.balena.io/docs/learn/more/masterclasses/advanced-cli/#5-preloading-and-preregistering\n\nFleets may be specified by fleet name or slug. Fleet slugs are\nthe recommended option, as they are unique and unambiguous. Slugs can be\nlisted with the `balena fleet list` command. Note that slugs may change if the\nfleet is renamed. Fleet names are not unique and may result in \"Fleet is\nambiguous\" errors at any time (even if it \"used to work in the past\"), for\nexample if the name clashes with a newly created public fleet, or with fleets\nfrom other balena accounts that you may be invited to join under any role.\nFor this reason, fleet names are especially discouraged in scripts (e.g. CI\nenvironments).\n\nNote that the this command requires Docker to be installed, as further detailed\nin the balena CLI's installation instructions:\nhttps://github.com/balena-io/balena-cli/blob/master/INSTALL.md\nThe `--dockerHost` and `--dockerPort` flags allow a remote Docker engine to\nbe used, however the image file must be accessible to the remote Docker engine\non the same path given on the command line. This is because Docker's bind mount\nfeature is used to \"share\" the image with a container that performs the preload.",
3378
3378
  "examples": [
3379
- "$ balena os configure ../path/rpi3.img --device 7cf02a6",
3380
- "$ balena os configure ../path/rpi3.img --fleet myorg/myfleet",
3381
- "$ balena os configure ../path/rpi3.img -f myorg/myfleet --device-type raspberrypi3",
3382
- "$ balena os configure ../path/rpi3.img --config myWifiConfig.json"
3379
+ "$ balena preload balena.img --fleet MyFleet --commit e1f2592fc6ee949e68756d4f4a48e49bff8d72a0",
3380
+ "$ balena preload balena.img --fleet myorg/myfleet --splash-image image.png",
3381
+ "$ balena preload balena.img"
3383
3382
  ],
3384
3383
  "flags": {
3385
3384
  "fleet": {
3386
3385
  "char": "f",
3387
3386
  "description": "fleet name or slug (preferred)",
3388
- "exclusive": [
3389
- "device",
3390
- "config"
3391
- ],
3392
3387
  "name": "fleet",
3393
3388
  "hasDynamicHelp": false,
3394
3389
  "multiple": false,
3395
3390
  "type": "option"
3396
3391
  },
3397
- "device": {
3398
- "char": "d",
3399
- "description": "device UUID",
3400
- "exclusive": [
3401
- "fleet",
3402
- "device-type",
3403
- "config",
3404
- "provisioning-key-name",
3405
- "provisioning-key-expiry-date"
3406
- ],
3407
- "name": "device",
3392
+ "commit": {
3393
+ "char": "c",
3394
+ "description": "The commit hash of the release to preload. Use \"current\" to specify the current\nrelease (ignored if no appId is given). The current release is usually also the\nlatest, but can be pinned to a specific release. See:\nhttps://www.balena.io/docs/learn/deploy/release-strategy/release-policy/\nhttps://www.balena.io/docs/learn/more/masterclasses/fleet-management/#63-pin-using-the-api\nhttps://github.com/balena-io-examples/staged-releases",
3395
+ "name": "commit",
3408
3396
  "hasDynamicHelp": false,
3409
3397
  "multiple": false,
3410
3398
  "type": "option"
3411
3399
  },
3412
- "config": {
3413
- "description": "path to a pre-generated config.json file to be injected in the OS image",
3414
- "exclusive": [
3415
- "fleet",
3416
- "device",
3417
- "advanced",
3418
- "config-app-update-poll-interval",
3419
- "config-network",
3420
- "config-wifi-key",
3421
- "config-wifi-ssid",
3422
- "dev",
3423
- "secureBoot",
3424
- "device-type",
3425
- "initial-device-name",
3426
- "provisioning-key-name",
3427
- "provisioning-key-expiry-date"
3428
- ],
3429
- "name": "config",
3400
+ "splash-image": {
3401
+ "char": "s",
3402
+ "description": "path to a png image to replace the splash screen",
3403
+ "name": "splash-image",
3430
3404
  "hasDynamicHelp": false,
3431
3405
  "multiple": false,
3432
3406
  "type": "option"
3433
3407
  },
3434
- "advanced": {
3435
- "char": "v",
3436
- "description": "ask advanced configuration questions (when in interactive mode)",
3437
- "name": "advanced",
3408
+ "dont-check-arch": {
3409
+ "description": "disable architecture compatibility check between image and fleet",
3410
+ "name": "dont-check-arch",
3438
3411
  "allowNo": false,
3439
3412
  "type": "boolean"
3440
3413
  },
3441
- "config-app-update-poll-interval": {
3442
- "description": "supervisor cloud polling interval in minutes (e.g. for variable updates)",
3443
- "name": "config-app-update-poll-interval",
3444
- "hasDynamicHelp": false,
3445
- "multiple": false,
3446
- "type": "option"
3414
+ "pin-device-to-release": {
3415
+ "char": "p",
3416
+ "description": "pin the preloaded device to the preloaded release on provision",
3417
+ "name": "pin-device-to-release",
3418
+ "allowNo": true,
3419
+ "type": "boolean"
3447
3420
  },
3448
- "config-network": {
3449
- "description": "device network type (non-interactive configuration)",
3450
- "name": "config-network",
3421
+ "additional-space": {
3422
+ "description": "expand the image by this amount of bytes instead of automatically estimating the required amount",
3423
+ "name": "additional-space",
3451
3424
  "hasDynamicHelp": false,
3452
3425
  "multiple": false,
3453
- "options": [
3454
- "ethernet",
3455
- "wifi"
3456
- ],
3457
3426
  "type": "option"
3458
3427
  },
3459
- "config-wifi-key": {
3460
- "description": "WiFi key (password) (non-interactive configuration)",
3461
- "name": "config-wifi-key",
3428
+ "add-certificate": {
3429
+ "description": "Add the given certificate (in PEM format) to /etc/ssl/certs in the preloading container.\nThe file name must end with '.crt' and must not be already contained in the preloader's\n/etc/ssl/certs folder.\nCan be repeated to add multiple certificates.",
3430
+ "name": "add-certificate",
3462
3431
  "hasDynamicHelp": false,
3463
- "multiple": false,
3432
+ "multiple": true,
3464
3433
  "type": "option"
3465
3434
  },
3466
- "config-wifi-ssid": {
3467
- "description": "WiFi SSID (network name) (non-interactive configuration)",
3468
- "name": "config-wifi-ssid",
3435
+ "docker": {
3436
+ "char": "P",
3437
+ "description": "Path to a local docker socket (e.g. /var/run/docker.sock)",
3438
+ "name": "docker",
3469
3439
  "hasDynamicHelp": false,
3470
3440
  "multiple": false,
3471
3441
  "type": "option"
3472
3442
  },
3473
- "dev": {
3474
- "description": "Configure balenaOS to operate in development mode",
3475
- "name": "dev",
3476
- "allowNo": false,
3477
- "type": "boolean"
3478
- },
3479
- "secureBoot": {
3480
- "description": "Configure balenaOS installer to opt-in secure boot and disk encryption",
3481
- "name": "secureBoot",
3482
- "allowNo": false,
3483
- "type": "boolean"
3484
- },
3485
- "device-type": {
3486
- "dependsOn": [
3487
- "fleet"
3488
- ],
3489
- "description": "device type slug (e.g. \"raspberrypi3\") to override the fleet device type",
3490
- "name": "device-type",
3443
+ "dockerHost": {
3444
+ "char": "h",
3445
+ "description": "Docker daemon hostname or IP address (dev machine or balena device) ",
3446
+ "name": "dockerHost",
3491
3447
  "hasDynamicHelp": false,
3492
3448
  "multiple": false,
3493
3449
  "type": "option"
3494
3450
  },
3495
- "initial-device-name": {
3496
- "description": "This option will set the device name when the device provisions",
3497
- "name": "initial-device-name",
3451
+ "dockerPort": {
3452
+ "description": "Docker daemon TCP port number (hint: 2375 for balena devices)",
3453
+ "name": "dockerPort",
3498
3454
  "hasDynamicHelp": false,
3499
3455
  "multiple": false,
3500
3456
  "type": "option"
3501
3457
  },
3502
- "provisioning-key-name": {
3503
- "description": "custom key name assigned to generated provisioning api key",
3504
- "exclusive": [
3505
- "config",
3506
- "device"
3507
- ],
3508
- "name": "provisioning-key-name",
3458
+ "ca": {
3459
+ "description": "Docker host TLS certificate authority file",
3460
+ "name": "ca",
3509
3461
  "hasDynamicHelp": false,
3510
3462
  "multiple": false,
3511
3463
  "type": "option"
3512
3464
  },
3513
- "provisioning-key-expiry-date": {
3514
- "description": "expiry date assigned to generated provisioning api key (format: YYYY-MM-DD)",
3515
- "exclusive": [
3516
- "config",
3517
- "device"
3518
- ],
3519
- "name": "provisioning-key-expiry-date",
3465
+ "cert": {
3466
+ "description": "Docker host TLS certificate file",
3467
+ "name": "cert",
3520
3468
  "hasDynamicHelp": false,
3521
3469
  "multiple": false,
3522
3470
  "type": "option"
3523
3471
  },
3524
- "system-connection": {
3525
- "char": "c",
3526
- "description": "paths to local files to place into the 'system-connections' directory",
3527
- "name": "system-connection",
3528
- "required": false,
3472
+ "key": {
3473
+ "description": "Docker host TLS key file",
3474
+ "name": "key",
3529
3475
  "hasDynamicHelp": false,
3530
- "multiple": true,
3476
+ "multiple": false,
3531
3477
  "type": "option"
3532
3478
  }
3533
3479
  },
3534
3480
  "hasDynamicHelp": false,
3535
3481
  "hiddenAliases": [],
3536
- "id": "os:configure",
3482
+ "id": "preload",
3537
3483
  "pluginAlias": "balena-cli",
3538
3484
  "pluginName": "balena-cli",
3539
3485
  "pluginType": "core",
3540
3486
  "strict": true,
3541
3487
  "enableJsonFlag": false,
3542
3488
  "authenticated": true,
3489
+ "primary": true,
3543
3490
  "isESM": false,
3544
3491
  "relativePath": [
3545
3492
  "build",
3546
3493
  "commands",
3547
- "os",
3548
- "configure.js"
3494
+ "preload",
3495
+ "index.js"
3549
3496
  ]
3550
3497
  },
3551
- "os:download": {
3498
+ "push": {
3552
3499
  "aliases": [],
3553
3500
  "args": {
3554
- "type": {
3555
- "description": "the device type",
3556
- "name": "type",
3501
+ "fleetOrDevice": {
3502
+ "description": "fleet name or slug, or local device IP address or \".local\" hostname",
3503
+ "name": "fleetOrDevice",
3557
3504
  "required": true
3558
3505
  }
3559
3506
  },
3560
- "description": "Download an unconfigured OS image.\n\nDownload an unconfigured OS image for the specified device type.\nCheck available device types with 'balena device-type list'.\n\nNote: Currently this command only works with balenaCloud, not openBalena.\nIf using openBalena, please download the OS from: https://www.balena.io/os/\n\nThe '--version' option is used to select the balenaOS version. If omitted,\nthe latest released version is downloaded (and if only pre-release versions\nexist, the latest pre-release version is downloaded).\n\nUse '--type' to specify the type of OS download\nIf omitted, the default type for the specified device type-version combination is used.\nSome OS download types may not be available for certain device types and versions.\n\nUse '--version menu' or '--version menu-esr' to interactively select the\nOS version. The latter lists ESR versions which are only available for\ndownload on Production and Enterprise plans. See also:\nhttps://www.balena.io/docs/reference/OS/extended-support-release/\n\nDevelopment images can be selected by appending `.dev` to the version.",
3507
+ "description": "Build release images on balenaCloud servers or on a local mode device.\n\nBuild release images on balenaCloud servers or on a local mode device.\n\nWhen building on the balenaCloud servers, the given source directory will be\nsent to the remote server. This can be used as a drop-in replacement for the\n\"git push\" deployment method.\n\nWhen building on a local mode device, the given source directory will be\nbuilt on the device, and the resulting containers will be run on the device.\nLogs will be streamed back from the device as part of the same invocation.\nThe web dashboard can be used to switch a device to local mode:\nhttps://www.balena.io/docs/learn/develop/local-mode/\nNote that local mode requires a supervisor version of at least v7.21.0.\nThe logs from only a single service can be shown with the --service flag, and\nshowing only the system logs can be achieved with --system. Note that these\nflags can be used together.\n\nWhen pushing to a local device a live session will be started.\nThe project source folder is watched for filesystem events, and changes\nto files and folders are automatically synchronized to the running\ncontainers. The synchronization is only in one direction, from this machine to\nthe device, and changes made on the device itself may be overwritten.\nThis feature requires a device running supervisor version v9.7.0 or greater.\n\nREGISTRY SECRETS \nThe --registry-secrets option specifies a JSON or YAML file containing private\nDocker registry usernames and passwords to be used when pulling base images.\nSample registry-secrets YAML file:\n```\n\t'my-registry-server.com:25000':\n\t\tusername: ann\n\t\tpassword: hunter2\n\t'': # Use the empty string to refer to the Docker Hub\n\t\tusername: mike\n\t\tpassword: cze14\n\t'eu.gcr.io': # Google Container Registry\n\t\tusername: '_json_key'\n\t\tpassword: '{escaped contents of the GCR keyfile.json file}'\n```\nFor a sample project using registry secrets with the Google Container Registry,\ncheck: https://github.com/balena-io-examples/sample-gcr-registry-secrets\n\nIf the --registry-secrets option is not specified, and a secrets.yml or\nsecrets.json file exists in the balena directory (usually $HOME/.balena),\nthis file will be used instead.\n\nDOCKERIGNORE AND GITIGNORE FILES \nBy default, the balena CLI will use a single \".dockerignore\" file (if any) at\nthe project root (--source directory) in order to decide which source files to\nexclude from the \"build context\" (tar stream) sent to balenaCloud, Docker\ndaemon or balenaEngine. In a microservices (multicontainer) fleet, the\nsource directory is the directory that contains the \"docker-compose.yml\" file.\n\nThe --multi-dockerignore (-m) option may be used with microservices\n(multicontainer) fleets that define a docker-compose.yml file. When this\noption is used, each service subdirectory (defined by the `build` or\n`build.context` service properties in the docker-compose.yml file) is\nfiltered separately according to a .dockerignore file defined in the service\nsubdirectory. If no .dockerignore file exists in a service subdirectory, then\nonly the default .dockerignore patterns (see below) apply for that service\nsubdirectory.\n\nWhen the --multi-dockerignore (-m) option is used, the .dockerignore file (if\nany) defined at the overall project root will be used to filter files and\nsubdirectories other than service subdirectories. It will not have any effect\non service subdirectories, whether or not a service subdirectory defines its\nown .dockerignore file. Multiple .dockerignore files are not merged or added\ntogether, and cannot override or extend other files. This behavior maximizes\ncompatibility with the standard docker-compose tool, while still allowing a\nroot .dockerignore file (at the overall project root) to filter files and\nfolders that are outside service subdirectories.\n\nbalena CLI v11 also took .gitignore files into account. This behavior was\ndeprecated in CLI v12 and removed in CLI v13. Please use .dockerignore files\ninstead.\n\nDefault .dockerignore patterns \nA few default/hardcoded dockerignore patterns are \"merged\" (in memory) with the\npatterns found in the applicable .dockerignore files, in the following order:\n```\n **/.git\n < user's patterns from the applicable '.dockerignore' file, if any >\n !**/.balena\n !**/.resin\n !**/Dockerfile\n !**/Dockerfile.*\n !**/docker-compose.yml\n```\nThese patterns always apply, whether or not .dockerignore files exist in the\nproject. If necessary, the effect of the `**/.git` pattern may be modified by\nadding exception patterns to the applicable .dockerignore file(s), for example\n`!mysubmodule/.git`. For documentation on pattern format, see:\n- https://docs.docker.com/engine/reference/builder/#dockerignore-file\n- https://www.npmjs.com/package/@balena/dockerignore\n\nNote: the --service and --env flags must come after the fleetOrDevice\nparameter, as per examples.",
3561
3508
  "examples": [
3562
- "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img",
3563
- "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version 2.101.7",
3564
- "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version 2022.7.0",
3565
- "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version ^2.90.0",
3566
- "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version 2.60.1+rev1",
3567
- "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version 2.60.1+rev1.dev",
3568
- "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version 2021.10.2.prod",
3569
- "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version latest",
3570
- "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version menu",
3571
- "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version menu-esr",
3572
- "$ balena os download generic-amd64 -o ../foo/bar/generic-amd64.img --type installation-media"
3509
+ "$ balena push myFleet",
3510
+ "$ balena push myFleet --source <source directory>",
3511
+ "$ balena push myFleet -s <source directory>",
3512
+ "$ balena push myFleet --source <source directory> --note \"this is the note for this release\"",
3513
+ "$ balena push myFleet --release-tag key1 \"\" key2 \"value2 with spaces\"",
3514
+ "$ balena push myorg/myfleet",
3515
+ "",
3516
+ "$ balena push 10.0.0.1",
3517
+ "$ balena push 10.0.0.1 --source <source directory>",
3518
+ "$ balena push 10.0.0.1 --service my-service",
3519
+ "$ balena push 10.0.0.1 --env MY_ENV_VAR=value --env my-service:SERVICE_VAR=value",
3520
+ "$ balena push 10.0.0.1 --nolive",
3521
+ "",
3522
+ "$ balena push 23c73a1.local --system",
3523
+ "$ balena push 23c73a1.local --system --service my-service"
3573
3524
  ],
3574
3525
  "flags": {
3575
- "output": {
3576
- "char": "o",
3577
- "description": "output path",
3578
- "name": "output",
3579
- "required": true,
3526
+ "source": {
3527
+ "char": "s",
3528
+ "description": "Source directory to be sent to balenaCloud or balenaOS device\n(default: current working dir)",
3529
+ "name": "source",
3530
+ "default": ".",
3580
3531
  "hasDynamicHelp": false,
3581
3532
  "multiple": false,
3582
3533
  "type": "option"
3583
3534
  },
3584
- "version": {
3585
- "description": "version number (ESR or non-ESR versions),\nor semver range (non-ESR versions only),\nor 'latest' (excludes invalidated & pre-releases),\nor 'menu' (interactive menu, non-ESR versions),\nor 'menu-esr' (interactive menu, ESR versions)",
3586
- "name": "version",
3535
+ "emulated": {
3536
+ "char": "e",
3537
+ "description": "Don't use the faster, native balenaCloud ARM builders; force slower QEMU ARM\nemulation on Intel x86-64 builders. This flag is sometimes used to investigate\nsuspected issues with the balenaCloud backend.",
3538
+ "name": "emulated",
3539
+ "allowNo": false,
3540
+ "type": "boolean"
3541
+ },
3542
+ "dockerfile": {
3543
+ "description": "Alternative Dockerfile name/path, relative to the source folder",
3544
+ "name": "dockerfile",
3587
3545
  "hasDynamicHelp": false,
3588
3546
  "multiple": false,
3589
3547
  "type": "option"
3590
3548
  },
3591
- "type": {
3592
- "description": "'disk-image' (for flashing onto device system disk/storage)\nor 'installation-media' (for creating installation media to automatically erase, format, and install balenaOS on a device)",
3593
- "name": "type",
3549
+ "nocache": {
3550
+ "char": "c",
3551
+ "description": "Don't use cached layers of previously built images for this project. This\nensures that the latest base image and packages are pulled. Note that build\nlogs may still display the message _\"Pulling previous images for caching\npurposes\" (as the cloud builder needs previous images to compute delta\nupdates), but the logs will not display the \"Using cache\" lines for each\nbuild step of a Dockerfile.",
3552
+ "name": "nocache",
3553
+ "allowNo": false,
3554
+ "type": "boolean"
3555
+ },
3556
+ "pull": {
3557
+ "description": "When pushing to a local device, force the base images to be pulled again.\nCurrently this option is ignored when pushing to the balenaCloud builders.",
3558
+ "name": "pull",
3559
+ "allowNo": false,
3560
+ "type": "boolean"
3561
+ },
3562
+ "noparent-check": {
3563
+ "description": "Disable project validation check of 'docker-compose.yml' file in parent folder",
3564
+ "name": "noparent-check",
3565
+ "allowNo": false,
3566
+ "type": "boolean"
3567
+ },
3568
+ "registry-secrets": {
3569
+ "char": "R",
3570
+ "description": "Path to a local YAML or JSON file containing Docker registry passwords used\nto pull base images. Note that if registry-secrets are not provided on the\ncommand line, a secrets configuration file from the balena directory will be\nused (usually $HOME/.balena/secrets.yml|.json)",
3571
+ "name": "registry-secrets",
3594
3572
  "hasDynamicHelp": false,
3595
3573
  "multiple": false,
3596
- "options": [
3597
- "installation-media",
3598
- "disk-image"
3599
- ],
3600
3574
  "type": "option"
3601
- }
3602
- },
3603
- "hasDynamicHelp": false,
3604
- "hiddenAliases": [],
3605
- "id": "os:download",
3606
- "pluginAlias": "balena-cli",
3607
- "pluginName": "balena-cli",
3608
- "pluginType": "core",
3609
- "strict": true,
3610
- "enableJsonFlag": false,
3611
- "isESM": false,
3612
- "relativePath": [
3613
- "build",
3614
- "commands",
3615
- "os",
3616
- "download.js"
3617
- ]
3618
- },
3619
- "os:initialize": {
3620
- "aliases": [],
3621
- "args": {
3622
- "image": {
3623
- "description": "path to OS image",
3624
- "name": "image",
3625
- "required": true
3626
- }
3627
- },
3628
- "description": "Initialize an os image for a device.\n\n\t\tInitialize an os image for a device with a previously\n\t\tconfigured operating system image and flash the\n\t\tan external storage drive or the device's storage\n\t\tmedium depending on the device type.\n\t\t\n\nNote: Initializing the device may ask for administrative permissions\nbecause we need to access the raw devices directly.",
3629
- "examples": [
3630
- "$ balena os initialize ../path/rpi.img --type raspberry-pi"
3631
- ],
3632
- "flags": {
3633
- "type": {
3634
- "char": "t",
3635
- "description": "device type (Check available types with `balena device-type list`)",
3636
- "name": "type",
3637
- "required": true,
3575
+ },
3576
+ "nolive": {
3577
+ "description": "Don't run a live session on this push. The filesystem will not be monitored,\nand changes will not be synchronized to any running containers. Note that both\nthis flag and --detached are required to cause the process to end once the\ninitial build has completed.",
3578
+ "name": "nolive",
3579
+ "allowNo": false,
3580
+ "type": "boolean"
3581
+ },
3582
+ "detached": {
3583
+ "char": "d",
3584
+ "description": "When pushing to the cloud, this option will cause the build to start, then\nreturn execution back to the shell, with the status and release ID (if\napplicable). When pushing to a local mode device, this option will cause\nthe command to not tail logs when the build has completed.",
3585
+ "name": "detached",
3586
+ "allowNo": false,
3587
+ "type": "boolean"
3588
+ },
3589
+ "service": {
3590
+ "description": "Reject logs not originating from this service.\nThis can be used in combination with --system and other --service flags.\nOnly valid when pushing to a local mode device.",
3591
+ "name": "service",
3638
3592
  "hasDynamicHelp": false,
3639
- "multiple": false,
3593
+ "multiple": true,
3640
3594
  "type": "option"
3641
3595
  },
3642
- "drive": {
3643
- "char": "d",
3644
- "description": "the drive to write the image to, eg. `/dev/sdb` or `/dev/mmcblk0`.\nCareful with this as you can erase your hard drive.\nCheck `balena util available-drives` for available options.",
3645
- "name": "drive",
3596
+ "system": {
3597
+ "description": "Only show system logs. This can be used in combination with --service.\nOnly valid when pushing to a local mode device.",
3598
+ "name": "system",
3599
+ "allowNo": false,
3600
+ "type": "boolean"
3601
+ },
3602
+ "env": {
3603
+ "description": "When performing a push to device, run the built containers with environment\nvariables provided with this argument. Environment variables can be applied\nto individual services by adding their service name before the argument,\nseparated by a colon, e.g:\n\t--env main:MY_ENV=value\nNote that if the service name cannot be found in the composition, the entire\nleft hand side of the = character will be treated as the variable name.",
3604
+ "name": "env",
3646
3605
  "hasDynamicHelp": false,
3647
- "multiple": false,
3606
+ "multiple": true,
3648
3607
  "type": "option"
3649
3608
  },
3650
- "yes": {
3651
- "char": "y",
3652
- "description": "answer \"yes\" to all questions (non interactive use)",
3653
- "name": "yes",
3609
+ "noconvert-eol": {
3610
+ "description": "Don't convert line endings from CRLF (Windows format) to LF (Unix format).",
3611
+ "name": "noconvert-eol",
3654
3612
  "allowNo": false,
3655
3613
  "type": "boolean"
3656
- }
3657
- },
3658
- "hasDynamicHelp": false,
3659
- "hiddenAliases": [],
3660
- "id": "os:initialize",
3661
- "pluginAlias": "balena-cli",
3662
- "pluginName": "balena-cli",
3663
- "pluginType": "core",
3664
- "strict": true,
3665
- "enableJsonFlag": false,
3666
- "authenticated": true,
3667
- "isESM": false,
3668
- "relativePath": [
3669
- "build",
3670
- "commands",
3671
- "os",
3672
- "initialize.js"
3673
- ]
3674
- },
3675
- "os:versions": {
3676
- "aliases": [],
3677
- "args": {
3678
- "type": {
3679
- "description": "device type",
3680
- "name": "type",
3681
- "required": true
3682
- }
3683
- },
3684
- "description": "Show available balenaOS versions for the given device type.\n\nShow the available balenaOS versions for the given device type.\nCheck available types with `balena device-type list`.\n\nbalenaOS ESR versions can be listed with the '--esr' option. See also:\nhttps://www.balena.io/docs/reference/OS/extended-support-release/",
3685
- "examples": [
3686
- "$ balena os versions raspberrypi3"
3687
- ],
3688
- "flags": {
3689
- "esr": {
3690
- "description": "select balenaOS ESR versions",
3691
- "name": "esr",
3614
+ },
3615
+ "multi-dockerignore": {
3616
+ "char": "m",
3617
+ "description": "Have each service use its own .dockerignore file. See \"balena help push\".",
3618
+ "name": "multi-dockerignore",
3692
3619
  "allowNo": false,
3693
3620
  "type": "boolean"
3694
3621
  },
3695
- "include-draft": {
3696
- "description": "include pre-release balenaOS versions",
3697
- "name": "include-draft",
3622
+ "release-tag": {
3623
+ "description": "Set release tags if the image build is successful (balenaCloud only). Multiple\narguments may be provided, alternating tag keys and values (see examples).\nHint: Empty values may be specified with \"\" (bash, cmd.exe) or '\"\"' (PowerShell).",
3624
+ "exclusive": [
3625
+ "detached"
3626
+ ],
3627
+ "name": "release-tag",
3628
+ "hasDynamicHelp": false,
3629
+ "multiple": true,
3630
+ "type": "option"
3631
+ },
3632
+ "draft": {
3633
+ "description": "Instruct the builder to create the release as a draft. Draft releases are ignored\nby the 'track latest' release policy but can be used through release pinning.\nDraft releases can be marked as final through the API. Releases are created\nas final by default unless this option is given.",
3634
+ "name": "draft",
3698
3635
  "allowNo": false,
3699
3636
  "type": "boolean"
3637
+ },
3638
+ "note": {
3639
+ "description": "The notes for this release",
3640
+ "name": "note",
3641
+ "hasDynamicHelp": false,
3642
+ "multiple": false,
3643
+ "type": "option"
3700
3644
  }
3701
3645
  },
3702
3646
  "hasDynamicHelp": false,
3703
3647
  "hiddenAliases": [],
3704
- "id": "os:versions",
3648
+ "id": "push",
3705
3649
  "pluginAlias": "balena-cli",
3706
3650
  "pluginName": "balena-cli",
3707
3651
  "pluginType": "core",
3708
3652
  "strict": true,
3709
3653
  "enableJsonFlag": false,
3654
+ "primary": true,
3710
3655
  "isESM": false,
3711
3656
  "relativePath": [
3712
3657
  "build",
3713
3658
  "commands",
3714
- "os",
3715
- "versions.js"
3659
+ "push",
3660
+ "index.js"
3716
3661
  ]
3717
3662
  },
3718
- "preload": {
3663
+ "release:finalize": {
3719
3664
  "aliases": [],
3720
3665
  "args": {
3721
- "image": {
3722
- "description": "the image file path",
3723
- "name": "image",
3666
+ "commitOrId": {
3667
+ "description": "the commit or ID of the release to finalize",
3668
+ "name": "commitOrId",
3724
3669
  "required": true
3725
3670
  }
3726
3671
  },
3727
- "description": "Preload a release on a disk image (or Edison zip archive).\n\nPreload a release (service images/containers) from a balena fleet, and optionally\na balenaOS splash screen, in a previously downloaded '.img' balenaOS image file\nin the local disk (a zip file is only accepted for the Intel Edison device type).\nAfter preloading, the balenaOS image file can be flashed to a device's SD card.\nWhen the device boots, it will not need to download the release, as it was\npreloaded. This is usually combined with release pinning\n(https://www.balena.io/docs/learn/deploy/release-strategy/release-policy/)\nto avoid the device downloading a newer release straight away, if available.\nCheck also the Preloading and Preregistering section of the balena CLI's advanced\nmasterclass document:\nhttps://www.balena.io/docs/learn/more/masterclasses/advanced-cli/#5-preloading-and-preregistering\n\nFleets may be specified by fleet name or slug. Fleet slugs are\nthe recommended option, as they are unique and unambiguous. Slugs can be\nlisted with the `balena fleet list` command. Note that slugs may change if the\nfleet is renamed. Fleet names are not unique and may result in \"Fleet is\nambiguous\" errors at any time (even if it \"used to work in the past\"), for\nexample if the name clashes with a newly created public fleet, or with fleets\nfrom other balena accounts that you may be invited to join under any role.\nFor this reason, fleet names are especially discouraged in scripts (e.g. CI\nenvironments).\n\nNote that the this command requires Docker to be installed, as further detailed\nin the balena CLI's installation instructions:\nhttps://github.com/balena-io/balena-cli/blob/master/INSTALL.md\nThe `--dockerHost` and `--dockerPort` flags allow a remote Docker engine to\nbe used, however the image file must be accessible to the remote Docker engine\non the same path given on the command line. This is because Docker's bind mount\nfeature is used to \"share\" the image with a container that performs the preload.",
3672
+ "description": "Finalize a release.\n\nFinalize a release. Releases can be \"draft\" or \"final\", and this command\nchanges a draft release into a final release. Draft releases can be created\nwith the `--draft` option of the `balena build` or `balena deploy`\ncommands.\n\nDraft releases are not automatically deployed to devices tracking the latest\nrelease. For a draft release to be deployed to a device, the device should be\nexplicity pinned to that release. Conversely, final releases may trigger immediate\ndeployment to unpinned devices (subject to a device's polling period) and, for\nthis reason, final releases cannot be changed back to draft status.",
3728
3673
  "examples": [
3729
- "$ balena preload balena.img --fleet MyFleet --commit e1f2592fc6ee949e68756d4f4a48e49bff8d72a0",
3730
- "$ balena preload balena.img --fleet myorg/myfleet --splash-image image.png",
3731
- "$ balena preload balena.img"
3674
+ "$ balena release finalize a777f7345fe3d655c1c981aa642e5555",
3675
+ "$ balena release finalize 1234567"
3732
3676
  ],
3733
- "flags": {
3734
- "fleet": {
3735
- "char": "f",
3736
- "description": "fleet name or slug (preferred)",
3737
- "name": "fleet",
3738
- "hasDynamicHelp": false,
3739
- "multiple": false,
3740
- "type": "option"
3741
- },
3742
- "commit": {
3743
- "char": "c",
3744
- "description": "The commit hash of the release to preload. Use \"current\" to specify the current\nrelease (ignored if no appId is given). The current release is usually also the\nlatest, but can be pinned to a specific release. See:\nhttps://www.balena.io/docs/learn/deploy/release-strategy/release-policy/\nhttps://www.balena.io/docs/learn/more/masterclasses/fleet-management/#63-pin-using-the-api\nhttps://github.com/balena-io-examples/staged-releases",
3745
- "name": "commit",
3746
- "hasDynamicHelp": false,
3747
- "multiple": false,
3748
- "type": "option"
3749
- },
3750
- "splash-image": {
3751
- "char": "s",
3752
- "description": "path to a png image to replace the splash screen",
3753
- "name": "splash-image",
3754
- "hasDynamicHelp": false,
3755
- "multiple": false,
3756
- "type": "option"
3757
- },
3758
- "dont-check-arch": {
3759
- "description": "disable architecture compatibility check between image and fleet",
3760
- "name": "dont-check-arch",
3761
- "allowNo": false,
3762
- "type": "boolean"
3763
- },
3764
- "pin-device-to-release": {
3765
- "char": "p",
3766
- "description": "pin the preloaded device to the preloaded release on provision",
3767
- "name": "pin-device-to-release",
3768
- "allowNo": true,
3769
- "type": "boolean"
3770
- },
3771
- "additional-space": {
3772
- "description": "expand the image by this amount of bytes instead of automatically estimating the required amount",
3773
- "name": "additional-space",
3774
- "hasDynamicHelp": false,
3775
- "multiple": false,
3776
- "type": "option"
3777
- },
3778
- "add-certificate": {
3779
- "description": "Add the given certificate (in PEM format) to /etc/ssl/certs in the preloading container.\nThe file name must end with '.crt' and must not be already contained in the preloader's\n/etc/ssl/certs folder.\nCan be repeated to add multiple certificates.",
3780
- "name": "add-certificate",
3781
- "hasDynamicHelp": false,
3782
- "multiple": true,
3783
- "type": "option"
3784
- },
3785
- "docker": {
3786
- "char": "P",
3787
- "description": "Path to a local docker socket (e.g. /var/run/docker.sock)",
3788
- "name": "docker",
3789
- "hasDynamicHelp": false,
3790
- "multiple": false,
3791
- "type": "option"
3792
- },
3793
- "dockerHost": {
3794
- "char": "h",
3795
- "description": "Docker daemon hostname or IP address (dev machine or balena device) ",
3796
- "name": "dockerHost",
3797
- "hasDynamicHelp": false,
3798
- "multiple": false,
3799
- "type": "option"
3800
- },
3801
- "dockerPort": {
3802
- "description": "Docker daemon TCP port number (hint: 2375 for balena devices)",
3803
- "name": "dockerPort",
3804
- "hasDynamicHelp": false,
3805
- "multiple": false,
3806
- "type": "option"
3807
- },
3808
- "ca": {
3809
- "description": "Docker host TLS certificate authority file",
3810
- "name": "ca",
3811
- "hasDynamicHelp": false,
3812
- "multiple": false,
3813
- "type": "option"
3814
- },
3815
- "cert": {
3816
- "description": "Docker host TLS certificate file",
3817
- "name": "cert",
3818
- "hasDynamicHelp": false,
3819
- "multiple": false,
3820
- "type": "option"
3821
- },
3822
- "key": {
3823
- "description": "Docker host TLS key file",
3824
- "name": "key",
3825
- "hasDynamicHelp": false,
3826
- "multiple": false,
3827
- "type": "option"
3828
- }
3829
- },
3677
+ "flags": {},
3830
3678
  "hasDynamicHelp": false,
3831
3679
  "hiddenAliases": [],
3832
- "id": "preload",
3680
+ "id": "release:finalize",
3833
3681
  "pluginAlias": "balena-cli",
3834
3682
  "pluginName": "balena-cli",
3835
3683
  "pluginType": "core",
3836
3684
  "strict": true,
3837
3685
  "enableJsonFlag": false,
3838
3686
  "authenticated": true,
3839
- "primary": true,
3840
3687
  "isESM": false,
3841
3688
  "relativePath": [
3842
3689
  "build",
3843
3690
  "commands",
3844
- "preload",
3845
- "index.js"
3691
+ "release",
3692
+ "finalize.js"
3846
3693
  ]
3847
3694
  },
3848
- "push": {
3695
+ "release": {
3849
3696
  "aliases": [],
3850
3697
  "args": {
3851
- "fleetOrDevice": {
3852
- "description": "fleet name or slug, or local device IP address or \".local\" hostname",
3853
- "name": "fleetOrDevice",
3698
+ "commitOrId": {
3699
+ "description": "the commit or ID of the release to get information",
3700
+ "name": "commitOrId",
3854
3701
  "required": true
3855
3702
  }
3856
3703
  },
3857
- "description": "Build release images on balenaCloud servers or on a local mode device.\n\nBuild release images on balenaCloud servers or on a local mode device.\n\nWhen building on the balenaCloud servers, the given source directory will be\nsent to the remote server. This can be used as a drop-in replacement for the\n\"git push\" deployment method.\n\nWhen building on a local mode device, the given source directory will be\nbuilt on the device, and the resulting containers will be run on the device.\nLogs will be streamed back from the device as part of the same invocation.\nThe web dashboard can be used to switch a device to local mode:\nhttps://www.balena.io/docs/learn/develop/local-mode/\nNote that local mode requires a supervisor version of at least v7.21.0.\nThe logs from only a single service can be shown with the --service flag, and\nshowing only the system logs can be achieved with --system. Note that these\nflags can be used together.\n\nWhen pushing to a local device a live session will be started.\nThe project source folder is watched for filesystem events, and changes\nto files and folders are automatically synchronized to the running\ncontainers. The synchronization is only in one direction, from this machine to\nthe device, and changes made on the device itself may be overwritten.\nThis feature requires a device running supervisor version v9.7.0 or greater.\n\nREGISTRY SECRETS \nThe --registry-secrets option specifies a JSON or YAML file containing private\nDocker registry usernames and passwords to be used when pulling base images.\nSample registry-secrets YAML file:\n```\n\t'my-registry-server.com:25000':\n\t\tusername: ann\n\t\tpassword: hunter2\n\t'': # Use the empty string to refer to the Docker Hub\n\t\tusername: mike\n\t\tpassword: cze14\n\t'eu.gcr.io': # Google Container Registry\n\t\tusername: '_json_key'\n\t\tpassword: '{escaped contents of the GCR keyfile.json file}'\n```\nFor a sample project using registry secrets with the Google Container Registry,\ncheck: https://github.com/balena-io-examples/sample-gcr-registry-secrets\n\nIf the --registry-secrets option is not specified, and a secrets.yml or\nsecrets.json file exists in the balena directory (usually $HOME/.balena),\nthis file will be used instead.\n\nDOCKERIGNORE AND GITIGNORE FILES \nBy default, the balena CLI will use a single \".dockerignore\" file (if any) at\nthe project root (--source directory) in order to decide which source files to\nexclude from the \"build context\" (tar stream) sent to balenaCloud, Docker\ndaemon or balenaEngine. In a microservices (multicontainer) fleet, the\nsource directory is the directory that contains the \"docker-compose.yml\" file.\n\nThe --multi-dockerignore (-m) option may be used with microservices\n(multicontainer) fleets that define a docker-compose.yml file. When this\noption is used, each service subdirectory (defined by the `build` or\n`build.context` service properties in the docker-compose.yml file) is\nfiltered separately according to a .dockerignore file defined in the service\nsubdirectory. If no .dockerignore file exists in a service subdirectory, then\nonly the default .dockerignore patterns (see below) apply for that service\nsubdirectory.\n\nWhen the --multi-dockerignore (-m) option is used, the .dockerignore file (if\nany) defined at the overall project root will be used to filter files and\nsubdirectories other than service subdirectories. It will not have any effect\non service subdirectories, whether or not a service subdirectory defines its\nown .dockerignore file. Multiple .dockerignore files are not merged or added\ntogether, and cannot override or extend other files. This behavior maximizes\ncompatibility with the standard docker-compose tool, while still allowing a\nroot .dockerignore file (at the overall project root) to filter files and\nfolders that are outside service subdirectories.\n\nbalena CLI v11 also took .gitignore files into account. This behavior was\ndeprecated in CLI v12 and removed in CLI v13. Please use .dockerignore files\ninstead.\n\nDefault .dockerignore patterns \nA few default/hardcoded dockerignore patterns are \"merged\" (in memory) with the\npatterns found in the applicable .dockerignore files, in the following order:\n```\n **/.git\n < user's patterns from the applicable '.dockerignore' file, if any >\n !**/.balena\n !**/.resin\n !**/Dockerfile\n !**/Dockerfile.*\n !**/docker-compose.yml\n```\nThese patterns always apply, whether or not .dockerignore files exist in the\nproject. If necessary, the effect of the `**/.git` pattern may be modified by\nadding exception patterns to the applicable .dockerignore file(s), for example\n`!mysubmodule/.git`. For documentation on pattern format, see:\n- https://docs.docker.com/engine/reference/builder/#dockerignore-file\n- https://www.npmjs.com/package/@balena/dockerignore\n\nNote: the --service and --env flags must come after the fleetOrDevice\nparameter, as per examples.",
3704
+ "description": "Get info for a release.",
3858
3705
  "examples": [
3859
- "$ balena push myFleet",
3860
- "$ balena push myFleet --source <source directory>",
3861
- "$ balena push myFleet -s <source directory>",
3862
- "$ balena push myFleet --source <source directory> --note \"this is the note for this release\"",
3863
- "$ balena push myFleet --release-tag key1 \"\" key2 \"value2 with spaces\"",
3864
- "$ balena push myorg/myfleet",
3865
- "",
3866
- "$ balena push 10.0.0.1",
3867
- "$ balena push 10.0.0.1 --source <source directory>",
3868
- "$ balena push 10.0.0.1 --service my-service",
3869
- "$ balena push 10.0.0.1 --env MY_ENV_VAR=value --env my-service:SERVICE_VAR=value",
3870
- "$ balena push 10.0.0.1 --nolive",
3871
- "",
3872
- "$ balena push 23c73a1.local --system",
3873
- "$ balena push 23c73a1.local --system --service my-service"
3706
+ "$ balena release a777f7345fe3d655c1c981aa642e5555",
3707
+ "$ balena release 1234567"
3874
3708
  ],
3875
3709
  "flags": {
3876
- "source": {
3877
- "char": "s",
3878
- "description": "Source directory to be sent to balenaCloud or balenaOS device\n(default: current working dir)",
3879
- "name": "source",
3880
- "default": ".",
3881
- "hasDynamicHelp": false,
3882
- "multiple": false,
3883
- "type": "option"
3884
- },
3885
- "emulated": {
3886
- "char": "e",
3887
- "description": "Don't use the faster, native balenaCloud ARM builders; force slower QEMU ARM\nemulation on Intel x86-64 builders. This flag is sometimes used to investigate\nsuspected issues with the balenaCloud backend.",
3888
- "name": "emulated",
3710
+ "json": {
3711
+ "description": "Format output as json.",
3712
+ "helpGroup": "GLOBAL",
3713
+ "name": "json",
3889
3714
  "allowNo": false,
3890
3715
  "type": "boolean"
3891
3716
  },
3892
- "dockerfile": {
3893
- "description": "Alternative Dockerfile name/path, relative to the source folder",
3894
- "name": "dockerfile",
3895
- "hasDynamicHelp": false,
3896
- "multiple": false,
3897
- "type": "option"
3898
- },
3899
- "nocache": {
3717
+ "composition": {
3900
3718
  "char": "c",
3901
- "description": "Don't use cached layers of previously built images for this project. This\nensures that the latest base image and packages are pulled. Note that build\nlogs may still display the message _\"Pulling previous images for caching\npurposes\" (as the cloud builder needs previous images to compute delta\nupdates), but the logs will not display the \"Using cache\" lines for each\nbuild step of a Dockerfile.",
3902
- "name": "nocache",
3903
- "allowNo": false,
3904
- "type": "boolean"
3905
- },
3906
- "pull": {
3907
- "description": "When pushing to a local device, force the base images to be pulled again.\nCurrently this option is ignored when pushing to the balenaCloud builders.",
3908
- "name": "pull",
3909
- "allowNo": false,
3910
- "type": "boolean"
3911
- },
3912
- "noparent-check": {
3913
- "description": "Disable project validation check of 'docker-compose.yml' file in parent folder",
3914
- "name": "noparent-check",
3915
- "allowNo": false,
3916
- "type": "boolean"
3917
- },
3918
- "registry-secrets": {
3919
- "char": "R",
3920
- "description": "Path to a local YAML or JSON file containing Docker registry passwords used\nto pull base images. Note that if registry-secrets are not provided on the\ncommand line, a secrets configuration file from the balena directory will be\nused (usually $HOME/.balena/secrets.yml|.json)",
3921
- "name": "registry-secrets",
3922
- "hasDynamicHelp": false,
3923
- "multiple": false,
3924
- "type": "option"
3925
- },
3926
- "nolive": {
3927
- "description": "Don't run a live session on this push. The filesystem will not be monitored,\nand changes will not be synchronized to any running containers. Note that both\nthis flag and --detached are required to cause the process to end once the\ninitial build has completed.",
3928
- "name": "nolive",
3929
- "allowNo": false,
3930
- "type": "boolean"
3931
- },
3932
- "detached": {
3933
- "char": "d",
3934
- "description": "When pushing to the cloud, this option will cause the build to start, then\nreturn execution back to the shell, with the status and release ID (if\napplicable). When pushing to a local mode device, this option will cause\nthe command to not tail logs when the build has completed.",
3935
- "name": "detached",
3936
- "allowNo": false,
3937
- "type": "boolean"
3938
- },
3939
- "service": {
3940
- "description": "Reject logs not originating from this service.\nThis can be used in combination with --system and other --service flags.\nOnly valid when pushing to a local mode device.",
3941
- "name": "service",
3942
- "hasDynamicHelp": false,
3943
- "multiple": true,
3944
- "type": "option"
3945
- },
3946
- "system": {
3947
- "description": "Only show system logs. This can be used in combination with --service.\nOnly valid when pushing to a local mode device.",
3948
- "name": "system",
3949
- "allowNo": false,
3950
- "type": "boolean"
3951
- },
3952
- "env": {
3953
- "description": "When performing a push to device, run the built containers with environment\nvariables provided with this argument. Environment variables can be applied\nto individual services by adding their service name before the argument,\nseparated by a colon, e.g:\n\t--env main:MY_ENV=value\nNote that if the service name cannot be found in the composition, the entire\nleft hand side of the = character will be treated as the variable name.",
3954
- "name": "env",
3955
- "hasDynamicHelp": false,
3956
- "multiple": true,
3957
- "type": "option"
3958
- },
3959
- "noconvert-eol": {
3960
- "description": "Don't convert line endings from CRLF (Windows format) to LF (Unix format).",
3961
- "name": "noconvert-eol",
3962
- "allowNo": false,
3963
- "type": "boolean"
3964
- },
3965
- "multi-dockerignore": {
3966
- "char": "m",
3967
- "description": "Have each service use its own .dockerignore file. See \"balena help push\".",
3968
- "name": "multi-dockerignore",
3969
- "allowNo": false,
3970
- "type": "boolean"
3971
- },
3972
- "release-tag": {
3973
- "description": "Set release tags if the image build is successful (balenaCloud only). Multiple\narguments may be provided, alternating tag keys and values (see examples).\nHint: Empty values may be specified with \"\" (bash, cmd.exe) or '\"\"' (PowerShell).",
3974
- "exclusive": [
3975
- "detached"
3976
- ],
3977
- "name": "release-tag",
3978
- "hasDynamicHelp": false,
3979
- "multiple": true,
3980
- "type": "option"
3981
- },
3982
- "draft": {
3983
- "description": "Instruct the builder to create the release as a draft. Draft releases are ignored\nby the 'track latest' release policy but can be used through release pinning.\nDraft releases can be marked as final through the API. Releases are created\nas final by default unless this option is given.",
3984
- "name": "draft",
3719
+ "description": "Return the release composition",
3720
+ "name": "composition",
3985
3721
  "allowNo": false,
3986
3722
  "type": "boolean"
3987
- },
3988
- "note": {
3989
- "description": "The notes for this release",
3990
- "name": "note",
3991
- "hasDynamicHelp": false,
3992
- "multiple": false,
3993
- "type": "option"
3994
3723
  }
3995
3724
  },
3996
3725
  "hasDynamicHelp": false,
3997
3726
  "hiddenAliases": [],
3998
- "id": "push",
3727
+ "id": "release",
3999
3728
  "pluginAlias": "balena-cli",
4000
3729
  "pluginName": "balena-cli",
4001
3730
  "pluginType": "core",
4002
3731
  "strict": true,
4003
- "enableJsonFlag": false,
4004
- "primary": true,
3732
+ "enableJsonFlag": true,
3733
+ "authenticated": true,
4005
3734
  "isESM": false,
4006
3735
  "relativePath": [
4007
3736
  "build",
4008
3737
  "commands",
4009
- "push",
3738
+ "release",
4010
3739
  "index.js"
4011
3740
  ]
4012
3741
  },
3742
+ "release:invalidate": {
3743
+ "aliases": [],
3744
+ "args": {
3745
+ "commitOrId": {
3746
+ "description": "the commit or ID of the release to invalidate",
3747
+ "name": "commitOrId",
3748
+ "required": true
3749
+ }
3750
+ },
3751
+ "description": "Invalidate a release.\n\nInvalidate a release.\n\nInvalid releases are not automatically deployed to devices tracking the latest\nrelease. For an invalid release to be deployed to a device, the device should be\nexplicity pinned to that release.",
3752
+ "examples": [
3753
+ "$ balena release invalidate a777f7345fe3d655c1c981aa642e5555",
3754
+ "$ balena release invalidate 1234567"
3755
+ ],
3756
+ "flags": {},
3757
+ "hasDynamicHelp": false,
3758
+ "hiddenAliases": [],
3759
+ "id": "release:invalidate",
3760
+ "pluginAlias": "balena-cli",
3761
+ "pluginName": "balena-cli",
3762
+ "pluginType": "core",
3763
+ "strict": true,
3764
+ "enableJsonFlag": false,
3765
+ "authenticated": true,
3766
+ "isESM": false,
3767
+ "relativePath": [
3768
+ "build",
3769
+ "commands",
3770
+ "release",
3771
+ "invalidate.js"
3772
+ ]
3773
+ },
3774
+ "release:list": {
3775
+ "aliases": [],
3776
+ "args": {
3777
+ "fleet": {
3778
+ "description": "fleet name or slug (preferred)",
3779
+ "name": "fleet",
3780
+ "required": true
3781
+ }
3782
+ },
3783
+ "description": "List all releases of a fleet.\n\nList all releases of the given fleet.\n\nFleets may be specified by fleet name or slug. Slugs are recommended because\nthey are unique and unambiguous. Slugs can be listed with the `balena fleet list`\ncommand. Note that slugs may change if the fleet is renamed. Fleet names are\nnot unique and may result in \"Fleet is ambiguous\" errors at any time (even if\n\"it used to work in the past\"), for example if the name clashes with a newly\ncreated public/open fleet, or with fleets from other balena accounts that you\nmay be invited to join under any role. For this reason, fleet names are\nespecially discouraged in scripts (e.g. CI environments).",
3784
+ "examples": [
3785
+ "$ balena release list myorg/myfleet"
3786
+ ],
3787
+ "flags": {
3788
+ "json": {
3789
+ "description": "Format output as json.",
3790
+ "helpGroup": "GLOBAL",
3791
+ "name": "json",
3792
+ "allowNo": false,
3793
+ "type": "boolean"
3794
+ }
3795
+ },
3796
+ "hasDynamicHelp": false,
3797
+ "hiddenAliases": [],
3798
+ "id": "release:list",
3799
+ "pluginAlias": "balena-cli",
3800
+ "pluginName": "balena-cli",
3801
+ "pluginType": "core",
3802
+ "strict": true,
3803
+ "enableJsonFlag": true,
3804
+ "authenticated": true,
3805
+ "isESM": false,
3806
+ "relativePath": [
3807
+ "build",
3808
+ "commands",
3809
+ "release",
3810
+ "list.js"
3811
+ ]
3812
+ },
3813
+ "release:validate": {
3814
+ "aliases": [],
3815
+ "args": {
3816
+ "commitOrId": {
3817
+ "description": "the commit or ID of the release to validate",
3818
+ "name": "commitOrId",
3819
+ "required": true
3820
+ }
3821
+ },
3822
+ "description": "Validate a release.\n\nValidate a release.\n\nValid releases are automatically deployed to devices tracking the latest\nrelease if they are finalized.",
3823
+ "examples": [
3824
+ "$ balena release validate a777f7345fe3d655c1c981aa642e5555",
3825
+ "$ balena release validate 1234567"
3826
+ ],
3827
+ "flags": {},
3828
+ "hasDynamicHelp": false,
3829
+ "hiddenAliases": [],
3830
+ "id": "release:validate",
3831
+ "pluginAlias": "balena-cli",
3832
+ "pluginName": "balena-cli",
3833
+ "pluginType": "core",
3834
+ "strict": true,
3835
+ "enableJsonFlag": false,
3836
+ "authenticated": true,
3837
+ "isESM": false,
3838
+ "relativePath": [
3839
+ "build",
3840
+ "commands",
3841
+ "release",
3842
+ "validate.js"
3843
+ ]
3844
+ },
4013
3845
  "release-asset:delete": {
4014
3846
  "aliases": [],
4015
3847
  "args": {
@@ -4697,7 +4529,190 @@
4697
4529
  "flags": {},
4698
4530
  "hasDynamicHelp": false,
4699
4531
  "hiddenAliases": [],
4700
- "id": "whoami",
4532
+ "id": "whoami",
4533
+ "pluginAlias": "balena-cli",
4534
+ "pluginName": "balena-cli",
4535
+ "pluginType": "core",
4536
+ "strict": true,
4537
+ "enableJsonFlag": false,
4538
+ "authenticated": true,
4539
+ "isESM": false,
4540
+ "relativePath": [
4541
+ "build",
4542
+ "commands",
4543
+ "whoami",
4544
+ "index.js"
4545
+ ]
4546
+ },
4547
+ "os:configure": {
4548
+ "aliases": [],
4549
+ "args": {
4550
+ "image": {
4551
+ "description": "path to a balenaOS image file, e.g. \"rpi3.img\"",
4552
+ "name": "image",
4553
+ "required": true
4554
+ }
4555
+ },
4556
+ "description": "Configure a previously downloaded balenaOS image.\n\nConfigure a previously downloaded balenaOS image for a specific device type\nor fleet.\n\nConfiguration settings such as WiFi authentication will be taken from the\nfollowing sources, in precedence order:\n1. Command-line options like `--config-wifi-ssid`\n2. A given `config.json` file specified with the `--config` option.\n3. User input through interactive prompts (text menus).\n\nThe --device-type option is used to override the fleet's default device type,\nin case of a fleet with mixed device types.\n\nThe '--dev' option is used to configure balenaOS to operate in development mode,\nallowing unauthenticated root ssh access and exposing network ports such as\nbalenaEngine's 2375 (unencrypted). This option causes `\"developmentMode\": true`\nto be inserted in the 'config.json' file in the image's boot partition. Development\nmode (as a configurable option) is applicable to balenaOS releases from early\n2022. Older releases have separate development and production balenaOS images\nthat cannot be reconfigured through 'config.json' or the '--dev' option. Do not\nconfuse the balenaOS \"development mode\" with a device's \"local mode\", the latter\nbeing a supervisor feature that allows the \"balena push\" command to push a user's\napplication directly to a device in the local network.\n\nThe '--secureBoot' option is used to configure a balenaOS installer image to opt-in\nsecure boot and disk encryption.\n\nThe --system-connection (-c) option is used to inject NetworkManager connection\nprofiles for additional network interfaces, such as cellular/GSM or additional\nWiFi or ethernet connections. This option may be passed multiple times in case there\nare multiple files to inject. See connection profile examples and reference at:\nhttps://www.balena.io/docs/reference/OS/network/2.x/\nhttps://developer.gnome.org/NetworkManager/stable/ref-settings.html\n\nFleets may be specified by fleet name or slug. Fleet slugs are\nthe recommended option, as they are unique and unambiguous. Slugs can be\nlisted with the `balena fleet list` command. Note that slugs may change if the\nfleet is renamed. Fleet names are not unique and may result in \"Fleet is\nambiguous\" errors at any time (even if it \"used to work in the past\"), for\nexample if the name clashes with a newly created public fleet, or with fleets\nfrom other balena accounts that you may be invited to join under any role.\nFor this reason, fleet names are especially discouraged in scripts (e.g. CI\nenvironments).",
4557
+ "examples": [
4558
+ "$ balena os configure ../path/rpi3.img --device 7cf02a6",
4559
+ "$ balena os configure ../path/rpi3.img --fleet myorg/myfleet",
4560
+ "$ balena os configure ../path/rpi3.img -f myorg/myfleet --device-type raspberrypi3",
4561
+ "$ balena os configure ../path/rpi3.img --config myWifiConfig.json"
4562
+ ],
4563
+ "flags": {
4564
+ "fleet": {
4565
+ "char": "f",
4566
+ "description": "fleet name or slug (preferred)",
4567
+ "exclusive": [
4568
+ "device",
4569
+ "config"
4570
+ ],
4571
+ "name": "fleet",
4572
+ "hasDynamicHelp": false,
4573
+ "multiple": false,
4574
+ "type": "option"
4575
+ },
4576
+ "device": {
4577
+ "char": "d",
4578
+ "description": "device UUID",
4579
+ "exclusive": [
4580
+ "fleet",
4581
+ "device-type",
4582
+ "config",
4583
+ "provisioning-key-name",
4584
+ "provisioning-key-expiry-date"
4585
+ ],
4586
+ "name": "device",
4587
+ "hasDynamicHelp": false,
4588
+ "multiple": false,
4589
+ "type": "option"
4590
+ },
4591
+ "config": {
4592
+ "description": "path to a pre-generated config.json file to be injected in the OS image",
4593
+ "exclusive": [
4594
+ "fleet",
4595
+ "device",
4596
+ "advanced",
4597
+ "config-app-update-poll-interval",
4598
+ "config-network",
4599
+ "config-wifi-key",
4600
+ "config-wifi-ssid",
4601
+ "dev",
4602
+ "secureBoot",
4603
+ "device-type",
4604
+ "initial-device-name",
4605
+ "provisioning-key-name",
4606
+ "provisioning-key-expiry-date"
4607
+ ],
4608
+ "name": "config",
4609
+ "hasDynamicHelp": false,
4610
+ "multiple": false,
4611
+ "type": "option"
4612
+ },
4613
+ "advanced": {
4614
+ "char": "v",
4615
+ "description": "ask advanced configuration questions (when in interactive mode)",
4616
+ "name": "advanced",
4617
+ "allowNo": false,
4618
+ "type": "boolean"
4619
+ },
4620
+ "config-app-update-poll-interval": {
4621
+ "description": "supervisor cloud polling interval in minutes (e.g. for variable updates)",
4622
+ "name": "config-app-update-poll-interval",
4623
+ "hasDynamicHelp": false,
4624
+ "multiple": false,
4625
+ "type": "option"
4626
+ },
4627
+ "config-network": {
4628
+ "description": "device network type (non-interactive configuration)",
4629
+ "name": "config-network",
4630
+ "hasDynamicHelp": false,
4631
+ "multiple": false,
4632
+ "options": [
4633
+ "ethernet",
4634
+ "wifi"
4635
+ ],
4636
+ "type": "option"
4637
+ },
4638
+ "config-wifi-key": {
4639
+ "description": "WiFi key (password) (non-interactive configuration)",
4640
+ "name": "config-wifi-key",
4641
+ "hasDynamicHelp": false,
4642
+ "multiple": false,
4643
+ "type": "option"
4644
+ },
4645
+ "config-wifi-ssid": {
4646
+ "description": "WiFi SSID (network name) (non-interactive configuration)",
4647
+ "name": "config-wifi-ssid",
4648
+ "hasDynamicHelp": false,
4649
+ "multiple": false,
4650
+ "type": "option"
4651
+ },
4652
+ "dev": {
4653
+ "description": "Configure balenaOS to operate in development mode",
4654
+ "name": "dev",
4655
+ "allowNo": false,
4656
+ "type": "boolean"
4657
+ },
4658
+ "secureBoot": {
4659
+ "description": "Configure balenaOS installer to opt-in secure boot and disk encryption",
4660
+ "name": "secureBoot",
4661
+ "allowNo": false,
4662
+ "type": "boolean"
4663
+ },
4664
+ "device-type": {
4665
+ "dependsOn": [
4666
+ "fleet"
4667
+ ],
4668
+ "description": "device type slug (e.g. \"raspberrypi3\") to override the fleet device type",
4669
+ "name": "device-type",
4670
+ "hasDynamicHelp": false,
4671
+ "multiple": false,
4672
+ "type": "option"
4673
+ },
4674
+ "initial-device-name": {
4675
+ "description": "This option will set the device name when the device provisions",
4676
+ "name": "initial-device-name",
4677
+ "hasDynamicHelp": false,
4678
+ "multiple": false,
4679
+ "type": "option"
4680
+ },
4681
+ "provisioning-key-name": {
4682
+ "description": "custom key name assigned to generated provisioning api key",
4683
+ "exclusive": [
4684
+ "config",
4685
+ "device"
4686
+ ],
4687
+ "name": "provisioning-key-name",
4688
+ "hasDynamicHelp": false,
4689
+ "multiple": false,
4690
+ "type": "option"
4691
+ },
4692
+ "provisioning-key-expiry-date": {
4693
+ "description": "expiry date assigned to generated provisioning api key (format: YYYY-MM-DD)",
4694
+ "exclusive": [
4695
+ "config",
4696
+ "device"
4697
+ ],
4698
+ "name": "provisioning-key-expiry-date",
4699
+ "hasDynamicHelp": false,
4700
+ "multiple": false,
4701
+ "type": "option"
4702
+ },
4703
+ "system-connection": {
4704
+ "char": "c",
4705
+ "description": "paths to local files to place into the 'system-connections' directory",
4706
+ "name": "system-connection",
4707
+ "required": false,
4708
+ "hasDynamicHelp": false,
4709
+ "multiple": true,
4710
+ "type": "option"
4711
+ }
4712
+ },
4713
+ "hasDynamicHelp": false,
4714
+ "hiddenAliases": [],
4715
+ "id": "os:configure",
4701
4716
  "pluginAlias": "balena-cli",
4702
4717
  "pluginName": "balena-cli",
4703
4718
  "pluginType": "core",
@@ -4708,107 +4723,120 @@
4708
4723
  "relativePath": [
4709
4724
  "build",
4710
4725
  "commands",
4711
- "whoami",
4712
- "index.js"
4726
+ "os",
4727
+ "configure.js"
4713
4728
  ]
4714
4729
  },
4715
- "release:finalize": {
4730
+ "os:download": {
4716
4731
  "aliases": [],
4717
4732
  "args": {
4718
- "commitOrId": {
4719
- "description": "the commit or ID of the release to finalize",
4720
- "name": "commitOrId",
4733
+ "type": {
4734
+ "description": "the device type",
4735
+ "name": "type",
4721
4736
  "required": true
4722
4737
  }
4723
4738
  },
4724
- "description": "Finalize a release.\n\nFinalize a release. Releases can be \"draft\" or \"final\", and this command\nchanges a draft release into a final release. Draft releases can be created\nwith the `--draft` option of the `balena build` or `balena deploy`\ncommands.\n\nDraft releases are not automatically deployed to devices tracking the latest\nrelease. For a draft release to be deployed to a device, the device should be\nexplicity pinned to that release. Conversely, final releases may trigger immediate\ndeployment to unpinned devices (subject to a device's polling period) and, for\nthis reason, final releases cannot be changed back to draft status.",
4739
+ "description": "Download an unconfigured OS image.\n\nDownload an unconfigured OS image for the specified device type.\nCheck available device types with 'balena device-type list'.\n\nNote: Currently this command only works with balenaCloud, not openBalena.\nIf using openBalena, please download the OS from: https://www.balena.io/os/\n\nThe '--version' option is used to select the balenaOS version. If omitted,\nthe latest released version is downloaded (and if only pre-release versions\nexist, the latest pre-release version is downloaded).\n\nUse '--type' to specify the type of OS download\nIf omitted, the default type for the specified device type-version combination is used.\nSome OS download types may not be available for certain device types and versions.\n\nUse '--version menu' or '--version menu-esr' to interactively select the\nOS version. The latter lists ESR versions which are only available for\ndownload on Production and Enterprise plans. See also:\nhttps://www.balena.io/docs/reference/OS/extended-support-release/\n\nDevelopment images can be selected by appending `.dev` to the version.",
4725
4740
  "examples": [
4726
- "$ balena release finalize a777f7345fe3d655c1c981aa642e5555",
4727
- "$ balena release finalize 1234567"
4741
+ "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img",
4742
+ "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version 2.101.7",
4743
+ "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version 2022.7.0",
4744
+ "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version ^2.90.0",
4745
+ "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version 2.60.1+rev1",
4746
+ "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version 2.60.1+rev1.dev",
4747
+ "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version 2021.10.2.prod",
4748
+ "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version latest",
4749
+ "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version menu",
4750
+ "$ balena os download raspberrypi3 -o ../foo/bar/raspberrypi3.img --version menu-esr",
4751
+ "$ balena os download generic-amd64 -o ../foo/bar/generic-amd64.img --type installation-media"
4728
4752
  ],
4729
- "flags": {},
4753
+ "flags": {
4754
+ "output": {
4755
+ "char": "o",
4756
+ "description": "output path",
4757
+ "name": "output",
4758
+ "required": true,
4759
+ "hasDynamicHelp": false,
4760
+ "multiple": false,
4761
+ "type": "option"
4762
+ },
4763
+ "version": {
4764
+ "description": "version number (ESR or non-ESR versions),\nor semver range (non-ESR versions only),\nor 'latest' (excludes invalidated & pre-releases),\nor 'menu' (interactive menu, non-ESR versions),\nor 'menu-esr' (interactive menu, ESR versions)",
4765
+ "name": "version",
4766
+ "hasDynamicHelp": false,
4767
+ "multiple": false,
4768
+ "type": "option"
4769
+ },
4770
+ "type": {
4771
+ "description": "'disk-image' (for flashing onto device system disk/storage)\nor 'installation-media' (for creating installation media to automatically erase, format, and install balenaOS on a device)",
4772
+ "name": "type",
4773
+ "hasDynamicHelp": false,
4774
+ "multiple": false,
4775
+ "options": [
4776
+ "installation-media",
4777
+ "disk-image"
4778
+ ],
4779
+ "type": "option"
4780
+ }
4781
+ },
4730
4782
  "hasDynamicHelp": false,
4731
4783
  "hiddenAliases": [],
4732
- "id": "release:finalize",
4784
+ "id": "os:download",
4733
4785
  "pluginAlias": "balena-cli",
4734
4786
  "pluginName": "balena-cli",
4735
4787
  "pluginType": "core",
4736
4788
  "strict": true,
4737
4789
  "enableJsonFlag": false,
4738
- "authenticated": true,
4739
4790
  "isESM": false,
4740
4791
  "relativePath": [
4741
4792
  "build",
4742
4793
  "commands",
4743
- "release",
4744
- "finalize.js"
4794
+ "os",
4795
+ "download.js"
4745
4796
  ]
4746
4797
  },
4747
- "release": {
4798
+ "os:initialize": {
4748
4799
  "aliases": [],
4749
4800
  "args": {
4750
- "commitOrId": {
4751
- "description": "the commit or ID of the release to get information",
4752
- "name": "commitOrId",
4801
+ "image": {
4802
+ "description": "path to OS image",
4803
+ "name": "image",
4753
4804
  "required": true
4754
4805
  }
4755
4806
  },
4756
- "description": "Get info for a release.",
4807
+ "description": "Initialize an os image for a device.\n\n\t\tInitialize an os image for a device with a previously\n\t\tconfigured operating system image and flash the\n\t\tan external storage drive or the device's storage\n\t\tmedium depending on the device type.\n\t\t\n\nNote: Initializing the device may ask for administrative permissions\nbecause we need to access the raw devices directly.",
4757
4808
  "examples": [
4758
- "$ balena release a777f7345fe3d655c1c981aa642e5555",
4759
- "$ balena release 1234567"
4809
+ "$ balena os initialize ../path/rpi.img --type raspberry-pi"
4760
4810
  ],
4761
4811
  "flags": {
4762
- "json": {
4763
- "description": "Format output as json.",
4764
- "helpGroup": "GLOBAL",
4765
- "name": "json",
4766
- "allowNo": false,
4767
- "type": "boolean"
4812
+ "type": {
4813
+ "char": "t",
4814
+ "description": "device type (Check available types with `balena device-type list`)",
4815
+ "name": "type",
4816
+ "required": true,
4817
+ "hasDynamicHelp": false,
4818
+ "multiple": false,
4819
+ "type": "option"
4768
4820
  },
4769
- "composition": {
4770
- "char": "c",
4771
- "description": "Return the release composition",
4772
- "name": "composition",
4821
+ "drive": {
4822
+ "char": "d",
4823
+ "description": "the drive to write the image to, eg. `/dev/sdb` or `/dev/mmcblk0`.\nCareful with this as you can erase your hard drive.\nCheck `balena util available-drives` for available options.",
4824
+ "name": "drive",
4825
+ "hasDynamicHelp": false,
4826
+ "multiple": false,
4827
+ "type": "option"
4828
+ },
4829
+ "yes": {
4830
+ "char": "y",
4831
+ "description": "answer \"yes\" to all questions (non interactive use)",
4832
+ "name": "yes",
4773
4833
  "allowNo": false,
4774
4834
  "type": "boolean"
4775
4835
  }
4776
4836
  },
4777
4837
  "hasDynamicHelp": false,
4778
4838
  "hiddenAliases": [],
4779
- "id": "release",
4780
- "pluginAlias": "balena-cli",
4781
- "pluginName": "balena-cli",
4782
- "pluginType": "core",
4783
- "strict": true,
4784
- "enableJsonFlag": true,
4785
- "authenticated": true,
4786
- "isESM": false,
4787
- "relativePath": [
4788
- "build",
4789
- "commands",
4790
- "release",
4791
- "index.js"
4792
- ]
4793
- },
4794
- "release:invalidate": {
4795
- "aliases": [],
4796
- "args": {
4797
- "commitOrId": {
4798
- "description": "the commit or ID of the release to invalidate",
4799
- "name": "commitOrId",
4800
- "required": true
4801
- }
4802
- },
4803
- "description": "Invalidate a release.\n\nInvalidate a release.\n\nInvalid releases are not automatically deployed to devices tracking the latest\nrelease. For an invalid release to be deployed to a device, the device should be\nexplicity pinned to that release.",
4804
- "examples": [
4805
- "$ balena release invalidate a777f7345fe3d655c1c981aa642e5555",
4806
- "$ balena release invalidate 1234567"
4807
- ],
4808
- "flags": {},
4809
- "hasDynamicHelp": false,
4810
- "hiddenAliases": [],
4811
- "id": "release:invalidate",
4839
+ "id": "os:initialize",
4812
4840
  "pluginAlias": "balena-cli",
4813
4841
  "pluginName": "balena-cli",
4814
4842
  "pluginType": "core",
@@ -4819,81 +4847,53 @@
4819
4847
  "relativePath": [
4820
4848
  "build",
4821
4849
  "commands",
4822
- "release",
4823
- "invalidate.js"
4850
+ "os",
4851
+ "initialize.js"
4824
4852
  ]
4825
4853
  },
4826
- "release:list": {
4854
+ "os:versions": {
4827
4855
  "aliases": [],
4828
4856
  "args": {
4829
- "fleet": {
4830
- "description": "fleet name or slug (preferred)",
4831
- "name": "fleet",
4857
+ "type": {
4858
+ "description": "device type",
4859
+ "name": "type",
4832
4860
  "required": true
4833
4861
  }
4834
4862
  },
4835
- "description": "List all releases of a fleet.\n\nList all releases of the given fleet.\n\nFleets may be specified by fleet name or slug. Slugs are recommended because\nthey are unique and unambiguous. Slugs can be listed with the `balena fleet list`\ncommand. Note that slugs may change if the fleet is renamed. Fleet names are\nnot unique and may result in \"Fleet is ambiguous\" errors at any time (even if\n\"it used to work in the past\"), for example if the name clashes with a newly\ncreated public/open fleet, or with fleets from other balena accounts that you\nmay be invited to join under any role. For this reason, fleet names are\nespecially discouraged in scripts (e.g. CI environments).",
4863
+ "description": "Show available balenaOS versions for the given device type.\n\nShow the available balenaOS versions for the given device type.\nCheck available types with `balena device-type list`.\n\nbalenaOS ESR versions can be listed with the '--esr' option. See also:\nhttps://www.balena.io/docs/reference/OS/extended-support-release/",
4836
4864
  "examples": [
4837
- "$ balena release list myorg/myfleet"
4865
+ "$ balena os versions raspberrypi3"
4838
4866
  ],
4839
4867
  "flags": {
4840
- "json": {
4841
- "description": "Format output as json.",
4842
- "helpGroup": "GLOBAL",
4843
- "name": "json",
4868
+ "esr": {
4869
+ "description": "select balenaOS ESR versions",
4870
+ "name": "esr",
4871
+ "allowNo": false,
4872
+ "type": "boolean"
4873
+ },
4874
+ "include-draft": {
4875
+ "description": "include pre-release balenaOS versions",
4876
+ "name": "include-draft",
4844
4877
  "allowNo": false,
4845
4878
  "type": "boolean"
4846
4879
  }
4847
4880
  },
4848
4881
  "hasDynamicHelp": false,
4849
4882
  "hiddenAliases": [],
4850
- "id": "release:list",
4851
- "pluginAlias": "balena-cli",
4852
- "pluginName": "balena-cli",
4853
- "pluginType": "core",
4854
- "strict": true,
4855
- "enableJsonFlag": true,
4856
- "authenticated": true,
4857
- "isESM": false,
4858
- "relativePath": [
4859
- "build",
4860
- "commands",
4861
- "release",
4862
- "list.js"
4863
- ]
4864
- },
4865
- "release:validate": {
4866
- "aliases": [],
4867
- "args": {
4868
- "commitOrId": {
4869
- "description": "the commit or ID of the release to validate",
4870
- "name": "commitOrId",
4871
- "required": true
4872
- }
4873
- },
4874
- "description": "Validate a release.\n\nValidate a release.\n\nValid releases are automatically deployed to devices tracking the latest\nrelease if they are finalized.",
4875
- "examples": [
4876
- "$ balena release validate a777f7345fe3d655c1c981aa642e5555",
4877
- "$ balena release validate 1234567"
4878
- ],
4879
- "flags": {},
4880
- "hasDynamicHelp": false,
4881
- "hiddenAliases": [],
4882
- "id": "release:validate",
4883
+ "id": "os:versions",
4883
4884
  "pluginAlias": "balena-cli",
4884
4885
  "pluginName": "balena-cli",
4885
4886
  "pluginType": "core",
4886
4887
  "strict": true,
4887
4888
  "enableJsonFlag": false,
4888
- "authenticated": true,
4889
4889
  "isESM": false,
4890
4890
  "relativePath": [
4891
4891
  "build",
4892
4892
  "commands",
4893
- "release",
4894
- "validate.js"
4893
+ "os",
4894
+ "versions.js"
4895
4895
  ]
4896
4896
  }
4897
4897
  },
4898
- "version": "25.1.2"
4898
+ "version": "25.1.3"
4899
4899
  }