Merge pull request from balena-io/update-balena-config-json

Update balena-config-json to rely on the balena-image-fs helpers
This commit is contained in:
Thodoris Greasidis 2025-04-07 15:52:21 +03:00 committed by GitHub
commit 3fb3dd5819
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 98 additions and 88 deletions

160
npm-shrinkwrap.json generated

@ -16,10 +16,10 @@
"@balena/es-version": "^1.0.1",
"@oclif/core": "^4.1.0",
"@sentry/node": "^6.16.1",
"balena-config-json": "^4.2.2",
"balena-config-json": "^4.2.7",
"balena-device-init": "^8.1.3",
"balena-errors": "^4.7.3",
"balena-image-fs": "^7.5.0",
"balena-image-fs": "^7.5.2",
"balena-preload": "^18.0.1",
"balena-sdk": "^21.3.0",
"balena-semver": "^2.3.0",
@ -2517,14 +2517,14 @@
}
},
"node_modules/@inquirer/checkbox/node_modules/@inquirer/core": {
"version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"version": "10.1.10",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.5",
"@inquirer/type": "^3.0.6",
"ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
@ -2545,9 +2545,9 @@
}
},
"node_modules/@inquirer/checkbox/node_modules/@inquirer/type": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
"dev": true,
"license": "MIT",
"engines": {
@ -2787,14 +2787,14 @@
}
},
"node_modules/@inquirer/editor/node_modules/@inquirer/core": {
"version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"version": "10.1.10",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.5",
"@inquirer/type": "^3.0.6",
"ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
@ -2815,9 +2815,9 @@
}
},
"node_modules/@inquirer/editor/node_modules/@inquirer/type": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
"dev": true,
"license": "MIT",
"engines": {
@ -2947,14 +2947,14 @@
}
},
"node_modules/@inquirer/expand/node_modules/@inquirer/core": {
"version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"version": "10.1.10",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.5",
"@inquirer/type": "^3.0.6",
"ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
@ -2975,9 +2975,9 @@
}
},
"node_modules/@inquirer/expand/node_modules/@inquirer/type": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
"dev": true,
"license": "MIT",
"engines": {
@ -3103,14 +3103,14 @@
}
},
"node_modules/@inquirer/number/node_modules/@inquirer/core": {
"version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"version": "10.1.10",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.5",
"@inquirer/type": "^3.0.6",
"ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
@ -3131,9 +3131,9 @@
}
},
"node_modules/@inquirer/number/node_modules/@inquirer/type": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
"dev": true,
"license": "MIT",
"engines": {
@ -3237,14 +3237,14 @@
}
},
"node_modules/@inquirer/password/node_modules/@inquirer/core": {
"version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"version": "10.1.10",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.5",
"@inquirer/type": "^3.0.6",
"ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
@ -3265,9 +3265,9 @@
}
},
"node_modules/@inquirer/password/node_modules/@inquirer/type": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
"dev": true,
"license": "MIT",
"engines": {
@ -3378,14 +3378,14 @@
}
},
"node_modules/@inquirer/prompts/node_modules/@inquirer/confirm": {
"version": "5.1.8",
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.8.tgz",
"integrity": "sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==",
"version": "5.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.9.tgz",
"integrity": "sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/core": "^10.1.9",
"@inquirer/type": "^3.0.5"
"@inquirer/core": "^10.1.10",
"@inquirer/type": "^3.0.6"
},
"engines": {
"node": ">=18"
@ -3400,14 +3400,14 @@
}
},
"node_modules/@inquirer/prompts/node_modules/@inquirer/core": {
"version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"version": "10.1.10",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.5",
"@inquirer/type": "^3.0.6",
"ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
@ -3428,14 +3428,14 @@
}
},
"node_modules/@inquirer/prompts/node_modules/@inquirer/input": {
"version": "4.1.8",
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.8.tgz",
"integrity": "sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q==",
"version": "4.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.9.tgz",
"integrity": "sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/core": "^10.1.9",
"@inquirer/type": "^3.0.5"
"@inquirer/core": "^10.1.10",
"@inquirer/type": "^3.0.6"
},
"engines": {
"node": ">=18"
@ -3450,15 +3450,15 @@
}
},
"node_modules/@inquirer/prompts/node_modules/@inquirer/select": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.1.0.tgz",
"integrity": "sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA==",
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.1.1.tgz",
"integrity": "sha512-IUXzzTKVdiVNMA+2yUvPxWsSgOG4kfX93jOM4Zb5FgujeInotv5SPIJVeXQ+fO4xu7tW8VowFhdG5JRmmCyQ1Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/core": "^10.1.9",
"@inquirer/core": "^10.1.10",
"@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.5",
"@inquirer/type": "^3.0.6",
"ansi-escapes": "^4.3.2",
"yoctocolors-cjs": "^2.1.2"
},
@ -3475,9 +3475,9 @@
}
},
"node_modules/@inquirer/prompts/node_modules/@inquirer/type": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
"dev": true,
"license": "MIT",
"engines": {
@ -3587,14 +3587,14 @@
}
},
"node_modules/@inquirer/rawlist/node_modules/@inquirer/core": {
"version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"version": "10.1.10",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.5",
"@inquirer/type": "^3.0.6",
"ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
@ -3615,9 +3615,9 @@
}
},
"node_modules/@inquirer/rawlist/node_modules/@inquirer/type": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
"dev": true,
"license": "MIT",
"engines": {
@ -3722,14 +3722,14 @@
}
},
"node_modules/@inquirer/search/node_modules/@inquirer/core": {
"version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"version": "10.1.10",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.5",
"@inquirer/type": "^3.0.6",
"ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
@ -3750,9 +3750,9 @@
}
},
"node_modules/@inquirer/search/node_modules/@inquirer/type": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
"dev": true,
"license": "MIT",
"engines": {
@ -7364,12 +7364,12 @@
}
},
"node_modules/balena-config-json": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/balena-config-json/-/balena-config-json-4.2.2.tgz",
"integrity": "sha512-dI/vZ+1Zgz8X/PEBEtBqGqi4eWDtD0e05LAOAIfdTtbYJK5DJhMSq7Is3IKDWgZNejDI+NpbDmRok45tqCmiag==",
"version": "4.2.7",
"resolved": "https://registry.npmjs.org/balena-config-json/-/balena-config-json-4.2.7.tgz",
"integrity": "sha512-cnRsRyKiPojETc/Xq9yN25d78ihGbFp1lJPeGzVKcuNn2PKZ6f6N3SMNuJA7BbFNMKrDhpEhGn274jCWklskaA==",
"license": "Apache-2.0",
"dependencies": {
"balena-image-fs": "^7.4.0",
"balena-image-fs": "^7.5.0",
"file-disk": "^8.0.1",
"partitioninfo": "^6.0.2"
}
@ -7428,9 +7428,9 @@
}
},
"node_modules/balena-image-fs": {
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/balena-image-fs/-/balena-image-fs-7.5.0.tgz",
"integrity": "sha512-JVydPTG7hiaX6uAGxzc2HWlVASqXAnb1Ypg1zOU8M6H1US6cbcv3L2ZixHla9yzQnZOy4+SLgV4wc9A4T0CPcQ==",
"version": "7.5.2",
"resolved": "https://registry.npmjs.org/balena-image-fs/-/balena-image-fs-7.5.2.tgz",
"integrity": "sha512-bOxnUaJWA26wNlOMc5QScBvqGLQUWw/K0GK/VDgu5tGsZdN4rtdIPSbhXcKBw+0gcNPUumYDtdDPipaOH1kREA==",
"license": "Apache-2.0",
"dependencies": {
"ext2fs": "^4.2.4",

@ -196,10 +196,10 @@
"@balena/es-version": "^1.0.1",
"@oclif/core": "^4.1.0",
"@sentry/node": "^6.16.1",
"balena-config-json": "^4.2.2",
"balena-config-json": "^4.2.7",
"balena-device-init": "^8.1.3",
"balena-errors": "^4.7.3",
"balena-image-fs": "^7.5.0",
"balena-image-fs": "^7.5.2",
"balena-preload": "^18.0.1",
"balena-sdk": "^21.3.0",
"balena-semver": "^2.3.0",

@ -64,7 +64,12 @@ export default class ConfigInjectCmd extends Command {
);
const config = await import('balena-config-json');
await config.write(drive, '', configJSON);
await config.write(
drive,
// Will be removed in the next major of balena-config-json
undefined,
configJSON,
);
console.info('Done');
}

@ -54,7 +54,7 @@ export default class ConfigReadCmd extends Command {
await safeUmount(drive);
const config = await import('balena-config-json');
const configJSON = await config.read(drive, '');
const configJSON = await config.read(drive);
if (options.json) {
console.log(JSON.stringify(configJSON, null, 4));

@ -62,7 +62,7 @@ export default class ConfigReconfigureCmd extends Command {
await safeUmount(drive);
const config = await import('balena-config-json');
const { uuid } = await config.read(drive, '');
const { uuid } = await config.read(drive);
await safeUmount(drive);
if (!uuid) {

@ -64,14 +64,19 @@ export default class ConfigWriteCmd extends Command {
await safeUmount(drive);
const config = await import('balena-config-json');
const configJSON = await config.read(drive, '');
const configJSON = await config.read(drive);
console.info(`Setting ${params.key} to ${params.value}`);
ConfigWriteCmd.updateConfigJson(configJSON, params.key, params.value);
await denyMount(drive, async () => {
await safeUmount(drive);
await config.write(drive, '', configJSON);
await config.write(
drive,
// Will be removed in the next major of balena-config-json
undefined,
configJSON,
);
});
console.info('Done');

@ -192,7 +192,7 @@ Can be repeated to add multiple certificates.\
// Next verify that config.json enables secureboot.
if (isSecureBoot) {
const { read } = await import('balena-config-json');
const config = await read(params.image, '');
const config = await read(params.image);
if (config.installer?.secureboot === true) {
throw new ExpectedError("Can't preload image with secure boot enabled");
}