balena-cli 23.2.31 → 23.2.32

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.
@@ -210,6 +210,208 @@
210
210
  "create.js"
211
211
  ]
212
212
  },
213
+ "build": {
214
+ "aliases": [],
215
+ "args": {
216
+ "source": {
217
+ "description": "path of project source directory",
218
+ "name": "source"
219
+ }
220
+ },
221
+ "description": "Build a project locally.\n\nUse this command to build an image or a complete multicontainer project with\nthe provided docker daemon in your development machine or balena device.\n(See also the `balena push` command for the option of building images in the\nbalenaCloud build servers.)\n\nYou must specify either a fleet, or the device type and architecture.\n\nThis command will look into the given source directory (or the current working\ndirectory if one isn't specified) for a docker-compose.yml file, and if found,\neach service defined in the compose file will be built. If a compose file isn't\nfound, it will look for a Dockerfile[.template] file (or alternative Dockerfile\nspecified with the `--dockerfile` option), and if no dockerfile is found, it\nwill try to generate one.\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",
222
+ "examples": [
223
+ "$ balena build --fleet myFleet",
224
+ "$ balena build ./source/ --fleet myorg/myfleet",
225
+ "$ balena build --deviceType raspberrypi3 --emulated",
226
+ "$ balena build --deviceType raspberrypi3 --arch armv7hf --emulated",
227
+ "$ balena build --docker /var/run/docker.sock --fleet myFleet # Linux, Mac",
228
+ "$ balena build --docker //./pipe/docker_engine --fleet myFleet # Windows",
229
+ "$ balena build --dockerHost my.docker.host --dockerPort 2376 --ca ca.pem --key key.pem --cert cert.pem -f myFleet"
230
+ ],
231
+ "flags": {
232
+ "arch": {
233
+ "char": "A",
234
+ "description": "the architecture to build for",
235
+ "name": "arch",
236
+ "hasDynamicHelp": false,
237
+ "multiple": false,
238
+ "type": "option"
239
+ },
240
+ "deviceType": {
241
+ "char": "d",
242
+ "description": "the type of device this build is for",
243
+ "name": "deviceType",
244
+ "hasDynamicHelp": false,
245
+ "multiple": false,
246
+ "type": "option"
247
+ },
248
+ "fleet": {
249
+ "char": "f",
250
+ "description": "fleet name or slug (preferred)",
251
+ "name": "fleet",
252
+ "hasDynamicHelp": false,
253
+ "multiple": false,
254
+ "type": "option"
255
+ },
256
+ "emulated": {
257
+ "char": "e",
258
+ "description": "Use QEMU for ARM architecture emulation during the image build",
259
+ "name": "emulated",
260
+ "allowNo": false,
261
+ "type": "boolean"
262
+ },
263
+ "dockerfile": {
264
+ "description": "Alternative Dockerfile name/path, relative to the source folder",
265
+ "name": "dockerfile",
266
+ "hasDynamicHelp": false,
267
+ "multiple": false,
268
+ "type": "option"
269
+ },
270
+ "nologs": {
271
+ "description": "Hide the image build log output (produce less verbose output)",
272
+ "name": "nologs",
273
+ "allowNo": false,
274
+ "type": "boolean"
275
+ },
276
+ "multi-dockerignore": {
277
+ "char": "m",
278
+ "description": "Have each service use its own .dockerignore file. See \"balena help build\".",
279
+ "name": "multi-dockerignore",
280
+ "allowNo": false,
281
+ "type": "boolean"
282
+ },
283
+ "noparent-check": {
284
+ "description": "Disable project validation check of 'docker-compose.yml' file in parent folder",
285
+ "name": "noparent-check",
286
+ "allowNo": false,
287
+ "type": "boolean"
288
+ },
289
+ "registry-secrets": {
290
+ "char": "R",
291
+ "description": "Path to a YAML or JSON file with passwords for a private Docker registry",
292
+ "name": "registry-secrets",
293
+ "hasDynamicHelp": false,
294
+ "multiple": false,
295
+ "type": "option"
296
+ },
297
+ "noconvert-eol": {
298
+ "description": "Don't convert line endings from CRLF (Windows format) to LF (Unix format).",
299
+ "name": "noconvert-eol",
300
+ "allowNo": false,
301
+ "type": "boolean"
302
+ },
303
+ "projectName": {
304
+ "char": "n",
305
+ "description": "Name prefix for locally built images. This is the 'projectName' portion\nin 'projectName_serviceName:tag'. The default is the directory name.",
306
+ "name": "projectName",
307
+ "hasDynamicHelp": false,
308
+ "multiple": false,
309
+ "type": "option"
310
+ },
311
+ "tag": {
312
+ "char": "t",
313
+ "description": "Tag locally built Docker images. This is the 'tag' portion\nin 'projectName_serviceName:tag'. The default is 'latest'.",
314
+ "name": "tag",
315
+ "hasDynamicHelp": false,
316
+ "multiple": false,
317
+ "type": "option"
318
+ },
319
+ "buildArg": {
320
+ "char": "B",
321
+ "description": "[Deprecated] Set a build-time variable (eg. \"-B 'ARG=value'\"). Can be specified multiple times.",
322
+ "name": "buildArg",
323
+ "hasDynamicHelp": false,
324
+ "multiple": true,
325
+ "type": "option"
326
+ },
327
+ "cache-from": {
328
+ "description": "Comma-separated list (no spaces) of image names for build cache resolution. Implements the same feature as the \"docker build --cache-from\" option.",
329
+ "name": "cache-from",
330
+ "hasDynamicHelp": false,
331
+ "multiple": false,
332
+ "type": "option"
333
+ },
334
+ "nocache": {
335
+ "description": "Don't use docker layer caching when building",
336
+ "name": "nocache",
337
+ "allowNo": false,
338
+ "type": "boolean"
339
+ },
340
+ "pull": {
341
+ "description": "Pull the base images again even if they exist locally",
342
+ "name": "pull",
343
+ "allowNo": false,
344
+ "type": "boolean"
345
+ },
346
+ "squash": {
347
+ "description": "Squash newly built layers into a single new layer",
348
+ "name": "squash",
349
+ "allowNo": false,
350
+ "type": "boolean"
351
+ },
352
+ "docker": {
353
+ "char": "P",
354
+ "description": "Path to a local docker socket (e.g. /var/run/docker.sock)",
355
+ "name": "docker",
356
+ "hasDynamicHelp": false,
357
+ "multiple": false,
358
+ "type": "option"
359
+ },
360
+ "dockerHost": {
361
+ "char": "h",
362
+ "description": "Docker daemon hostname or IP address (dev machine or balena device) ",
363
+ "name": "dockerHost",
364
+ "hasDynamicHelp": false,
365
+ "multiple": false,
366
+ "type": "option"
367
+ },
368
+ "dockerPort": {
369
+ "char": "p",
370
+ "description": "Docker daemon TCP port number (hint: 2375 for balena devices)",
371
+ "name": "dockerPort",
372
+ "hasDynamicHelp": false,
373
+ "multiple": false,
374
+ "type": "option"
375
+ },
376
+ "ca": {
377
+ "description": "Docker host TLS certificate authority file",
378
+ "name": "ca",
379
+ "hasDynamicHelp": false,
380
+ "multiple": false,
381
+ "type": "option"
382
+ },
383
+ "cert": {
384
+ "description": "Docker host TLS certificate file",
385
+ "name": "cert",
386
+ "hasDynamicHelp": false,
387
+ "multiple": false,
388
+ "type": "option"
389
+ },
390
+ "key": {
391
+ "description": "Docker host TLS key file",
392
+ "name": "key",
393
+ "hasDynamicHelp": false,
394
+ "multiple": false,
395
+ "type": "option"
396
+ }
397
+ },
398
+ "hasDynamicHelp": false,
399
+ "hiddenAliases": [],
400
+ "id": "build",
401
+ "pluginAlias": "balena-cli",
402
+ "pluginName": "balena-cli",
403
+ "pluginType": "core",
404
+ "strict": true,
405
+ "enableJsonFlag": false,
406
+ "primary": true,
407
+ "isESM": false,
408
+ "relativePath": [
409
+ "build",
410
+ "commands",
411
+ "build",
412
+ "index.js"
413
+ ]
414
+ },
213
415
  "config:generate": {
214
416
  "aliases": [],
215
417
  "args": {},
@@ -554,244 +756,42 @@
554
756
  "write.js"
555
757
  ]
