@adinsure-ops/ops-cli
Version:
Operations CLI for working with AdInsure
53 lines (52 loc) • 1.98 kB
JavaScript
import { __awaiter } from "tslib";
import { Args, Flags } from '@oclif/core';
import fs from 'fs-extra';
import { parse as yamlParse, stringify as yamlStringify } from 'yaml';
import CommandBase from '../../command.base.js';
class DockerUpdateImageVersion extends CommandBase {
run() {
const _super = Object.create(null, {
run: { get: () => super.run }
});
return __awaiter(this, void 0, void 0, function* () {
_super.run.call(this);
const { args, flags } = yield this.parse(DockerUpdateImageVersion);
try {
const parsedYaml = yamlParse(fs.readFileSync(flags['file-path'], 'utf8'));
for (const service of flags.services) {
const image = parsedYaml.services[service].image.split(':');
image[1] = args.version;
parsedYaml.services[service].image = image.join(':');
}
fs.writeFileSync(flags['file-path'], yamlStringify(parsedYaml));
// eslint-disable-next-line @typescript-eslint/no-explicit-any
}
catch (error) {
this.error(error.message);
}
});
}
}
DockerUpdateImageVersion.description = 'update docker image version docker compose file';
DockerUpdateImageVersion.usage = 'docker:update-image-version <tag>';
DockerUpdateImageVersion.examples = [
`$ ops docker:update-image-version 17.0.0 --service server client`,
];
DockerUpdateImageVersion.args = {
version: Args.string({
required: true,
description: 'Version',
}),
};
DockerUpdateImageVersion.flags = {
services: Flags.string({
required: true,
description: 'list of services to update',
multiple: true,
}),
'file-path': Flags.string({
default: './docker-compose.yml',
description: 'list of services to update',
}),
};
export default DockerUpdateImageVersion;