mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-04-24 21:09:54 +00:00
Merge pull request #1826 from balena-io/update-typescript
Update typescript to 3.9
This commit is contained in:
commit
08d5a77734
@ -54,110 +54,113 @@ const deployProject = function(docker, logger, composeOpts, opts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find which services use images that already exist locally
|
// find which services use images that already exist locally
|
||||||
return Promise.map(project.descriptors, function(d) {
|
return (
|
||||||
// unconditionally build (or pull) if explicitly requested
|
Promise.map(project.descriptors, function(d) {
|
||||||
if (opts.shouldPerformBuild) {
|
// unconditionally build (or pull) if explicitly requested
|
||||||
return d;
|
if (opts.shouldPerformBuild) {
|
||||||
}
|
return d;
|
||||||
return docker
|
|
||||||
.getImage(typeof d.image === 'string' ? d.image : d.image.tag)
|
|
||||||
.inspect()
|
|
||||||
.return(d.serviceName)
|
|
||||||
.catchReturn();
|
|
||||||
})
|
|
||||||
.filter(d => !!d)
|
|
||||||
.then(function(servicesToSkip) {
|
|
||||||
// multibuild takes in a composition and always attempts to
|
|
||||||
// build or pull all services. we workaround that here by
|
|
||||||
// passing a modified composition.
|
|
||||||
const compositionToBuild = _.cloneDeep(project.composition);
|
|
||||||
compositionToBuild.services = _.omit(
|
|
||||||
compositionToBuild.services,
|
|
||||||
servicesToSkip,
|
|
||||||
);
|
|
||||||
if (_.size(compositionToBuild.services) === 0) {
|
|
||||||
logger.logInfo(
|
|
||||||
'Everything is up to date (use --build to force a rebuild)',
|
|
||||||
);
|
|
||||||
return {};
|
|
||||||
}
|
}
|
||||||
return compose
|
return docker
|
||||||
.buildProject(
|
.getImage(typeof d.image === 'string' ? d.image : d.image.tag)
|
||||||
docker,
|
.inspect()
|
||||||
logger,
|
.return(d.serviceName)
|
||||||
project.path,
|
.catchReturn();
|
||||||
project.name,
|
|
||||||
compositionToBuild,
|
|
||||||
opts.app.arch,
|
|
||||||
opts.app.device_type,
|
|
||||||
opts.buildEmulated,
|
|
||||||
opts.buildOpts,
|
|
||||||
composeOpts.inlineLogs,
|
|
||||||
opts.convertEol,
|
|
||||||
composeOpts.dockerfilePath,
|
|
||||||
composeOpts.nogitignore,
|
|
||||||
)
|
|
||||||
.then(builtImages => _.keyBy(builtImages, 'serviceName'));
|
|
||||||
})
|
})
|
||||||
.then(builtImages =>
|
.filter(d => !!d)
|
||||||
project.descriptors.map(
|
.then(function(servicesToSkip) {
|
||||||
d =>
|
// multibuild takes in a composition and always attempts to
|
||||||
builtImages[d.serviceName] ?? {
|
// build or pull all services. we workaround that here by
|
||||||
serviceName: d.serviceName,
|
// passing a modified composition.
|
||||||
name: typeof d.image === 'string' ? d.image : d.image.tag,
|
const compositionToBuild = _.cloneDeep(project.composition);
|
||||||
logs: 'Build skipped; image for service already exists.',
|
compositionToBuild.services = _.omit(
|
||||||
props: {},
|
compositionToBuild.services,
|
||||||
},
|
servicesToSkip,
|
||||||
),
|
|
||||||
)
|
|
||||||
.then(function(images) {
|
|
||||||
if (opts.app.application_type?.[0]?.is_legacy) {
|
|
||||||
const { deployLegacy } = require('../utils/deploy-legacy');
|
|
||||||
|
|
||||||
const msg = getChalk().yellow(
|
|
||||||
'Target application requires legacy deploy method.',
|
|
||||||
);
|
);
|
||||||
logger.logWarn(msg);
|
if (_.size(compositionToBuild.services) === 0) {
|
||||||
|
logger.logInfo(
|
||||||
return Promise.join(
|
'Everything is up to date (use --build to force a rebuild)',
|
||||||
docker,
|
);
|
||||||
logger,
|
return {};
|
||||||
sdk.auth.getToken(),
|
}
|
||||||
sdk.auth.whoami(),
|
return compose
|
||||||
sdk.settings.get('balenaUrl'),
|
.buildProject(
|
||||||
{
|
|
||||||
// opts.appName may be prefixed by 'owner/', unlike opts.app.app_name
|
|
||||||
appName: opts.appName,
|
|
||||||
imageName: images[0].name,
|
|
||||||
buildLogs: images[0].logs,
|
|
||||||
shouldUploadLogs: opts.shouldUploadLogs,
|
|
||||||
},
|
|
||||||
deployLegacy,
|
|
||||||
).then(releaseId =>
|
|
||||||
// @ts-ignore releaseId should be inferred as a number because that's what deployLegacy is
|
|
||||||
// typed as returning but the .js type-checking doesn't manage to infer it correctly due to
|
|
||||||
// Promise.join typings
|
|
||||||
sdk.models.release.get(releaseId, { $select: ['commit'] }),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return Promise.join(
|
|
||||||
sdk.auth.getUserId(),
|
|
||||||
sdk.auth.getToken(),
|
|
||||||
sdk.settings.get('apiUrl'),
|
|
||||||
(userId, auth, apiEndpoint) =>
|
|
||||||
compose.deployProject(
|
|
||||||
docker,
|
docker,
|
||||||
logger,
|
logger,
|
||||||
project.composition,
|
project.path,
|
||||||
images,
|
project.name,
|
||||||
opts.app.id,
|
compositionToBuild,
|
||||||
userId,
|
opts.app.arch,
|
||||||
`Bearer ${auth}`,
|
opts.app.device_type,
|
||||||
apiEndpoint,
|
opts.buildEmulated,
|
||||||
!opts.shouldUploadLogs,
|
opts.buildOpts,
|
||||||
),
|
composeOpts.inlineLogs,
|
||||||
);
|
opts.convertEol,
|
||||||
});
|
composeOpts.dockerfilePath,
|
||||||
|
composeOpts.nogitignore,
|
||||||
|
)
|
||||||
|
.then(builtImages => _.keyBy(builtImages, 'serviceName'));
|
||||||
|
})
|
||||||
|
.then(builtImages =>
|
||||||
|
project.descriptors.map(
|
||||||
|
d =>
|
||||||
|
builtImages[d.serviceName] ?? {
|
||||||
|
serviceName: d.serviceName,
|
||||||
|
name: typeof d.image === 'string' ? d.image : d.image.tag,
|
||||||
|
logs: 'Build skipped; image for service already exists.',
|
||||||
|
props: {},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
// @ts-ignore slightly different return types of partial vs non-partial release
|
||||||
|
.then(function(images) {
|
||||||
|
if (opts.app.application_type?.[0]?.is_legacy) {
|
||||||
|
const { deployLegacy } = require('../utils/deploy-legacy');
|
||||||
|
|
||||||
|
const msg = getChalk().yellow(
|
||||||
|
'Target application requires legacy deploy method.',
|
||||||
|
);
|
||||||
|
logger.logWarn(msg);
|
||||||
|
|
||||||
|
return Promise.join(
|
||||||
|
docker,
|
||||||
|
logger,
|
||||||
|
sdk.auth.getToken(),
|
||||||
|
sdk.auth.whoami(),
|
||||||
|
sdk.settings.get('balenaUrl'),
|
||||||
|
{
|
||||||
|
// opts.appName may be prefixed by 'owner/', unlike opts.app.app_name
|
||||||
|
appName: opts.appName,
|
||||||
|
imageName: images[0].name,
|
||||||
|
buildLogs: images[0].logs,
|
||||||
|
shouldUploadLogs: opts.shouldUploadLogs,
|
||||||
|
},
|
||||||
|
deployLegacy,
|
||||||
|
).then(releaseId =>
|
||||||
|
// @ts-ignore releaseId should be inferred as a number because that's what deployLegacy is
|
||||||
|
// typed as returning but the .js type-checking doesn't manage to infer it correctly due to
|
||||||
|
// Promise.join typings
|
||||||
|
sdk.models.release.get(releaseId, { $select: ['commit'] }),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return Promise.join(
|
||||||
|
sdk.auth.getUserId(),
|
||||||
|
sdk.auth.getToken(),
|
||||||
|
sdk.settings.get('apiUrl'),
|
||||||
|
(userId, auth, apiEndpoint) =>
|
||||||
|
compose.deployProject(
|
||||||
|
docker,
|
||||||
|
logger,
|
||||||
|
project.composition,
|
||||||
|
images,
|
||||||
|
opts.app.id,
|
||||||
|
userId,
|
||||||
|
`Bearer ${auth}`,
|
||||||
|
apiEndpoint,
|
||||||
|
!opts.shouldUploadLogs,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
})
|
||||||
|
);
|
||||||
})
|
})
|
||||||
.then(function(release) {
|
.then(function(release) {
|
||||||
logger.outputDeferredMessages();
|
logger.outputDeferredMessages();
|
||||||
|
@ -195,7 +195,7 @@ function originalTarDirectory(dir, param) {
|
|||||||
|
|
||||||
const getFiles = () =>
|
const getFiles = () =>
|
||||||
// @ts-ignore `klaw` returns a `Walker` which is close enough to a stream to work but ts complains
|
// @ts-ignore `klaw` returns a `Walker` which is close enough to a stream to work but ts complains
|
||||||
streamToPromise(klaw(dir))
|
Promise.resolve(streamToPromise(klaw(dir)))
|
||||||
.filter(item => !item.stats.isDirectory())
|
.filter(item => !item.stats.isDirectory())
|
||||||
.map(item => item.path);
|
.map(item => item.path);
|
||||||
|
|
||||||
|
36
npm-shrinkwrap.json
generated
36
npm-shrinkwrap.json
generated
@ -141,12 +141,6 @@
|
|||||||
"integrity": "sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ==",
|
"integrity": "sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"coffee-script": {
|
|
||||||
"version": "1.12.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
|
|
||||||
"integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"glob": {
|
"glob": {
|
||||||
"version": "7.1.6",
|
"version": "7.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||||
@ -873,9 +867,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/bluebird": {
|
"@types/bluebird": {
|
||||||
"version": "3.5.30",
|
"version": "3.5.31",
|
||||||
"resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.30.tgz",
|
"resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.31.tgz",
|
||||||
"integrity": "sha512-8LhzvcjIoqoi1TghEkRMkbbmM+jhHnBokPGkJWjclMK+Ks0MxEBow3/p2/iFTZ+OIbJHQDSfpgdZEb+af3gfVw=="
|
"integrity": "sha512-0PKlnDIxOh3xJHwJpVONR2PP11LhdM+QYiLJGLIbzMqRwLAPxN6lQar2RpdRhfIEh/HjVMgMdhHWJA0CgC5X6w=="
|
||||||
},
|
},
|
||||||
"@types/body-parser": {
|
"@types/body-parser": {
|
||||||
"version": "1.19.0",
|
"version": "1.19.0",
|
||||||
@ -3482,6 +3476,12 @@
|
|||||||
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
|
||||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
|
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
|
||||||
},
|
},
|
||||||
|
"coffee-script": {
|
||||||
|
"version": "1.12.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
|
||||||
|
"integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"coffeelint": {
|
"coffeelint": {
|
||||||
"version": "1.16.2",
|
"version": "1.16.2",
|
||||||
"resolved": "https://registry.npmjs.org/coffeelint/-/coffeelint-1.16.2.tgz",
|
"resolved": "https://registry.npmjs.org/coffeelint/-/coffeelint-1.16.2.tgz",
|
||||||
@ -16498,9 +16498,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"source-map-support": {
|
"source-map-support": {
|
||||||
"version": "0.5.17",
|
"version": "0.5.19",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.17.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
|
||||||
"integrity": "sha512-bwdKOBZ5L0gFRh4KOxNap/J/MpvX9Yxsq9lFDx65s3o7F/NiHy7JRaGIS8MwW6tZPAq9UXE207Il0cfcb5yu/Q==",
|
"integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"buffer-from": "^1.0.0",
|
"buffer-from": "^1.0.0",
|
||||||
"source-map": "^0.6.0"
|
"source-map": "^0.6.0"
|
||||||
@ -17450,9 +17450,9 @@
|
|||||||
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
|
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
|
||||||
},
|
},
|
||||||
"ts-node": {
|
"ts-node": {
|
||||||
"version": "8.9.0",
|
"version": "8.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.1.tgz",
|
||||||
"integrity": "sha512-rwkXfOs9zmoHrV8xE++dmNd6ZIS+nmHHCxcV53ekGJrxFLMbp+pizpPS07ARvhwneCIECPppOwbZHvw9sQtU4w==",
|
"integrity": "sha512-bdNz1L4ekHiJul6SHtZWs1ujEKERJnHs4HxN7rjTyyVOFf3HaJ6sLqe6aPG62XTzAB/63pKRh5jTSWL0D7bsvw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"arg": "^4.1.0",
|
"arg": "^4.1.0",
|
||||||
"diff": "^4.0.1",
|
"diff": "^4.0.1",
|
||||||
@ -17619,9 +17619,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "3.8.3",
|
"version": "3.9.2",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.2.tgz",
|
||||||
"integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==",
|
"integrity": "sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"udif": {
|
"udif": {
|
||||||
|
@ -100,7 +100,7 @@
|
|||||||
"@octokit/plugin-throttling": "^2.7.1",
|
"@octokit/plugin-throttling": "^2.7.1",
|
||||||
"@octokit/rest": "^16.43.1",
|
"@octokit/rest": "^16.43.1",
|
||||||
"@types/archiver": "^2.1.3",
|
"@types/archiver": "^2.1.3",
|
||||||
"@types/bluebird": "^3.5.30",
|
"@types/bluebird": "^3.5.31",
|
||||||
"@types/body-parser": "^1.19.0",
|
"@types/body-parser": "^1.19.0",
|
||||||
"@types/chai": "^4.2.11",
|
"@types/chai": "^4.2.11",
|
||||||
"@types/chai-as-promised": "^7.1.1",
|
"@types/chai-as-promised": "^7.1.1",
|
||||||
@ -160,8 +160,8 @@
|
|||||||
"rewire": "^4.0.1",
|
"rewire": "^4.0.1",
|
||||||
"simple-git": "^1.131.0",
|
"simple-git": "^1.131.0",
|
||||||
"sinon": "^7.5.0",
|
"sinon": "^7.5.0",
|
||||||
"ts-node": "^8.9.0",
|
"ts-node": "^8.10.1",
|
||||||
"typescript": "^3.8.3"
|
"typescript": "^3.9.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@balena/dockerignore": "^1.0.2",
|
"@balena/dockerignore": "^1.0.2",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user