@enspirit/emb
Version:
A replacement for our Makefile-for-monorepos
58 lines (57 loc) • 2.01 kB
JavaScript
import { Args, Flags } from '@oclif/core';
import { FlavoredCommand, getContext } from '../index.js';
import { ComposeUpOperation } from '../../docker/index.js';
import { BuildResourcesOperation } from '../../monorepo/operations/resources/BuildResourcesOperation.js';
export default class UpCommand extends FlavoredCommand {
static description = 'Start the whole project.';
static enableJsonFlag = true;
static examples = ['<%= config.bin %> <%= command.id %>'];
static flags = {
force: Flags.boolean({
char: 'f',
default: false,
description: 'Bypass caches, force the recreation of containers, etc',
name: 'force',
}),
};
static args = {
component: Args.string({
name: 'component',
description: 'The component(s) to build and start',
}),
};
static strict = false;
async run() {
const { flags, argv } = await this.parse(UpCommand);
const { monorepo } = getContext();
const buildFlags = [];
if (flags.force) {
buildFlags.push('--force');
}
let components;
let resources;
if (argv.length > 0) {
components =
argv.length > 0
? argv.map((name) => monorepo.component(name))
: monorepo.components;
resources = components.reduce((resources, component) => {
return [
...resources,
...Object.values(component.resources).map((r) => r.id),
];
}, []);
}
else {
resources = monorepo.resources.map((r) => r.id);
}
await monorepo.run(new BuildResourcesOperation(), {
force: flags.force,
resources,
});
await monorepo.run(new ComposeUpOperation(), {
forceRecreate: flags.force,
components: components?.map((c) => c.name),
});
}
}