@enspirit/emb 0.3.2 → 0.4.0
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.
- package/README.md +1 -1
- package/dist/src/cli/commands/down.js +2 -2
- package/dist/src/docker/compose/operations/ComposeDownOperation.d.ts +3 -2
- package/dist/src/docker/compose/operations/ComposeDownOperation.js +4 -2
- package/dist/src/docker/compose/operations/ComposeUpOperation.js +2 -2
- package/dist/src/docker/operations/images/BuildImageOperation.js +12 -7
- package/dist/src/monorepo/monorepo.js +0 -2
- package/dist/src/monorepo/operations/shell/ExecuteLocalCommandOperation.d.ts +3 -2
- package/dist/src/monorepo/operations/shell/ExecuteLocalCommandOperation.js +4 -1
- package/dist/src/monorepo/operations/tasks/RunTasksOperation.d.ts +1 -1
- package/dist/src/monorepo/operations/tasks/RunTasksOperation.js +9 -4
- package/oclif.manifest.json +84 -84
- package/package.json +30 -9
package/README.md
CHANGED
|
@@ -11,8 +11,8 @@ export default class DownCommand extends FlavoredCommand {
|
|
|
11
11
|
const runner = new Listr([
|
|
12
12
|
{
|
|
13
13
|
rendererOptions: { persistentOutput: true },
|
|
14
|
-
async task() {
|
|
15
|
-
return monorepo.run(new ComposeDownOperation(), {});
|
|
14
|
+
async task(ctx, task) {
|
|
15
|
+
return monorepo.run(new ComposeDownOperation(task.stdout()), {});
|
|
16
16
|
},
|
|
17
17
|
title: 'Stopping project',
|
|
18
18
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Readable } from 'node:stream';
|
|
1
|
+
import { Readable, Writable } from 'node:stream';
|
|
2
2
|
import * as z from 'zod';
|
|
3
3
|
import { AbstractOperation } from '../../../operations/index.js';
|
|
4
4
|
/**
|
|
@@ -6,7 +6,8 @@ import { AbstractOperation } from '../../../operations/index.js';
|
|
|
6
6
|
*/
|
|
7
7
|
declare const schema: z.ZodOptional<z.ZodObject<{}, z.core.$strip>>;
|
|
8
8
|
export declare class ComposeDownOperation extends AbstractOperation<typeof schema, Readable> {
|
|
9
|
-
|
|
9
|
+
protected out: Writable;
|
|
10
|
+
constructor(out: Writable);
|
|
10
11
|
protected _run(_input: z.input<typeof schema>): Promise<Readable>;
|
|
11
12
|
}
|
|
12
13
|
export {};
|
|
@@ -7,13 +7,15 @@ import { AbstractOperation } from '../../../operations/index.js';
|
|
|
7
7
|
*/
|
|
8
8
|
const schema = z.object({}).optional();
|
|
9
9
|
export class ComposeDownOperation extends AbstractOperation {
|
|
10
|
-
|
|
10
|
+
out;
|
|
11
|
+
constructor(out) {
|
|
11
12
|
super(schema);
|
|
13
|
+
this.out = out;
|
|
12
14
|
}
|
|
13
15
|
async _run(_input) {
|
|
14
16
|
const { monorepo } = getContext();
|
|
15
17
|
const command = ['docker', 'compose', 'down'];
|
|
16
|
-
return monorepo.run(new ExecuteLocalCommandOperation(), {
|
|
18
|
+
return monorepo.run(new ExecuteLocalCommandOperation(this.out), {
|
|
17
19
|
script: command.join(' '),
|
|
18
20
|
workingDir: monorepo.rootDir,
|
|
19
21
|
});
|
|
@@ -26,8 +26,8 @@ export class ComposeUpOperation extends AbstractOperation {
|
|
|
26
26
|
}
|
|
27
27
|
manager.add([
|
|
28
28
|
{
|
|
29
|
-
async task() {
|
|
30
|
-
return monorepo.run(new ExecuteLocalCommandOperation(), {
|
|
29
|
+
async task(ctx, task) {
|
|
30
|
+
return monorepo.run(new ExecuteLocalCommandOperation(task.stdout()), {
|
|
31
31
|
script: command.join(' '),
|
|
32
32
|
workingDir: monorepo.rootDir,
|
|
33
33
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PassThrough } from 'node:stream';
|
|
1
2
|
import * as z from 'zod';
|
|
2
3
|
import { decodeBuildkitStatusResponse } from '../../index.js';
|
|
3
4
|
import { AbstractOperation } from '../../../operations/index.js';
|
|
@@ -36,8 +37,13 @@ export class BuildImageOperation extends AbstractOperation {
|
|
|
36
37
|
this.out = out;
|
|
37
38
|
}
|
|
38
39
|
async _run(input) {
|
|
39
|
-
const
|
|
40
|
-
this.
|
|
40
|
+
const tee = new PassThrough();
|
|
41
|
+
const logFile = await this.context.monorepo.store.createWriteStream(`logs/docker/build/${input.tag}.log`);
|
|
42
|
+
tee.pipe(logFile);
|
|
43
|
+
if (this.out) {
|
|
44
|
+
tee.pipe(this.out);
|
|
45
|
+
}
|
|
46
|
+
tee.write('Sending build context to Docker\n');
|
|
41
47
|
const stream = await this.context.docker.buildImage({
|
|
42
48
|
context: input.context,
|
|
43
49
|
src: [...input.src],
|
|
@@ -49,22 +55,21 @@ export class BuildImageOperation extends AbstractOperation {
|
|
|
49
55
|
target: input.target,
|
|
50
56
|
version: '2',
|
|
51
57
|
});
|
|
52
|
-
|
|
58
|
+
tee.write('Starting build\n');
|
|
53
59
|
return new Promise((resolve, reject) => {
|
|
54
60
|
this.context.docker.modem.followProgress(stream, (err, traces) => {
|
|
55
|
-
|
|
61
|
+
// logFile.close();
|
|
56
62
|
return err ? reject(err) : resolve(traces);
|
|
57
63
|
}, async (trace) => {
|
|
58
64
|
if (trace.error) {
|
|
59
|
-
|
|
65
|
+
// logFile.close();
|
|
60
66
|
reject(new Error(trace.error));
|
|
61
67
|
}
|
|
62
68
|
else {
|
|
63
69
|
try {
|
|
64
70
|
const { vertexes } = await decodeBuildkitStatusResponse(trace.aux);
|
|
65
71
|
vertexes.forEach((v) => {
|
|
66
|
-
|
|
67
|
-
this.out?.write(v.name + '\n');
|
|
72
|
+
tee.write(v.name + '\n');
|
|
68
73
|
});
|
|
69
74
|
}
|
|
70
75
|
catch (error) {
|
|
@@ -165,7 +165,6 @@ export class Monorepo {
|
|
|
165
165
|
return operation.run(args);
|
|
166
166
|
}
|
|
167
167
|
async expandPatches(patches) {
|
|
168
|
-
console.log('PATCHES', patches);
|
|
169
168
|
const expanded = Promise.all(patches.map(async (patch) => {
|
|
170
169
|
if (!('value' in patch)) {
|
|
171
170
|
return patch;
|
|
@@ -175,7 +174,6 @@ export class Monorepo {
|
|
|
175
174
|
value: await this.expand(patch.value),
|
|
176
175
|
};
|
|
177
176
|
}));
|
|
178
|
-
console.log('EXPANDED', patches);
|
|
179
177
|
return expanded;
|
|
180
178
|
}
|
|
181
179
|
async withFlavor(flavorName) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Readable } from 'node:stream';
|
|
1
|
+
import { Readable, Writable } from 'node:stream';
|
|
2
2
|
import * as z from 'zod';
|
|
3
3
|
import { AbstractOperation } from '../../../operations/index.js';
|
|
4
4
|
/**
|
|
@@ -10,7 +10,8 @@ declare const schema: z.ZodObject<{
|
|
|
10
10
|
workingDir: z.ZodOptional<z.ZodString>;
|
|
11
11
|
}, z.core.$strip>;
|
|
12
12
|
export declare class ExecuteLocalCommandOperation extends AbstractOperation<typeof schema, Readable> {
|
|
13
|
-
|
|
13
|
+
protected out: Writable;
|
|
14
|
+
constructor(out: Writable);
|
|
14
15
|
protected _run(input: z.input<typeof schema>): Promise<Readable>;
|
|
15
16
|
}
|
|
16
17
|
export {};
|
|
@@ -16,8 +16,10 @@ const schema = z.object({
|
|
|
16
16
|
.describe('The working directory for the exec process inside the container'),
|
|
17
17
|
});
|
|
18
18
|
export class ExecuteLocalCommandOperation extends AbstractOperation {
|
|
19
|
-
|
|
19
|
+
out;
|
|
20
|
+
constructor(out) {
|
|
20
21
|
super(schema);
|
|
22
|
+
this.out = out;
|
|
21
23
|
}
|
|
22
24
|
async _run(input) {
|
|
23
25
|
const process = execa(input.script, {
|
|
@@ -25,6 +27,7 @@ export class ExecuteLocalCommandOperation extends AbstractOperation {
|
|
|
25
27
|
cwd: input.workingDir,
|
|
26
28
|
shell: true,
|
|
27
29
|
});
|
|
30
|
+
process.all.pipe(this.out);
|
|
28
31
|
return process.all;
|
|
29
32
|
}
|
|
30
33
|
}
|
|
@@ -16,5 +16,5 @@ export type TaskWithScript = TaskInfo & {
|
|
|
16
16
|
export declare class RunTasksOperation implements IOperation<RunTasksOperationParams, Array<TaskInfo>> {
|
|
17
17
|
run(params: RunTasksOperationParams): Promise<Array<TaskInfo>>;
|
|
18
18
|
protected runDocker(task: TaskWithScript, out?: Writable): Promise<void>;
|
|
19
|
-
protected runLocal(task: TaskWithScript): Promise<import("stream").Readable>;
|
|
19
|
+
protected runLocal(task: TaskWithScript, out: Writable): Promise<import("stream").Readable>;
|
|
20
20
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getContext } from '../../../index.js';
|
|
2
|
+
import { PassThrough } from 'node:stream';
|
|
2
3
|
import { ComposeExecOperation } from '../../../docker/index.js';
|
|
3
4
|
import { EMBCollection, findRunOrder, taskManagerFactory, } from '../../index.js';
|
|
4
5
|
import { ExecuteLocalCommandOperation } from '../index.js';
|
|
@@ -33,12 +34,16 @@ export class RunTasksOperation {
|
|
|
33
34
|
if (executor === ExecutorType.container && !task.component) {
|
|
34
35
|
throw new Error('Cannot use the container executor with global tasks');
|
|
35
36
|
}
|
|
37
|
+
const tee = new PassThrough();
|
|
38
|
+
const logFile = await monorepo.store.createWriteStream(`logs/tasks/${task.id}.logs`);
|
|
39
|
+
tee.pipe(listrTask.stdout());
|
|
40
|
+
tee.pipe(logFile);
|
|
36
41
|
switch (executor) {
|
|
37
42
|
case ExecutorType.container: {
|
|
38
|
-
return this.runDocker(task,
|
|
43
|
+
return this.runDocker(task, tee);
|
|
39
44
|
}
|
|
40
45
|
case ExecutorType.local: {
|
|
41
|
-
return this.runLocal(task);
|
|
46
|
+
return this.runLocal(task, tee);
|
|
42
47
|
}
|
|
43
48
|
default: {
|
|
44
49
|
throw new Error(`Unssuported executor type: ${executor}`);
|
|
@@ -60,12 +65,12 @@ export class RunTasksOperation {
|
|
|
60
65
|
command: task.script,
|
|
61
66
|
});
|
|
62
67
|
}
|
|
63
|
-
async runLocal(task) {
|
|
68
|
+
async runLocal(task, out) {
|
|
64
69
|
const { monorepo } = getContext();
|
|
65
70
|
const cwd = task.component
|
|
66
71
|
? monorepo.join(monorepo.component(task.component).rootDir)
|
|
67
72
|
: monorepo.rootDir;
|
|
68
|
-
return monorepo.run(new ExecuteLocalCommandOperation(), {
|
|
73
|
+
return monorepo.run(new ExecuteLocalCommandOperation(out), {
|
|
69
74
|
script: task.script,
|
|
70
75
|
workingDir: cwd,
|
|
71
76
|
});
|
package/oclif.manifest.json
CHANGED
|
@@ -520,18 +520,12 @@
|
|
|
520
520
|
"prune.js"
|
|
521
521
|
]
|
|
522
522
|
},
|
|
523
|
-
"
|
|
523
|
+
"tasks": {
|
|
524
524
|
"aliases": [],
|
|
525
|
-
"args": {
|
|
526
|
-
|
|
527
|
-
"description": "List of resources to build (defaults to all)",
|
|
528
|
-
"name": "component",
|
|
529
|
-
"required": false
|
|
530
|
-
}
|
|
531
|
-
},
|
|
532
|
-
"description": "Build the resources of the monorepo",
|
|
525
|
+
"args": {},
|
|
526
|
+
"description": "List tasks.",
|
|
533
527
|
"examples": [
|
|
534
|
-
"<%= config.bin %> <%= command.id %>
|
|
528
|
+
"<%= config.bin %> <%= command.id %>"
|
|
535
529
|
],
|
|
536
530
|
"flags": {
|
|
537
531
|
"json": {
|
|
@@ -540,38 +534,15 @@
|
|
|
540
534
|
"name": "json",
|
|
541
535
|
"allowNo": false,
|
|
542
536
|
"type": "boolean"
|
|
543
|
-
},
|
|
544
|
-
"flavor": {
|
|
545
|
-
"description": "Specify the flavor to use.",
|
|
546
|
-
"name": "flavor",
|
|
547
|
-
"required": false,
|
|
548
|
-
"hasDynamicHelp": false,
|
|
549
|
-
"multiple": false,
|
|
550
|
-
"type": "option"
|
|
551
|
-
},
|
|
552
|
-
"dry-run": {
|
|
553
|
-
"description": "Do not build the resources but only produce build meta information",
|
|
554
|
-
"name": "dry-run",
|
|
555
|
-
"required": false,
|
|
556
|
-
"allowNo": false,
|
|
557
|
-
"type": "boolean"
|
|
558
|
-
},
|
|
559
|
-
"force": {
|
|
560
|
-
"char": "f",
|
|
561
|
-
"description": "Bypass the cache and force the build",
|
|
562
|
-
"name": "force",
|
|
563
|
-
"required": false,
|
|
564
|
-
"allowNo": false,
|
|
565
|
-
"type": "boolean"
|
|
566
537
|
}
|
|
567
538
|
},
|
|
568
539
|
"hasDynamicHelp": false,
|
|
569
540
|
"hiddenAliases": [],
|
|
570
|
-
"id": "
|
|
541
|
+
"id": "tasks",
|
|
571
542
|
"pluginAlias": "@enspirit/emb",
|
|
572
543
|
"pluginName": "@enspirit/emb",
|
|
573
544
|
"pluginType": "core",
|
|
574
|
-
"strict":
|
|
545
|
+
"strict": true,
|
|
575
546
|
"enableJsonFlag": true,
|
|
576
547
|
"isESM": true,
|
|
577
548
|
"relativePath": [
|
|
@@ -579,14 +550,20 @@
|
|
|
579
550
|
"src",
|
|
580
551
|
"cli",
|
|
581
552
|
"commands",
|
|
582
|
-
"
|
|
583
|
-
"
|
|
553
|
+
"tasks",
|
|
554
|
+
"index.js"
|
|
584
555
|
]
|
|
585
556
|
},
|
|
586
|
-
"
|
|
557
|
+
"tasks:run": {
|
|
587
558
|
"aliases": [],
|
|
588
|
-
"args": {
|
|
589
|
-
|
|
559
|
+
"args": {
|
|
560
|
+
"task": {
|
|
561
|
+
"description": "List of tasks to run. You can provide either ids or names (eg: component:task or task)",
|
|
562
|
+
"name": "task",
|
|
563
|
+
"required": true
|
|
564
|
+
}
|
|
565
|
+
},
|
|
566
|
+
"description": "Run tasks.",
|
|
590
567
|
"examples": [
|
|
591
568
|
"<%= config.bin %> <%= command.id %>"
|
|
592
569
|
],
|
|
@@ -598,21 +575,33 @@
|
|
|
598
575
|
"allowNo": false,
|
|
599
576
|
"type": "boolean"
|
|
600
577
|
},
|
|
601
|
-
"
|
|
602
|
-
"
|
|
603
|
-
"
|
|
604
|
-
"
|
|
578
|
+
"executor": {
|
|
579
|
+
"char": "x",
|
|
580
|
+
"description": "Where to run the task. (experimental!)",
|
|
581
|
+
"name": "executor",
|
|
605
582
|
"hasDynamicHelp": false,
|
|
606
583
|
"multiple": false,
|
|
584
|
+
"options": [
|
|
585
|
+
"container",
|
|
586
|
+
"local"
|
|
587
|
+
],
|
|
607
588
|
"type": "option"
|
|
589
|
+
},
|
|
590
|
+
"all-matching": {
|
|
591
|
+
"char": "a",
|
|
592
|
+
"description": "Run all tasks matching (when multiple matches)",
|
|
593
|
+
"name": "all-matching",
|
|
594
|
+
"allowNo": false,
|
|
595
|
+
"type": "boolean"
|
|
608
596
|
}
|
|
609
597
|
},
|
|
610
598
|
"hasDynamicHelp": false,
|
|
611
599
|
"hiddenAliases": [],
|
|
612
|
-
"id": "
|
|
600
|
+
"id": "tasks:run",
|
|
613
601
|
"pluginAlias": "@enspirit/emb",
|
|
614
602
|
"pluginName": "@enspirit/emb",
|
|
615
603
|
"pluginType": "core",
|
|
604
|
+
"strict": false,
|
|
616
605
|
"enableJsonFlag": true,
|
|
617
606
|
"isESM": true,
|
|
618
607
|
"relativePath": [
|
|
@@ -620,16 +609,22 @@
|
|
|
620
609
|
"src",
|
|
621
610
|
"cli",
|
|
622
611
|
"commands",
|
|
623
|
-
"
|
|
624
|
-
"
|
|
612
|
+
"tasks",
|
|
613
|
+
"run.js"
|
|
625
614
|
]
|
|
626
615
|
},
|
|
627
|
-
"
|
|
616
|
+
"resources:build": {
|
|
628
617
|
"aliases": [],
|
|
629
|
-
"args": {
|
|
630
|
-
|
|
618
|
+
"args": {
|
|
619
|
+
"component": {
|
|
620
|
+
"description": "List of resources to build (defaults to all)",
|
|
621
|
+
"name": "component",
|
|
622
|
+
"required": false
|
|
623
|
+
}
|
|
624
|
+
},
|
|
625
|
+
"description": "Build the resources of the monorepo",
|
|
631
626
|
"examples": [
|
|
632
|
-
"<%= config.bin %> <%= command.id %>"
|
|
627
|
+
"<%= config.bin %> <%= command.id %> build --flavor development"
|
|
633
628
|
],
|
|
634
629
|
"flags": {
|
|
635
630
|
"json": {
|
|
@@ -638,15 +633,38 @@
|
|
|
638
633
|
"name": "json",
|
|
639
634
|
"allowNo": false,
|
|
640
635
|
"type": "boolean"
|
|
636
|
+
},
|
|
637
|
+
"flavor": {
|
|
638
|
+
"description": "Specify the flavor to use.",
|
|
639
|
+
"name": "flavor",
|
|
640
|
+
"required": false,
|
|
641
|
+
"hasDynamicHelp": false,
|
|
642
|
+
"multiple": false,
|
|
643
|
+
"type": "option"
|
|
644
|
+
},
|
|
645
|
+
"dry-run": {
|
|
646
|
+
"description": "Do not build the resources but only produce build meta information",
|
|
647
|
+
"name": "dry-run",
|
|
648
|
+
"required": false,
|
|
649
|
+
"allowNo": false,
|
|
650
|
+
"type": "boolean"
|
|
651
|
+
},
|
|
652
|
+
"force": {
|
|
653
|
+
"char": "f",
|
|
654
|
+
"description": "Bypass the cache and force the build",
|
|
655
|
+
"name": "force",
|
|
656
|
+
"required": false,
|
|
657
|
+
"allowNo": false,
|
|
658
|
+
"type": "boolean"
|
|
641
659
|
}
|
|
642
660
|
},
|
|
643
661
|
"hasDynamicHelp": false,
|
|
644
662
|
"hiddenAliases": [],
|
|
645
|
-
"id": "
|
|
663
|
+
"id": "resources:build",
|
|
646
664
|
"pluginAlias": "@enspirit/emb",
|
|
647
665
|
"pluginName": "@enspirit/emb",
|
|
648
666
|
"pluginType": "core",
|
|
649
|
-
"strict":
|
|
667
|
+
"strict": false,
|
|
650
668
|
"enableJsonFlag": true,
|
|
651
669
|
"isESM": true,
|
|
652
670
|
"relativePath": [
|
|
@@ -654,20 +672,14 @@
|
|
|
654
672
|
"src",
|
|
655
673
|
"cli",
|
|
656
674
|
"commands",
|
|
657
|
-
"
|
|
658
|
-
"
|
|
675
|
+
"resources",
|
|
676
|
+
"build.js"
|
|
659
677
|
]
|
|
660
678
|
},
|
|
661
|
-
"
|
|
679
|
+
"resources": {
|
|
662
680
|
"aliases": [],
|
|
663
|
-
"args": {
|
|
664
|
-
|
|
665
|
-
"description": "List of tasks to run. You can provide either ids or names (eg: component:task or task)",
|
|
666
|
-
"name": "task",
|
|
667
|
-
"required": true
|
|
668
|
-
}
|
|
669
|
-
},
|
|
670
|
-
"description": "Run tasks.",
|
|
681
|
+
"args": {},
|
|
682
|
+
"description": "List resources.",
|
|
671
683
|
"examples": [
|
|
672
684
|
"<%= config.bin %> <%= command.id %>"
|
|
673
685
|
],
|
|
@@ -679,33 +691,21 @@
|
|
|
679
691
|
"allowNo": false,
|
|
680
692
|
"type": "boolean"
|
|
681
693
|
},
|
|
682
|
-
"
|
|
683
|
-
"
|
|
684
|
-
"
|
|
685
|
-
"
|
|
694
|
+
"flavor": {
|
|
695
|
+
"description": "Specify the flavor to use.",
|
|
696
|
+
"name": "flavor",
|
|
697
|
+
"required": false,
|
|
686
698
|
"hasDynamicHelp": false,
|
|
687
699
|
"multiple": false,
|
|
688
|
-
"options": [
|
|
689
|
-
"container",
|
|
690
|
-
"local"
|
|
691
|
-
],
|
|
692
700
|
"type": "option"
|
|
693
|
-
},
|
|
694
|
-
"all-matching": {
|
|
695
|
-
"char": "a",
|
|
696
|
-
"description": "Run all tasks matching (when multiple matches)",
|
|
697
|
-
"name": "all-matching",
|
|
698
|
-
"allowNo": false,
|
|
699
|
-
"type": "boolean"
|
|
700
701
|
}
|
|
701
702
|
},
|
|
702
703
|
"hasDynamicHelp": false,
|
|
703
704
|
"hiddenAliases": [],
|
|
704
|
-
"id": "
|
|
705
|
+
"id": "resources",
|
|
705
706
|
"pluginAlias": "@enspirit/emb",
|
|
706
707
|
"pluginName": "@enspirit/emb",
|
|
707
708
|
"pluginType": "core",
|
|
708
|
-
"strict": false,
|
|
709
709
|
"enableJsonFlag": true,
|
|
710
710
|
"isESM": true,
|
|
711
711
|
"relativePath": [
|
|
@@ -713,10 +713,10 @@
|
|
|
713
713
|
"src",
|
|
714
714
|
"cli",
|
|
715
715
|
"commands",
|
|
716
|
-
"
|
|
717
|
-
"
|
|
716
|
+
"resources",
|
|
717
|
+
"index.js"
|
|
718
718
|
]
|
|
719
719
|
}
|
|
720
720
|
},
|
|
721
|
-
"version": "0.
|
|
721
|
+
"version": "0.4.0"
|
|
722
722
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enspirit/emb",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
5
|
-
"keywords": [
|
|
4
|
+
"version": "0.4.0",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"monorepo",
|
|
7
|
+
"docker",
|
|
8
|
+
"taskrunner",
|
|
9
|
+
"ci",
|
|
10
|
+
"docker compose",
|
|
11
|
+
"sentinel",
|
|
12
|
+
"makefile"
|
|
13
|
+
],
|
|
6
14
|
"author": "Louis Lambeau <louis.lambeau@enspirit.be>",
|
|
7
15
|
"license": "ISC",
|
|
8
16
|
"description": "A replacement for our Makefile-for-monorepos",
|
|
@@ -114,12 +122,25 @@
|
|
|
114
122
|
],
|
|
115
123
|
"topicSeparator": " ",
|
|
116
124
|
"topics": {
|
|
117
|
-
"images": {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
"
|
|
121
|
-
|
|
122
|
-
|
|
125
|
+
"images": {
|
|
126
|
+
"description": "List, delete, prune docker containers"
|
|
127
|
+
},
|
|
128
|
+
"containers": {
|
|
129
|
+
"description": "List, delete, prune docker images"
|
|
130
|
+
},
|
|
131
|
+
"resources": {
|
|
132
|
+
"description": "List, clean, build resources"
|
|
133
|
+
},
|
|
134
|
+
"components": {
|
|
135
|
+
"description": "List & build components resources"
|
|
136
|
+
},
|
|
137
|
+
"config": {
|
|
138
|
+
"description": "It's all about config"
|
|
139
|
+
},
|
|
140
|
+
"tasks": {
|
|
141
|
+
"description": "List and run tasks"
|
|
142
|
+
}
|
|
123
143
|
}
|
|
124
|
-
}
|
|
144
|
+
},
|
|
145
|
+
"packageManager": "pnpm@9.11.0+sha512.0a203ffaed5a3f63242cd064c8fb5892366c103e328079318f78062f24ea8c9d50bc6a47aa3567cabefd824d170e78fa2745ed1f16b132e16436146b7688f19b"
|
|
125
146
|
}
|