556
758
  },
557
- "build": {
759
+ "deploy": {
558
760
  "aliases": [],
559
761
  "args": {
560
- "source": {
561
- "description": "path of project source directory",
562
- "name": "source"
762
+ "fleet": {
763
+ "description": "fleet name or slug (preferred)",
764
+ "name": "fleet",
765
+ "required": true
766
+ },
767
+ "image": {
768
+ "description": "the image to deploy",
769
+ "name": "image"
563
770
  }
564
771
  },
565
- "description": "Build a project locally.\n\nUse this command to build an image or a complete multicontainer project with\nthe provided docker daemon in your development machine or balena device.\n(See also the `balena push` command for the option of building images in the\nbalenaCloud build servers.)\n\nYou must specify either a fleet, or the device type and architecture.\n\nThis command will look into the given source directory (or the current working\ndirectory if one isn't specified) for a docker-compose.yml file, and if found,\neach service defined in the compose file will be built. If a compose file isn't\nfound, it will look for a Dockerfile[.template] file (or alternative Dockerfile\nspecified with the `--dockerfile` option), and if no dockerfile is found, it\nwill try to generate one.\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",
772
+ "description": "Deploy a single image or a multicontainer project to a balena fleet.\n\nUsage: `deploy <fleet> ([image] | --build [--source build-dir])`\n\nUse this command to deploy an image or a complete multicontainer project to a\nfleet, optionally building it first. The source images are searched for\n(and optionally built) using the docker daemon in your development machine or\nbalena device. (See also the `balena push` command for the option of building\nthe image in the balenaCloud build servers.)\n\nUnless an image is specified, this command will look into the current directory\n(or the one specified by --source) for a docker-compose.yml file. If one is\nfound, this command will deploy each service defined in the compose file,\nbuilding it first if an image for it doesn't exist. Image names will be looked\nup according to the scheme: `<projectName>_<serviceName>`.\n\nIf a compose file isn't found, the command will look for a Dockerfile[.template]\nfile (or alternative Dockerfile specified with the `-f` option), and if yet\nthat isn't found, it will try to generate one.\n\nTo deploy to a fleet where you are a collaborator, use fleet slug including the\norganization: `balena deploy <organization>/<fleet>`.\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",
566
773
  "examples": [
567
- "$ balena build --fleet myFleet",
568
- "$ balena build ./source/ --fleet myorg/myfleet",
569
- "$ balena build --deviceType raspberrypi3 --emulated",
570
- "$ balena build --deviceType raspberrypi3 --arch armv7hf --emulated",
571
- "$ balena build --docker /var/run/docker.sock --fleet myFleet # Linux, Mac",
572
- "$ balena build --docker //./pipe/docker_engine --fleet myFleet # Windows",
573
- "$ balena build --dockerHost my.docker.host --dockerPort 2376 --ca ca.pem --key key.pem --cert cert.pem -f myFleet"
774
+ "$ balena deploy myFleet",
775
+ "$ balena deploy myorg/myfleet --build --source myBuildDir/",
776
+ "$ balena deploy myorg/myfleet --build --source myBuildDir/ --note \"this is the note for this release\"",
777
+ "$ balena deploy myorg/myfleet myRepo/myImage",
778
+ "$ balena deploy myFleet myRepo/myImage --release-tag key1 \"\" key2 \"value2 with spaces\""
574
779
  ],
575
780
  "flags": {
576
- "arch": {
577
- "char": "A",
578
- "description": "the architecture to build for",
579
- "name": "arch",
781
+ "source": {
782
+ "char": "s",
783
+ "description": "specify an alternate source directory; default is the working directory",
784
+ "name": "source",
580
785
  "hasDynamicHelp": false,
581
786
  "multiple": false,
582
787
  "type": "option"
583
788
  },
584
- "deviceType": {
585
- "char": "d",
586
- "description": "the type of device this build is for",
587
- "name": "deviceType",
588
- "hasDynamicHelp": false,
589
- "multiple": false,
590
- "type": "option"
591
- },
592
- "fleet": {
593
- "char": "f",
594
- "description": "fleet name or slug (preferred)",
595
- "name": "fleet",
596
- "hasDynamicHelp": false,
597
- "multiple": false,
598
- "type": "option"
599
- },
600
- "emulated": {
601
- "char": "e",
602
- "description": "Use QEMU for ARM architecture emulation during the image build",
603
- "name": "emulated",
604
- "allowNo": false,
605
- "type": "boolean"
606
- },
607
- "dockerfile": {
608
- "description": "Alternative Dockerfile name/path, relative to the source folder",
609
- "name": "dockerfile",
610
- "hasDynamicHelp": false,
611
- "multiple": false,
612
- "type": "option"
613
- },
614
- "nologs": {
615
- "description": "Hide the image build log output (produce less verbose output)",
616
- "name": "nologs",
617
- "allowNo": false,
618
- "type": "boolean"
619
- },
620
- "multi-dockerignore": {
621
- "char": "m",
622
- "description": "Have each service use its own .dockerignore file. See \"balena help build\".",
623
- "name": "multi-dockerignore",
624
- "allowNo": false,
625
- "type": "boolean"
626
- },
627
- "noparent-check": {
628
- "description": "Disable project validation check of 'docker-compose.yml' file in parent folder",
629
- "name": "noparent-check",
630
- "allowNo": false,
631
- "type": "boolean"
632
- },
633
- "registry-secrets": {
634
- "char": "R",
635
- "description": "Path to a YAML or JSON file with passwords for a private Docker registry",
636
- "name": "registry-secrets",
637
- "hasDynamicHelp": false,
638
- "multiple": false,
639
- "type": "option"
640
- },
641
- "noconvert-eol": {
642
- "description": "Don't convert line endings from CRLF (Windows format) to LF (Unix format).",
643
- "name": "noconvert-eol",
644
- "allowNo": false,
645
- "type": "boolean"
646
- },
647
- "projectName": {
648
- "char": "n",
649
- "description": "Name prefix for locally built images. This is the 'projectName' portion\nin 'projectName_serviceName:tag'. The default is the directory name.",
650
- "name": "projectName",
651
- "hasDynamicHelp": false,
652
- "multiple": false,
653
- "type": "option"
654
- },
655
- "tag": {
656
- "char": "t",
657
- "description": "Tag locally built Docker images. This is the 'tag' portion\nin 'projectName_serviceName:tag'. The default is 'latest'.",
658
- "name": "tag",
659
- "hasDynamicHelp": false,
660
- "multiple": false,
661
- "type": "option"
662
- },
663
- "buildArg": {
664
- "char": "B",
665
- "description": "[Deprecated] Set a build-time variable (eg. \"-B 'ARG=value'\"). Can be specified multiple times.",
666
- "name": "buildArg",
667
- "hasDynamicHelp": false,
668
- "multiple": true,
669
- "type": "option"
670
- },
671
- "cache-from": {
672
- "description": "Comma-separated list (no spaces) of image names for build cache resolution. Implements the same feature as the \"docker build --cache-from\" option.",
673
- "name": "cache-from",
674
- "hasDynamicHelp": false,
675
- "multiple": false,
676
- "type": "option"
677
- },
678
- "nocache": {
679
- "description": "Don't use docker layer caching when building",
680
- "name": "nocache",
681
- "allowNo": false,
682
- "type": "boolean"
683
- },
684
- "pull": {
685
- "description": "Pull the base images again even if they exist locally",
686
- "name": "pull",
687
- "allowNo": false,
688
- "type": "boolean"
689
- },
690
- "squash": {
691
- "description": "Squash newly built layers into a single new layer",
692
- "name": "squash",
693
- "allowNo": false,
694
- "type": "boolean"
695
- },
696
- "docker": {
697
- "char": "P",
698
- "description": "Path to a local docker socket (e.g. /var/run/docker.sock)",
699
- "name": "docker",
700
- "hasDynamicHelp": false,
701
- "multiple": false,
702
- "type": "option"
703
- },
704
- "dockerHost": {
705
- "char": "h",
706
- "description": "Docker daemon hostname or IP address (dev machine or balena device) ",
707
- "name": "dockerHost",
708
- "hasDynamicHelp": false,
709
- "multiple": false,
710
- "type": "option"
711
- },
712
- "dockerPort": {
713
- "char": "p",
714
- "description": "Docker daemon TCP port number (hint: 2375 for balena devices)",
715
- "name": "dockerPort",
716
- "hasDynamicHelp": false,
717
- "multiple": false,
718
- "type": "option"
719
- },
720
- "ca": {
721
- "description": "Docker host TLS certificate authority file",
722
- "name": "ca",
723
- "hasDynamicHelp": false,
724
- "multiple": false,
725
- "type": "option"
726
- },
727
- "cert": {
728
- "description": "Docker host TLS certificate file",
729
- "name": "cert",
730
- "hasDynamicHelp": false,
731
- "multiple": false,
732
- "type": "option"
733
- },
734
- "key": {
735
- "description": "Docker host TLS key file",
736
- "name": "key",
737
- "hasDynamicHelp": false,
738
- "multiple": false,
739
- "type": "option"
740
- }
741
- },
742
- "hasDynamicHelp": false,
743
- "hiddenAliases": [],
744
- "id": "build",
745
- "pluginAlias": "balena-cli",
746
- "pluginName": "balena-cli",
747
- "pluginType": "core",
748
- "strict": true,
749
- "enableJsonFlag": false,
750
- "primary": true,
751
- "isESM": false,
752
- "relativePath": [
753
- "build",
754
- "commands",
755
- "build",
756
- "index.js"
757
- ]
758
- },
759
- "deploy": {
760
- "aliases": [],
761
- "args": {
762
- "fleet": {
763
- "description": "fleet name or slug (preferred)",
764
- "name": "fleet",
765
- "required": true
766
- },
767
- "image": {
768
- "description": "the image to deploy",
769
- "name": "image"
770
- }
771
- },
772
- "description": "Deploy a single image or a multicontainer project to a balena fleet.\n\nUsage: `deploy <fleet> ([image] | --build [--source build-dir])`\n\nUse this command to deploy an image or a complete multicontainer project to a\nfleet, optionally building it first. The source images are searched for\n(and optionally built) using the docker daemon in your development machine or\nbalena device. (See also the `balena push` command for the option of building\nthe image in the balenaCloud build servers.)\n\nUnless an image is specified, this command will look into the current directory\n(or the one specified by --source) for a docker-compose.yml file. If one is\nfound, this command will deploy each service defined in the compose file,\nbuilding it first if an image for it doesn't exist. Image names will be looked\nup according to the scheme: `<projectName>_<serviceName>`.\n\nIf a compose file isn't found, the command will look for a Dockerfile[.template]\nfile (or alternative Dockerfile specified with the `-f` option), and if yet\nthat isn't found, it will try to generate one.\n\nTo deploy to a fleet where you are a collaborator, use fleet slug including the\norganization: `balena deploy <organization>/<fleet>`.\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",
773
- "examples": [
774
- "$ balena deploy myFleet",
775
- "$ balena deploy myorg/myfleet --build --source myBuildDir/",
776
- "$ balena deploy myorg/myfleet --build --source myBuildDir/ --note \"this is the note for this release\"",
777
- "$ balena deploy myorg/myfleet myRepo/myImage",
778
- "$ balena deploy myFleet myRepo/myImage --release-tag key1 \"\" key2 \"value2 with spaces\""
779
- ],
780
- "flags": {
781
- "source": {
782
- "char": "s",
783
- "description": "specify an alternate source directory; default is the working directory",
784
- "name": "source",
785
- "hasDynamicHelp": false,
786
- "multiple": false,
787
- "type": "option"
788
- },
789
- "build": {
790
- "char": "b",
791
- "description": "force a rebuild before deploy",
792
- "name": "build",
793
- "allowNo": false,
794
- "type": "boolean"
789
+ "build": {
790
+ "char": "b",
791
+ "description": "force a rebuild before deploy",
792
+ "name": "build",
793
+ "allowNo": false,
794
+ "type": "boolean"
795
795
  },
796
796
  "nologupload": {
797
797
  "description": "don't upload build logs to the dashboard with image (if building)",
@@ -3597,58 +3597,188 @@
3597
3597
  "versions.js"
3598
3598
  ]
3599
3599
  },
3600
- "push": {
3600
+ "preload": {
3601
3601
  "aliases": [],
3602
3602
  "args": {
3603
- "fleetOrDevice": {
3604
- "description": "fleet name or slug, or local device IP address or \".local\" hostname",
3605
- "name": "fleetOrDevice",
3603
+ "image": {
3604
+ "description": "the image file path",
3605
+ "name": "image",
3606
3606
  "required": true
3607
3607
  }
3608
3608
  },
3609
- "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.",
3609
+ "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.",
3610
3610
  "examples": [
3611
- "$ balena push myFleet",
3612
- "$ balena push myFleet --source <source directory>",
3613
- "$ balena push myFleet -s <source directory>",
3614
- "$ balena push myFleet --source <source directory> --note \"this is the note for this release\"",
3615
- "$ balena push myFleet --release-tag key1 \"\" key2 \"value2 with spaces\"",
3616
- "$ balena push myorg/myfleet",
3617
- "",
3618
- "$ balena push 10.0.0.1",
3619
- "$ balena push 10.0.0.1 --source <source directory>",
3620
- "$ balena push 10.0.0.1 --service my-service",
3621
- "$ balena push 10.0.0.1 --env MY_ENV_VAR=value --env my-service:SERVICE_VAR=value",
3622
- "$ balena push 10.0.0.1 --nolive",
3623
- "",
3624
- "$ balena push 23c73a1.local --system",
3625
- "$ balena push 23c73a1.local --system --service my-service"
3611
+ "$ balena preload balena.img --fleet MyFleet --commit e1f2592fc6ee949e68756d4f4a48e49bff8d72a0",
3612
+ "$ balena preload balena.img --fleet myorg/myfleet --splash-image image.png",
3613
+ "$ balena preload balena.img"
3626
3614
  ],
3627
3615
  "flags": {
3628
- "source": {
3629
- "char": "s",
3630
- "description": "Source directory to be sent to balenaCloud or balenaOS device\n(default: current working dir)",
3631
- "name": "source",
3632
- "default": ".",
3616
+ "fleet": {
3617
+ "char": "f",
3618
+ "description": "fleet name or slug (preferred)",
3619
+ "name": "fleet",
3633
3620
  "hasDynamicHelp": false,
3634
3621
  "multiple": false,
3635
3622
  "type": "option"
3636
3623
  },
3637
- "emulated": {
3638
- "char": "e",
3639
- "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.",
3640
- "name": "emulated",
3641
- "allowNo": false,
3642
- "type": "boolean"
3624
+ "commit": {
3625
+ "char": "c",
3626
+ "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",
3627
+ "name": "commit",
3628
+ "hasDynamicHelp": false,
3629
+ "multiple": false,
3630
+ "type": "option"
3643
3631
  },
3644
- "dockerfile": {
3645
- "description": "Alternative Dockerfile name/path, relative to the source folder",
3646
- "name": "dockerfile",
3632
+ "splash-image": {
3633
+ "char": "s",
3634
+ "description": "path to a png image to replace the splash screen",
3635
+ "name": "splash-image",
3647
3636
  "hasDynamicHelp": false,
3648
3637
  "multiple": false,
3649
3638
  "type": "option"
3650
3639
  },
3651
- "nocache": {
3640
+ "dont-check-arch": {
3641
+ "description": "disable architecture compatibility check between image and fleet",
3642
+ "name": "dont-check-arch",
3643
+ "allowNo": false,
3644
+ "type": "boolean"
3645
+ },
3646
+ "pin-device-to-release": {
3647
+ "char": "p",
3648
+ "description": "pin the preloaded device to the preloaded release on provision",
3649
+ "name": "pin-device-to-release",
3650
+ "allowNo": true,
3651
+ "type": "boolean"
3652
+ },
3653
+ "additional-space": {
3654
+ "description": "expand the image by this amount of bytes instead of automatically estimating the required amount",
3655
+ "name": "additional-space",
3656
+ "hasDynamicHelp": false,
3657
+ "multiple": false,
3658
+ "type": "option"
3659
+ },
3660
+ "add-certificate": {
3661
+ "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.",
3662
+ "name": "add-certificate",
3663
+ "hasDynamicHelp": false,
3664
+ "multiple": true,
3665
+ "type": "option"
3666
+ },
3667
+ "docker": {
3668
+ "char": "P",
3669
+ "description": "Path to a local docker socket (e.g. /var/run/docker.sock)",
3670
+ "name": "docker",
3671
+ "hasDynamicHelp": false,
3672
+ "multiple": false,
3673
+ "type": "option"
3674
+ },
3675
+ "dockerHost": {
3676
+ "char": "h",
3677
+ "description": "Docker daemon hostname or IP address (dev machine or balena device) ",
3678
+ "name": "dockerHost",
3679
+ "hasDynamicHelp": false,
3680
+ "multiple": false,
3681
+ "type": "option"
3682
+ },
3683
+ "dockerPort": {
3684
+ "description": "Docker daemon TCP port number (hint: 2375 for balena devices)",
3685
+ "name": "dockerPort",
3686
+ "hasDynamicHelp": false,
3687
+ "multiple": false,
3688
+ "type": "option"
3689
+ },
3690
+ "ca": {
3691
+ "description": "Docker host TLS certificate authority file",
3692
+ "name": "ca",
3693
+ "hasDynamicHelp": false,
3694
+ "multiple": false,
3695
+ "type": "option"
3696
+ },
3697
+ "cert": {
3698
+ "description": "Docker host TLS certificate file",
3699
+ "name": "cert",
3700
+ "hasDynamicHelp": false,
3701
+ "multiple": false,
3702
+ "type": "option"
3703
+ },
3704
+ "key": {
3705
+ "description": "Docker host TLS key file",
3706
+ "name": "key",
3707
+ "hasDynamicHelp": false,
3708
+ "multiple": false,
3709
+ "type": "option"
3710
+ }
3711
+ },
3712
+ "hasDynamicHelp": false,
3713
+ "hiddenAliases": [],
3714
+ "id": "preload",
3715
+ "pluginAlias": "balena-cli",
3716
+ "pluginName": "balena-cli",
3717
+ "pluginType": "core",
3718
+ "strict": true,
3719
+ "enableJsonFlag": false,
3720
+ "authenticated": true,
3721
+ "primary": true,
3722
+ "isESM": false,
3723
+ "relativePath": [
3724
+ "build",
3725
+ "commands",
3726
+ "preload",
3727
+ "index.js"
3728
+ ]
3729
+ },
3730
+ "push": {
3731
+ "aliases": [],
3732
+ "args": {
3733
+ "fleetOrDevice": {
3734
+ "description": "fleet name or slug, or local device IP address or \".local\" hostname",
3735
+ "name": "fleetOrDevice",
3736
+ "required": true
3737
+ }
3738
+ },
3739
+ "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.",
3740
+ "examples": [
3741
+ "$ balena push myFleet",
3742
+ "$ balena push myFleet --source <source directory>",
3743
+ "$ balena push myFleet -s <source directory>",
3744
+ "$ balena push myFleet --source <source directory> --note \"this is the note for this release\"",
3745
+ "$ balena push myFleet --release-tag key1 \"\" key2 \"value2 with spaces\"",
3746
+ "$ balena push myorg/myfleet",
3747
+ "",
3748
+ "$ balena push 10.0.0.1",
3749
+ "$ balena push 10.0.0.1 --source <source directory>",
3750
+ "$ balena push 10.0.0.1 --service my-service",
3751
+ "$ balena push 10.0.0.1 --env MY_ENV_VAR=value --env my-service:SERVICE_VAR=value",
3752
+ "$ balena push 10.0.0.1 --nolive",
3753
+ "",
3754
+ "$ balena push 23c73a1.local --system",
3755
+ "$ balena push 23c73a1.local --system --service my-service"
3756
+ ],
3757
+ "flags": {
3758
+ "source": {
3759
+ "char": "s",
3760
+ "description": "Source directory to be sent to balenaCloud or balenaOS device\n(default: current working dir)",
3761
+ "name": "source",
3762
+ "default": ".",
3763
+ "hasDynamicHelp": false,
3764
+ "multiple": false,
3765
+ "type": "option"
3766
+ },
3767
+ "emulated": {
3768
+ "char": "e",
3769
+ "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.",
3770
+ "name": "emulated",
3771
+ "allowNo": false,
3772
+ "type": "boolean"
3773
+ },
3774
+ "dockerfile": {
3775
+ "description": "Alternative Dockerfile name/path, relative to the source folder",
3776
+ "name": "dockerfile",
3777
+ "hasDynamicHelp": false,
3778
+ "multiple": false,
3779
+ "type": "option"
3780
+ },
3781
+ "nocache": {
3652
3782
  "char": "c",
3653
3783
  "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.",
3654
3784
  "name": "nocache",
@@ -3762,136 +3892,6 @@
3762
3892
  "index.js"
3763
3893
  ]
3764
3894
  },
3765
- "preload": {
3766
- "aliases": [],
3767
- "args": {
3768
- "image": {
3769
- "description": "the image file path",
3770
- "name": "image",
3771
- "required": true
3772
- }
3773
- },
3774
- "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.",
3775
- "examples": [
3776
- "$ balena preload balena.img --fleet MyFleet --commit e1f2592fc6ee949e68756d4f4a48e49bff8d72a0",
3777
- "$ balena preload balena.img --fleet myorg/myfleet --splash-image image.png",
3778
- "$ balena preload balena.img"
3779
- ],
3780
- "flags": {
3781
- "fleet": {
3782
- "char": "f",
3783
- "description": "fleet name or slug (preferred)",
3784
- "name": "fleet",
3785
- "hasDynamicHelp": false,
3786
- "multiple": false,
3787
- "type": "option"
3788
- },
3789
- "commit": {
3790
- "char": "c",
3791
- "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",
3792
- "name": "commit",
3793
- "hasDynamicHelp": false,
3794
- "multiple": false,
3795
- "type": "option"
3796
- },
3797
- "splash-image": {
3798
- "char": "s",
3799
- "description": "path to a png image to replace the splash screen",
3800
- "name": "splash-image",
3801
- "hasDynamicHelp": false,
3802
- "multiple": false,
3803
- "type": "option"
3804
- },
3805
- "dont-check-arch": {
3806
- "description": "disable architecture compatibility check between image and fleet",
3807
- "name": "dont-check-arch",
3808
- "allowNo": false,
3809
- "type": "boolean"
3810
- },
3811
- "pin-device-to-release": {
3812
- "char": "p",
3813
- "description": "pin the preloaded device to the preloaded release on provision",
3814
- "name": "pin-device-to-release",
3815
- "allowNo": true,
3816
- "type": "boolean"
3817
- },
3818
- "additional-space": {
3819
- "description": "expand the image by this amount of bytes instead of automatically estimating the required amount",
3820
- "name": "additional-space",
3821
- "hasDynamicHelp": false,
3822
- "multiple": false,
3823
- "type": "option"
3824
- },
3825
- "add-certificate": {
3826
- "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.",
3827
- "name": "add-certificate",
3828
- "hasDynamicHelp": false,
3829
- "multiple": true,
3830
- "type": "option"
3831
- },
3832
- "docker": {
3833
- "char": "P",
3834
- "description": "Path to a local docker socket (e.g. /var/run/docker.sock)",
3835
- "name": "docker",
3836
- "hasDynamicHelp": false,
3837
- "multiple": false,
3838
- "type": "option"
3839
- },
3840
- "dockerHost": {
3841
- "char": "h",
3842
- "description": "Docker daemon hostname or IP address (dev machine or balena device) ",
3843
- "name": "dockerHost",
3844
- "hasDynamicHelp": false,
3845
- "multiple": false,
3846
- "type": "option"
3847
- },
3848
- "dockerPort": {
3849
- "description": "Docker daemon TCP port number (hint: 2375 for balena devices)",
3850
- "name": "dockerPort",
3851
- "hasDynamicHelp": false,
3852
- "multiple": false,
3853
- "type": "option"
3854
- },
3855
- "ca": {
3856
- "description": "Docker host TLS certificate authority file",
3857
- "name": "ca",
3858
- "hasDynamicHelp": false,
3859
- "multiple": false,
3860
- "type": "option"
3861
- },
3862
- "cert": {
3863
- "description": "Docker host TLS certificate file",
3864
- "name": "cert",
3865
- "hasDynamicHelp": false,
3866
- "multiple": false,
3867
- "type": "option"
3868
- },
3869
- "key": {
3870
- "description": "Docker host TLS key file",
3871
- "name": "key",
3872
- "hasDynamicHelp": false,
3873
- "multiple": false,
3874
- "type": "option"
3875
- }
3876
- },
3877
- "hasDynamicHelp": false,
3878
- "hiddenAliases": [],
3879
- "id": "preload",
3880
- "pluginAlias": "balena-cli",
3881
- "pluginName": "balena-cli",
3882
- "pluginType": "core",
3883
- "strict": true,
3884
- "enableJsonFlag": false,
3885
- "authenticated": true,
3886
- "primary": true,
3887
- "isESM": false,
3888
- "relativePath": [
3889
- "build",
3890
- "commands",
3891
- "preload",
3892
- "index.js"
3893
- ]
3894
- },
3895
3895
  "release:finalize": {
3896
3896
  "aliases": [],
3897
3897
  "args": {
@@ -4074,6 +4074,165 @@
4074
4074
  "validate.js"
4075
4075
  ]
4076
4076
  },
4077
+ "settings": {
4078
+ "aliases": [],
4079
+ "args": {},
4080
+ "description": "Print current settings.\n\nUse this command to display the current balena CLI settings.",
4081
+ "examples": [
4082
+ "$ balena settings"
4083
+ ],
4084
+ "flags": {},
4085
+ "hasDynamicHelp": false,
4086
+ "hiddenAliases": [],
4087
+ "id": "settings",
4088
+ "pluginAlias": "balena-cli",
4089
+ "pluginName": "balena-cli",
4090
+ "pluginType": "core",
4091
+ "strict": true,
4092
+ "enableJsonFlag": false,
4093
+ "isESM": false,
4094
+ "relativePath": [
4095
+ "build",
4096
+ "commands",
4097
+ "settings",
4098
+ "index.js"
4099
+ ]
4100
+ },
4101
+ "ssh-key:add": {
4102
+ "aliases": [],
4103
+ "args": {
4104
+ "name": {
4105
+ "description": "the SSH key name",
4106
+ "name": "name",
4107
+ "required": true
4108
+ },
4109
+ "path": {
4110
+ "description": "the path to the public key file",
4111
+ "name": "path",
4112
+ "required": true
4113
+ }
4114
+ },
4115
+ "description": "Add an SSH key to balenaCloud.\n\nAdd an SSH key to the balenaCloud account of the logged in user.\n\nIf `path` is omitted, the command will attempt to read the SSH key from stdin.\n\nAbout SSH keys\nAn \"SSH key\" actually consists of a public/private key pair. A typical name\nfor the private key file is \"id_rsa\", and a typical name for the public key\nfile is \"id_rsa.pub\". Both key files are saved to your computer (with the\nprivate key optionally protected by a password), but only the public key is\nsaved to your balena account. This means that if you change computers or\notherwise lose the private key, you cannot recover the private key through\nyour balena account. You can however add new keys, and delete the old ones.\n\nTo generate a new SSH key pair, a nice guide can be found in GitHub's docs:\nhttps://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent\nSkip the step about adding the key to a GitHub account, and instead add it to\nyour balena account.",
4116
+ "examples": [
4117
+ "$ balena ssh-key add Main ~/.ssh/id_rsa.pub",
4118
+ "$ cat ~/.ssh/id_rsa.pub | balena ssh-key add Main",
4119
+ "# Windows 10 (cmd.exe prompt) example",
4120
+ "$ balena ssh-key add Main %userprofile%.sshid_rsa.pub"
4121
+ ],
4122
+ "flags": {},
4123
+ "hasDynamicHelp": false,
4124
+ "hiddenAliases": [],
4125
+ "id": "ssh-key:add",
4126
+ "pluginAlias": "balena-cli",
4127
+ "pluginName": "balena-cli",
4128
+ "pluginType": "core",
4129
+ "strict": true,
4130
+ "enableJsonFlag": false,
4131
+ "authenticated": true,
4132
+ "isESM": false,
4133
+ "relativePath": [
4134
+ "build",
4135
+ "commands",
4136
+ "ssh-key",
4137
+ "add.js"
4138
+ ]
4139
+ },
4140
+ "ssh-key": {
4141
+ "aliases": [],
4142
+ "args": {
4143
+ "id": {
4144
+ "description": "balenaCloud ID for the SSH key",
4145
+ "name": "id",
4146
+ "required": true
4147
+ }
4148
+ },
4149
+ "description": "Display an SSH key.\n\nDisplay a single SSH key registered in balenaCloud for the logged in user.",
4150
+ "examples": [
4151
+ "$ balena ssh-key 17"
4152
+ ],
4153
+ "flags": {},
4154
+ "hasDynamicHelp": false,
4155
+ "hiddenAliases": [],
4156
+ "id": "ssh-key",
4157
+ "pluginAlias": "balena-cli",
4158
+ "pluginName": "balena-cli",
4159
+ "pluginType": "core",
4160
+ "strict": true,
4161
+ "enableJsonFlag": false,
4162
+ "authenticated": true,
4163
+ "isESM": false,
4164
+ "relativePath": [
4165
+ "build",
4166
+ "commands",
4167
+ "ssh-key",
4168
+ "index.js"
4169
+ ]
4170
+ },
4171
+ "ssh-key:list": {
4172
+ "aliases": [],
4173
+ "args": {},
4174
+ "description": "List the SSH keys in balenaCloud.\n\nList all SSH keys registered in balenaCloud for the logged in user.",
4175
+ "examples": [
4176
+ "$ balena ssh-key list"
4177
+ ],
4178
+ "flags": {},
4179
+ "hasDynamicHelp": false,
4180
+ "hiddenAliases": [],
4181
+ "id": "ssh-key:list",
4182
+ "pluginAlias": "balena-cli",
4183
+ "pluginName": "balena-cli",
4184
+ "pluginType": "core",
4185
+ "strict": true,
4186
+ "enableJsonFlag": false,
4187
+ "authenticated": true,
4188
+ "isESM": false,
4189
+ "relativePath": [
4190
+ "build",
4191
+ "commands",
4192
+ "ssh-key",
4193
+ "list.js"
4194
+ ]
4195
+ },
4196
+ "ssh-key:rm": {
4197
+ "aliases": [],
4198
+ "args": {
4199
+ "id": {
4200
+ "description": "balenaCloud ID for the SSH key",
4201
+ "name": "id",
4202
+ "required": true
4203
+ }
4204
+ },
4205
+ "description": "Remove an SSH key from balenaCloud.\n\nRemove a single SSH key registered in balenaCloud for the logged in user.\n\nThe --yes option may be used to avoid interactive confirmation.",
4206
+ "examples": [
4207
+ "$ balena ssh-key rm 17",
4208
+ "$ balena ssh-key rm 17 --yes"
4209
+ ],
4210
+ "flags": {
4211
+ "yes": {
4212
+ "char": "y",
4213
+ "description": "answer \"yes\" to all questions (non interactive use)",
4214
+ "name": "yes",
4215
+ "allowNo": false,
4216
+ "type": "boolean"
4217
+ }
4218
+ },
4219
+ "hasDynamicHelp": false,
4220
+ "hiddenAliases": [],
4221
+ "id": "ssh-key:rm",
4222
+ "pluginAlias": "balena-cli",
4223
+ "pluginName": "balena-cli",
4224
+ "pluginType": "core",
4225
+ "strict": true,
4226
+ "enableJsonFlag": false,
4227
+ "authenticated": true,
4228
+ "isESM": false,
4229
+ "relativePath": [
4230
+ "build",
4231
+ "commands",
4232
+ "ssh-key",
4233
+ "rm.js"
4234
+ ]
4235
+ },
4077
4236
  "release-asset:delete": {
4078
4237
  "aliases": [],
4079
4238
  "args": {
@@ -4289,165 +4448,6 @@
4289
4448
  "upload.js"
4290
4449
  ]
4291
4450
  },
4292
- "settings": {
4293
- "aliases": [],
4294
- "args": {},
4295
- "description": "Print current settings.\n\nUse this command to display the current balena CLI settings.",
4296
- "examples": [
4297
- "$ balena settings"
4298
- ],
4299
- "flags": {},
4300
- "hasDynamicHelp": false,
4301
- "hiddenAliases": [],
4302
- "id": "settings",
4303
- "pluginAlias": "balena-cli",
4304
- "pluginName": "balena-cli",
4305
- "pluginType": "core",
4306
- "strict": true,
4307
- "enableJsonFlag": false,
4308
- "isESM": false,
4309
- "relativePath": [
4310
- "build",
4311
- "commands",
4312
- "settings",
4313
- "index.js"
4314
- ]
4315
- },
4316
- "ssh-key:add": {
4317
- "aliases": [],
4318
- "args": {
4319
- "name": {
4320
- "description": "the SSH key name",
4321
- "name": "name",
4322
- "required": true
4323
- },
4324
- "path": {
4325
- "description": "the path to the public key file",
4326
- "name": "path",
4327
- "required": true
4328
- }
4329
- },
4330
- "description": "Add an SSH key to balenaCloud.\n\nAdd an SSH key to the balenaCloud account of the logged in user.\n\nIf `path` is omitted, the command will attempt to read the SSH key from stdin.\n\nAbout SSH keys\nAn \"SSH key\" actually consists of a public/private key pair. A typical name\nfor the private key file is \"id_rsa\", and a typical name for the public key\nfile is \"id_rsa.pub\". Both key files are saved to your computer (with the\nprivate key optionally protected by a password), but only the public key is\nsaved to your balena account. This means that if you change computers or\notherwise lose the private key, you cannot recover the private key through\nyour balena account. You can however add new keys, and delete the old ones.\n\nTo generate a new SSH key pair, a nice guide can be found in GitHub's docs:\nhttps://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent\nSkip the step about adding the key to a GitHub account, and instead add it to\nyour balena account.",
4331
- "examples": [
4332
- "$ balena ssh-key add Main ~/.ssh/id_rsa.pub",
4333
- "$ cat ~/.ssh/id_rsa.pub | balena ssh-key add Main",
4334
- "# Windows 10 (cmd.exe prompt) example",
4335
- "$ balena ssh-key add Main %userprofile%.sshid_rsa.pub"
4336
- ],
4337
- "flags": {},
4338
- "hasDynamicHelp": false,
4339
- "hiddenAliases": [],
4340
- "id": "ssh-key:add",
4341
- "pluginAlias": "balena-cli",
4342
- "pluginName": "balena-cli",
4343
- "pluginType": "core",
4344
- "strict": true,
4345
- "enableJsonFlag": false,
4346
- "authenticated": true,
4347
- "isESM": false,
4348
- "relativePath": [
4349
- "build",
4350
- "commands",
4351
- "ssh-key",
4352
- "add.js"
4353
- ]
4354
- },
4355
- "ssh-key": {
4356
- "aliases": [],
4357
- "args": {
4358
- "id": {
4359
- "description": "balenaCloud ID for the SSH key",
4360
- "name": "id",
4361
- "required": true
4362
- }
4363
- },
4364
- "description": "Display an SSH key.\n\nDisplay a single SSH key registered in balenaCloud for the logged in user.",
4365
- "examples": [
4366
- "$ balena ssh-key 17"
4367
- ],
4368
- "flags": {},
4369
- "hasDynamicHelp": false,
4370
- "hiddenAliases": [],
4371
- "id": "ssh-key",
4372
- "pluginAlias": "balena-cli",
4373
- "pluginName": "balena-cli",
4374
- "pluginType": "core",
4375
- "strict": true,
4376
- "enableJsonFlag": false,
4377
- "authenticated": true,
4378
- "isESM": false,
4379
- "relativePath": [
4380
- "build",
4381
- "commands",
4382
- "ssh-key",
4383
- "index.js"
4384
- ]
4385
- },
4386
- "ssh-key:list": {
4387
- "aliases": [],
4388
- "args": {},
4389
- "description": "List the SSH keys in balenaCloud.\n\nList all SSH keys registered in balenaCloud for the logged in user.",
4390
- "examples": [
4391
- "$ balena ssh-key list"
4392
- ],
4393
- "flags": {},
4394
- "hasDynamicHelp": false,
4395
- "hiddenAliases": [],
4396
- "id": "ssh-key:list",
4397
- "pluginAlias": "balena-cli",
4398
- "pluginName": "balena-cli",
4399
- "pluginType": "core",
4400
- "strict": true,
4401
- "enableJsonFlag": false,
4402
- "authenticated": true,
4403
- "isESM": false,
4404
- "relativePath": [
4405
- "build",
4406
- "commands",
4407
- "ssh-key",
4408
- "list.js"
4409
- ]
4410
- },
4411
- "ssh-key:rm": {
4412
- "aliases": [],
4413
- "args": {
4414
- "id": {
4415
- "description": "balenaCloud ID for the SSH key",
4416
- "name": "id",
4417
- "required": true
4418
- }
4419
- },
4420
- "description": "Remove an SSH key from balenaCloud.\n\nRemove a single SSH key registered in balenaCloud for the logged in user.\n\nThe --yes option may be used to avoid interactive confirmation.",
4421
- "examples": [
4422
- "$ balena ssh-key rm 17",
4423
- "$ balena ssh-key rm 17 --yes"
4424
- ],
4425
- "flags": {
4426
- "yes": {
4427
- "char": "y",
4428
- "description": "answer \"yes\" to all questions (non interactive use)",
4429
- "name": "yes",
4430
- "allowNo": false,
4431
- "type": "boolean"
4432
- }
4433
- },
4434
- "hasDynamicHelp": false,
4435
- "hiddenAliases": [],
4436
- "id": "ssh-key:rm",
4437
- "pluginAlias": "balena-cli",
4438
- "pluginName": "balena-cli",
4439
- "pluginType": "core",
4440
- "strict": true,
4441
- "enableJsonFlag": false,
4442
- "authenticated": true,
4443
- "isESM": false,
4444
- "relativePath": [
4445
- "build",
4446
- "commands",
4447
- "ssh-key",
4448
- "rm.js"
4449
- ]
4450
- },
4451
4451
  "support": {
4452
4452
  "aliases": [],
4453
4453
  "args": {
@@ -4509,53 +4509,6 @@
4509
4509
  "index.js"
4510
4510
  ]
4511
4511
  },
4512
- "util:available-drives": {
4513
- "aliases": [],
4514
- "args": {},
4515
- "description": "List available drives.\n\nList available drives which are usable for writing an OS image to.\nDoes not list system drives.",
4516
- "flags": {},
4517
- "hasDynamicHelp": false,
4518
- "hiddenAliases": [],
4519
- "id": "util:available-drives",
4520
- "pluginAlias": "balena-cli",
4521
- "pluginName": "balena-cli",
4522
- "pluginType": "core",
4523
- "strict": true,
4524
- "enableJsonFlag": false,
4525
- "offlineCompatible": true,
4526
- "isESM": false,
4527
- "relativePath": [
4528
- "build",
4529
- "commands",
4530
- "util",
4531
- "available-drives.js"
4532
- ]
4533
- },
4534
- "whoami": {
4535
- "aliases": [],
4536
- "args": {},
4537
- "description": "Display account information for current user.\n\nGet the username and email address of the currently logged in user.",
4538
- "examples": [
4539
- "$ balena whoami"
4540
- ],
4541
- "flags": {},
4542
- "hasDynamicHelp": false,
4543
- "hiddenAliases": [],
4544
- "id": "whoami",
4545
- "pluginAlias": "balena-cli",
4546
- "pluginName": "balena-cli",
4547
- "pluginType": "core",
4548
- "strict": true,
4549
- "enableJsonFlag": false,
4550
- "authenticated": true,
4551
- "isESM": false,
4552
- "relativePath": [
4553
- "build",
4554
- "commands",
4555
- "whoami",
4556
- "index.js"
4557
- ]
4558
- },
4559
4512
  "tag:list": {
4560
4513
  "aliases": [],
4561
4514
  "args": {},
@@ -4775,7 +4728,54 @@
4775
4728
  "tag",
4776
4729
  "set.js"
4777
4730
  ]
4731
+ },
4732
+ "util:available-drives": {
4733
+ "aliases": [],
4734
+ "args": {},
4735
+ "description": "List available drives.\n\nList available drives which are usable for writing an OS image to.\nDoes not list system drives.",
4736
+ "flags": {},
4737
+ "hasDynamicHelp": false,
4738
+ "hiddenAliases": [],
4739
+ "id": "util:available-drives",
4740
+ "pluginAlias": "balena-cli",
4741
+ "pluginName": "balena-cli",
4742
+ "pluginType": "core",
4743
+ "strict": true,
4744
+ "enableJsonFlag": false,
4745
+ "offlineCompatible": true,
4746
+ "isESM": false,
4747
+ "relativePath": [
4748
+ "build",
4749
+ "commands",
4750
+ "util",
4751
+ "available-drives.js"
4752
+ ]
4753
+ },
4754
+ "whoami": {
4755
+ "aliases": [],
4756
+ "args": {},
4757
+ "description": "Display account information for current user.\n\nGet the username and email address of the currently logged in user.",
4758
+ "examples": [
4759
+ "$ balena whoami"
4760
+ ],
4761
+ "flags": {},
4762
+ "hasDynamicHelp": false,
4763
+ "hiddenAliases": [],
4764
+ "id": "whoami",
4765
+ "pluginAlias": "balena-cli",
4766
+ "pluginName": "balena-cli",
4767
+ "pluginType": "core",
4768
+ "strict": true,
4769
+ "enableJsonFlag": false,
4770
+ "authenticated": true,
4771
+ "isESM": false,
4772
+ "relativePath": [
4773
+ "build",
4774
+ "commands",
4775
+ "whoami",
4776
+ "index.js"
4777
+ ]
4778
4778
  }
4779
4779
  },
4780
- "version": "23.2.31"
4780
+ "version": "23.2.32"
4781
4781
  }