@plugjs/plug 0.3.5 → 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/dist/asserts.cjs +9 -11
- package/dist/asserts.cjs.map +1 -1
- package/dist/asserts.d.ts +1 -2
- package/dist/asserts.mjs +8 -9
- package/dist/asserts.mjs.map +1 -1
- package/dist/build.cjs +29 -5
- package/dist/build.cjs.map +1 -1
- package/dist/build.d.ts +4 -0
- package/dist/build.mjs +27 -5
- package/dist/build.mjs.map +1 -1
- package/dist/cli.d.mts +12 -0
- package/dist/cli.mjs +266 -0
- package/dist/cli.mjs.map +6 -0
- package/dist/fork.cjs +30 -12
- package/dist/fork.cjs.map +1 -1
- package/dist/fork.d.ts +10 -0
- package/dist/fork.mjs +31 -13
- package/dist/fork.mjs.map +1 -1
- package/dist/helpers.cjs +30 -10
- package/dist/helpers.cjs.map +2 -2
- package/dist/helpers.d.ts +12 -0
- package/dist/helpers.mjs +35 -11
- package/dist/helpers.mjs.map +2 -2
- package/dist/index.cjs +5 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.mjs +4 -1
- package/dist/index.mjs.map +1 -1
- package/dist/logging/emit.cjs +4 -4
- package/dist/logging/emit.cjs.map +1 -1
- package/dist/logging/emit.mjs +4 -4
- package/dist/logging/emit.mjs.map +1 -1
- package/dist/logging/logger.cjs +43 -2
- package/dist/logging/logger.cjs.map +1 -1
- package/dist/logging/logger.d.ts +36 -3
- package/dist/logging/logger.mjs +43 -3
- package/dist/logging/logger.mjs.map +1 -1
- package/dist/logging/options.cjs +5 -2
- package/dist/logging/options.cjs.map +1 -1
- package/dist/logging/options.mjs +5 -2
- package/dist/logging/options.mjs.map +1 -1
- package/dist/logging.cjs +14 -3
- package/dist/logging.cjs.map +1 -1
- package/dist/logging.d.ts +2 -0
- package/dist/logging.mjs +13 -3
- package/dist/logging.mjs.map +1 -1
- package/dist/plugs/build.cjs +66 -0
- package/dist/plugs/build.cjs.map +6 -0
- package/dist/plugs/build.d.ts +13 -0
- package/dist/plugs/build.mjs +40 -0
- package/dist/plugs/build.mjs.map +6 -0
- package/dist/types.d.ts +2 -0
- package/dist/utils/exec.cjs +5 -12
- package/dist/utils/exec.cjs.map +2 -2
- package/dist/utils/exec.d.ts +0 -2
- package/dist/utils/exec.mjs +6 -13
- package/dist/utils/exec.mjs.map +1 -1
- package/package.json +7 -9
- package/src/asserts.ts +9 -11
- package/src/build.ts +33 -4
- package/{extra/plug.mts → src/cli.mts} +115 -141
- package/src/fork.ts +42 -16
- package/src/helpers.ts +53 -1
- package/src/index.ts +2 -1
- package/src/logging/emit.ts +4 -4
- package/src/logging/logger.ts +60 -7
- package/src/logging/options.ts +5 -1
- package/src/logging.ts +20 -5
- package/src/plugs/build.ts +58 -0
- package/src/types.ts +2 -0
- package/src/utils/exec.ts +6 -20
- package/cli/plug.mjs +0 -1385
- package/cli/ts-loader.mjs +0 -275
- package/cli/tsrun.mjs +0 -1204
- package/extra/ts-loader.mts +0 -546
- package/extra/tsrun.mts +0 -127
- package/extra/utils.ts +0 -150
package/dist/asserts.cjs
CHANGED
|
@@ -23,15 +23,11 @@ __export(asserts_exports, {
|
|
|
23
23
|
BuildFailure: () => BuildFailure,
|
|
24
24
|
assert: () => assert,
|
|
25
25
|
assertPromises: () => assertPromises,
|
|
26
|
-
fail: () => fail
|
|
27
|
-
isBuildFailure: () => isBuildFailure
|
|
26
|
+
fail: () => fail
|
|
28
27
|
});
|
|
29
28
|
module.exports = __toCommonJS(asserts_exports);
|
|
30
29
|
var import_github = require("./logging/github.cjs");
|
|
31
30
|
var buildFailure = Symbol.for("plugjs:buildFailure");
|
|
32
|
-
function isBuildFailure(arg) {
|
|
33
|
-
return arg && arg[buildFailure] === buildFailure;
|
|
34
|
-
}
|
|
35
31
|
var BuildFailure = class extends Error {
|
|
36
32
|
errors;
|
|
37
33
|
/** Construct a {@link BuildFailure} */
|
|
@@ -43,10 +39,6 @@ var BuildFailure = class extends Error {
|
|
|
43
39
|
Error.captureStackTrace(this, BuildFailure);
|
|
44
40
|
if (errors.length)
|
|
45
41
|
this.errors = Object.freeze([...errors]);
|
|
46
|
-
Object.defineProperties(this, {
|
|
47
|
-
[buildFailure]: { value: buildFailure },
|
|
48
|
-
"name": { value: "BuildFailure" }
|
|
49
|
-
});
|
|
50
42
|
}
|
|
51
43
|
static fail() {
|
|
52
44
|
return new BuildFailure(void 0, []);
|
|
@@ -57,6 +49,13 @@ var BuildFailure = class extends Error {
|
|
|
57
49
|
static withErrors(errors) {
|
|
58
50
|
return new BuildFailure(void 0, errors);
|
|
59
51
|
}
|
|
52
|
+
static [Symbol.hasInstance](instance) {
|
|
53
|
+
return instance && instance[buildFailure] === buildFailure;
|
|
54
|
+
}
|
|
55
|
+
static {
|
|
56
|
+
this.prototype[buildFailure] = buildFailure;
|
|
57
|
+
this.prototype.name = this.name;
|
|
58
|
+
}
|
|
60
59
|
};
|
|
61
60
|
async function assertPromises(promises) {
|
|
62
61
|
const settlements = await Promise.allSettled(promises);
|
|
@@ -85,7 +84,6 @@ function fail(message) {
|
|
|
85
84
|
BuildFailure,
|
|
86
85
|
assert,
|
|
87
86
|
assertPromises,
|
|
88
|
-
fail
|
|
89
|
-
isBuildFailure
|
|
87
|
+
fail
|
|
90
88
|
});
|
|
91
89
|
//# sourceMappingURL=asserts.cjs.map
|
package/dist/asserts.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/asserts.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,oBAAiC;AAGjC,IAAM,eAAe,OAAO,IAAI,qBAAqB;AAG9C,IAAM,eAAN,cAA2B,MAAM;AAAA,EAC7B;AAAA;AAAA,EAGT,YAAY,SAA8B,SAAgB,CAAC,GAAG;AAC5D,UAAM,WAAW,EAAE;AAGnB,QAAI,SAAS;AACX,0CAAiB,EAAE,MAAM,SAAS,OAAO,gBAAgB,GAAG,OAAO;AAAA,IACrE;AAGA,UAAM,kBAAkB,MAAM,YAAY;AAC1C,QAAI,OAAO;AAAQ,WAAK,SAAS,OAAO,OAAO,CAAE,GAAG,MAAO,CAAC;AAAA,EAC9D;AAAA,EAEA,OAAO,OAAqB;AAC1B,WAAO,IAAI,aAAa,QAAW,CAAC,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,YAAY,SAA+B;AAChD,WAAO,IAAI,aAAa,SAAS,CAAC,CAAC;AAAA,EACrC;AAAA,EAEA,OAAO,WAAW,QAA6B;AAC7C,WAAO,IAAI,aAAa,QAAW,MAAM;AAAA,EAC3C;AAAA,EAEA,QAAQ,OAAO,WAAW,EAAE,UAAwB;AAClD,WAAO,YAAY,SAAS,YAAY,MAAM;AAAA,EAChD;AAAA,EAEA,OAAO;AACL,IAAC,KAAK,UAAkB,YAAY,IAAI;AACxC,SAAK,UAAU,OAAO,KAAK;AAAA,EAC7B;AACF;AAGA,eAAsB,eAAkB,UAA4C;AAElF,QAAM,cAAc,MAAM,QAAQ,WAAW,QAAQ;AAGrD,QAAM,UAAe,CAAC;AACtB,QAAM,WAAW,oBAAI,IAAS;AAE9B,cAAY,QAAQ,CAAC,eAAe;AAClC,QAAI,WAAW,WAAW,aAAa;AACrC,cAAQ,KAAK,WAAW,KAAK;AAAA,IAC/B,OAAO;AACL,eAAS,IAAI,WAAW,MAAM;AAAA,IAChC;AAAA,EACF,CAAC;AAGD,MAAI,SAAS;AAAM,UAAM,aAAa,WAAW,CAAE,GAAG,QAAS,CAAC;AAEhE,SAAO;AACT;AAGO,SAAS,OAAO,WAAgB,SAAoC;AACzE,MAAI,CAAE;AAAW,UAAM,aAAa,YAAY,OAAO;AACzD;AAGO,SAAS,KAAK,SAAwB;AAC3C,QAAM,aAAa,YAAY,OAAO;AACxC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/asserts.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/** Check if the specified argument is a {@link BuildFailure} */
|
|
2
|
-
export declare function isBuildFailure(arg: any): arg is BuildFailure;
|
|
3
1
|
/** A {@link BuildFailure} represents an error _already logged_ in our build. */
|
|
4
2
|
export declare class BuildFailure extends Error {
|
|
5
3
|
readonly errors?: readonly any[] | undefined;
|
|
@@ -8,6 +6,7 @@ export declare class BuildFailure extends Error {
|
|
|
8
6
|
static fail(): BuildFailure;
|
|
9
7
|
static withMessage(message: string): BuildFailure;
|
|
10
8
|
static withErrors(errors: any[]): BuildFailure;
|
|
9
|
+
static [Symbol.hasInstance](instance: any): boolean;
|
|
11
10
|
}
|
|
12
11
|
/** Await and assert that all specified promises were fulfilled */
|
|
13
12
|
export declare function assertPromises<T>(promises: (T | Promise<T>)[]): Promise<T[]>;
|
package/dist/asserts.mjs
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
// asserts.ts
|
|
2
2
|
import { githubAnnotation } from "./logging/github.mjs";
|
|
3
3
|
var buildFailure = Symbol.for("plugjs:buildFailure");
|
|
4
|
-
function isBuildFailure(arg) {
|
|
5
|
-
return arg && arg[buildFailure] === buildFailure;
|
|
6
|
-
}
|
|
7
4
|
var BuildFailure = class extends Error {
|
|
8
5
|
errors;
|
|
9
6
|
/** Construct a {@link BuildFailure} */
|
|
@@ -15,10 +12,6 @@ var BuildFailure = class extends Error {
|
|
|
15
12
|
Error.captureStackTrace(this, BuildFailure);
|
|
16
13
|
if (errors.length)
|
|
17
14
|
this.errors = Object.freeze([...errors]);
|
|
18
|
-
Object.defineProperties(this, {
|
|
19
|
-
[buildFailure]: { value: buildFailure },
|
|
20
|
-
"name": { value: "BuildFailure" }
|
|
21
|
-
});
|
|
22
15
|
}
|
|
23
16
|
static fail() {
|
|
24
17
|
return new BuildFailure(void 0, []);
|
|
@@ -29,6 +22,13 @@ var BuildFailure = class extends Error {
|
|
|
29
22
|
static withErrors(errors) {
|
|
30
23
|
return new BuildFailure(void 0, errors);
|
|
31
24
|
}
|
|
25
|
+
static [Symbol.hasInstance](instance) {
|
|
26
|
+
return instance && instance[buildFailure] === buildFailure;
|
|
27
|
+
}
|
|
28
|
+
static {
|
|
29
|
+
this.prototype[buildFailure] = buildFailure;
|
|
30
|
+
this.prototype.name = this.name;
|
|
31
|
+
}
|
|
32
32
|
};
|
|
33
33
|
async function assertPromises(promises) {
|
|
34
34
|
const settlements = await Promise.allSettled(promises);
|
|
@@ -56,7 +56,6 @@ export {
|
|
|
56
56
|
BuildFailure,
|
|
57
57
|
assert,
|
|
58
58
|
assertPromises,
|
|
59
|
-
fail
|
|
60
|
-
isBuildFailure
|
|
59
|
+
fail
|
|
61
60
|
};
|
|
62
61
|
//# sourceMappingURL=asserts.mjs.map
|
package/dist/asserts.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/asserts.ts"],
|
|
4
|
-
"mappings": ";AAIA,SAAS,wBAAwB;AAGjC,IAAM,eAAe,OAAO,IAAI,qBAAqB;AAG9C,
|
|
4
|
+
"mappings": ";AAIA,SAAS,wBAAwB;AAGjC,IAAM,eAAe,OAAO,IAAI,qBAAqB;AAG9C,IAAM,eAAN,cAA2B,MAAM;AAAA,EAC7B;AAAA;AAAA,EAGT,YAAY,SAA8B,SAAgB,CAAC,GAAG;AAC5D,UAAM,WAAW,EAAE;AAGnB,QAAI,SAAS;AACX,uBAAiB,EAAE,MAAM,SAAS,OAAO,gBAAgB,GAAG,OAAO;AAAA,IACrE;AAGA,UAAM,kBAAkB,MAAM,YAAY;AAC1C,QAAI,OAAO;AAAQ,WAAK,SAAS,OAAO,OAAO,CAAE,GAAG,MAAO,CAAC;AAAA,EAC9D;AAAA,EAEA,OAAO,OAAqB;AAC1B,WAAO,IAAI,aAAa,QAAW,CAAC,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,YAAY,SAA+B;AAChD,WAAO,IAAI,aAAa,SAAS,CAAC,CAAC;AAAA,EACrC;AAAA,EAEA,OAAO,WAAW,QAA6B;AAC7C,WAAO,IAAI,aAAa,QAAW,MAAM;AAAA,EAC3C;AAAA,EAEA,QAAQ,OAAO,WAAW,EAAE,UAAwB;AAClD,WAAO,YAAY,SAAS,YAAY,MAAM;AAAA,EAChD;AAAA,EAEA,OAAO;AACL,IAAC,KAAK,UAAkB,YAAY,IAAI;AACxC,SAAK,UAAU,OAAO,KAAK;AAAA,EAC7B;AACF;AAGA,eAAsB,eAAkB,UAA4C;AAElF,QAAM,cAAc,MAAM,QAAQ,WAAW,QAAQ;AAGrD,QAAM,UAAe,CAAC;AACtB,QAAM,WAAW,oBAAI,IAAS;AAE9B,cAAY,QAAQ,CAAC,eAAe;AAClC,QAAI,WAAW,WAAW,aAAa;AACrC,cAAQ,KAAK,WAAW,KAAK;AAAA,IAC/B,OAAO;AACL,eAAS,IAAI,WAAW,MAAM;AAAA,IAChC;AAAA,EACF,CAAC;AAGD,MAAI,SAAS;AAAM,UAAM,aAAa,WAAW,CAAE,GAAG,QAAS,CAAC;AAEhE,SAAO;AACT;AAGO,SAAS,OAAO,WAAgB,SAAoC;AACzE,MAAI,CAAE;AAAW,UAAM,aAAa,YAAY,OAAO;AACzD;AAGO,SAAS,KAAK,SAAwB;AAC3C,QAAM,aAAa,YAAY,OAAO;AACxC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/build.cjs
CHANGED
|
@@ -22,7 +22,9 @@ var build_exports = {};
|
|
|
22
22
|
__export(build_exports, {
|
|
23
23
|
build: () => build,
|
|
24
24
|
hookAfter: () => hookAfter,
|
|
25
|
-
hookBefore: () => hookBefore
|
|
25
|
+
hookBefore: () => hookBefore,
|
|
26
|
+
invokeTasks: () => invokeTasks,
|
|
27
|
+
isBuild: () => isBuild
|
|
26
28
|
});
|
|
27
29
|
module.exports = __toCommonJS(build_exports);
|
|
28
30
|
var import_asserts = require("./asserts.cjs");
|
|
@@ -44,7 +46,8 @@ function makeTask(buildFile, tasks, props, _def, _name) {
|
|
|
44
46
|
const tasks2 = Object.assign({}, task.tasks, state.tasks);
|
|
45
47
|
const stack = [...state.stack, task];
|
|
46
48
|
const cache = state.cache;
|
|
47
|
-
|
|
49
|
+
const fails = state.fails;
|
|
50
|
+
state = { stack, cache, fails, tasks: tasks2, props: props2 };
|
|
48
51
|
const context = new import_pipe.Context(task.buildFile, taskName);
|
|
49
52
|
const build2 = new Proxy({}, {
|
|
50
53
|
get(_, name) {
|
|
@@ -69,6 +72,7 @@ function makeTask(buildFile, tasks, props, _def, _name) {
|
|
|
69
72
|
context.log[level](`Success ${(0, import_logging.$ms)(Date.now() - now)}`);
|
|
70
73
|
return result;
|
|
71
74
|
}).catch((error) => {
|
|
75
|
+
fails.add(task);
|
|
72
76
|
throw context.log.fail(`Failure ${(0, import_logging.$ms)(Date.now() - now)}`, error);
|
|
73
77
|
}).finally(async () => {
|
|
74
78
|
await import_pipe.ContextPromises.wait(context);
|
|
@@ -85,6 +89,7 @@ function makeTask(buildFile, tasks, props, _def, _name) {
|
|
|
85
89
|
cache: /* @__PURE__ */ new Map(),
|
|
86
90
|
stack: [],
|
|
87
91
|
props: Object.assign({}, props, overrideProps),
|
|
92
|
+
fails: /* @__PURE__ */ new Set(),
|
|
88
93
|
tasks
|
|
89
94
|
};
|
|
90
95
|
return invoke(state, _name);
|
|
@@ -116,8 +121,9 @@ function build(def) {
|
|
|
116
121
|
const logger = (0, import_logging.getLogger)();
|
|
117
122
|
const state = {
|
|
118
123
|
cache: /* @__PURE__ */ new Map(),
|
|
119
|
-
stack: [],
|
|
120
124
|
props: Object.assign({}, props, overrideProps),
|
|
125
|
+
fails: /* @__PURE__ */ new Set(),
|
|
126
|
+
stack: [],
|
|
121
127
|
tasks
|
|
122
128
|
};
|
|
123
129
|
logger.notice("Starting...");
|
|
@@ -130,13 +136,29 @@ function build(def) {
|
|
|
130
136
|
}
|
|
131
137
|
logger.notice(`Build successful ${(0, import_logging.$ms)(Date.now() - now)}`);
|
|
132
138
|
} catch (error) {
|
|
139
|
+
if (state.fails.size) {
|
|
140
|
+
logger.error("");
|
|
141
|
+
logger.error(state.fails.size, state.fails.size === 1 ? "task" : "tasks", "failed:");
|
|
142
|
+
state.fails.forEach((task) => logger.error((0, import_logging.$gry)("*"), (0, import_logging.$t)(task.name)));
|
|
143
|
+
logger.error("");
|
|
144
|
+
}
|
|
133
145
|
throw logger.fail(`Build failed ${(0, import_logging.$ms)(Date.now() - now)}`, error);
|
|
134
146
|
}
|
|
135
147
|
};
|
|
136
|
-
const compiled = Object.assign(
|
|
148
|
+
const compiled = Object.assign(/* @__PURE__ */ Object.create(null), props, tasks);
|
|
137
149
|
Object.defineProperty(compiled, buildMarker, { value: invoke });
|
|
138
150
|
return compiled;
|
|
139
151
|
}
|
|
152
|
+
function isBuild(build2) {
|
|
153
|
+
return build2 && typeof build2[buildMarker] === "function";
|
|
154
|
+
}
|
|
155
|
+
function invokeTasks(build2, tasks, props) {
|
|
156
|
+
if (build2 && typeof build2 === "object" && buildMarker in build2 && typeof build2[buildMarker] === "function") {
|
|
157
|
+
return build2[buildMarker](tasks, props);
|
|
158
|
+
} else {
|
|
159
|
+
throw new TypeError("Invalid build instance");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
140
162
|
function hookBefore(build2, taskName, hooks) {
|
|
141
163
|
const task = build2[taskName];
|
|
142
164
|
(0, import_asserts.assert)(isTask(task), `Task "${(0, import_logging.$t)(taskName)}" not found in build`);
|
|
@@ -163,6 +185,8 @@ function hookAfter(build2, taskName, hooks) {
|
|
|
163
185
|
0 && (module.exports = {
|
|
164
186
|
build,
|
|
165
187
|
hookAfter,
|
|
166
|
-
hookBefore
|
|
188
|
+
hookBefore,
|
|
189
|
+
invokeTasks,
|
|
190
|
+
isBuild
|
|
167
191
|
});
|
|
168
192
|
//# sourceMappingURL=build.cjs.map
|
package/dist/build.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/build.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAuB;AACvB,mBAAyB;AACzB,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAuB;AACvB,mBAAyB;AACzB,qBAAyD;AACzD,kBAAmD;AACnD,oBAA2B;AAqB3B,IAAM,aAAa,OAAO,IAAI,eAAe;AAG7C,SAAS,OAAO,WAAmC;AACjD,SAAO,UAAU,UAAU,MAAM;AACnC;AAGA,SAAS,SACL,WACA,OACA,OACA,MACA,OACI;AAEN,iBAAe,OAAO,OAAc,UAAmC;AACrE,+BAAO,CAAE,MAAM,MAAM,SAAS,IAAI,GAAG,kCAA8B,mBAAG,QAAQ,GAAG;AAGjF,UAAM,SAAS,MAAM,MAAM,IAAI,IAAI;AACnC,QAAI;AAAQ,aAAO;AAGnB,UAAMA,SAAgC,OAAO,OAAO,CAAC,GAAG,KAAK,OAAO,MAAM,KAAK;AAC/E,UAAMC,SAA8B,OAAO,OAAO,CAAC,GAAG,KAAK,OAAO,MAAM,KAAK;AAC7E,UAAM,QAAQ,CAAE,GAAG,MAAM,OAAO,IAAK;AACrC,UAAM,QAAQ,MAAM;AACpB,UAAM,QAAQ,MAAM;AACpB,YAAQ,EAAE,OAAO,OAAO,OAAO,OAAAA,QAAO,OAAAD,OAAM;AAG5C,UAAM,UAAU,IAAI,oBAAQ,KAAK,WAAW,QAAQ;AAGpD,UAAME,SAAQ,IAAI,MAAM,CAAC,GAAG;AAAA,MAC1B,IAAI,GAAQ,MAA4C;AAEtD,YAAI,QAAQD,QAAO;AACjB,iBAAO,MAAY;AACjB,kBAAME,WAAUF,OAAM,IAAI,EAAG,OAAO,OAAO,IAAI;AAC/C,mBAAO,IAAI,qBAAS,SAASE,QAAO;AAAA,UACtC;AAAA,QACF,WAAW,QAAQH,QAAO;AACxB,iBAAOA,OAAM,IAAI;AAAA,QACnB;AAAA,MACF;AAAA,IACF,CAAC;AAGD,eAAW,UAAU,KAAK;AAAQ,YAAM,OAAO,OAAO,OAAO,OAAO,IAAI;AAGxE,YAAQ,IAAI,KAAK,YAAY;AAC7B,UAAM,MAAM,KAAK,IAAI;AAGrB,UAAM,cAAU,uBAAS,SAAS,UAAU,YAAY;AACtD,aAAO,MAAM,KAAK,KAAKE,MAAK,KAAK;AAAA,IACnC,CAAC,EAAE,KAAK,OAAO,WAAW;AACxB,YAAM,QAAQ,SAAS,WAAW,GAAG,IAAI,SAAS;AAClD,cAAQ,IAAI,KAAK,EAAE,eAAW,oBAAI,KAAK,IAAI,IAAI,GAAG,GAAG;AACrD,aAAO;AAAA,IACT,CAAC,EAAE,MAAM,CAAC,UAAU;AAClB,YAAM,IAAI,IAAI;AACd,YAAM,QAAQ,IAAI,KAAK,eAAW,oBAAI,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK;AAAA,IAClE,CAAC,EAAE,QAAQ,YAAY;AACrB,YAAM,4BAAgB,KAAK,OAAO;AAAA,IACpC,CAAC,EAAE,KAAK,OAAO,WAAW;AACxB,iBAAW,SAAS,KAAK;AAAO,cAAM,MAAM,OAAO,OAAO,MAAM,IAAI;AACpE,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,IAAI,MAAM,OAAO;AACvB,WAAO;AAAA,EACT;AAGA,QAAM,OAAa,OAAO,OAAO,CAAC,gBAAuB,CAAC,MAAM;AAC9D,UAAM,QAAe;AAAA,MACnB,OAAO,oBAAI,IAA2B;AAAA,MACtC,OAAO,CAAC;AAAA,MACR,OAAO,OAAO,OAAO,CAAC,GAAG,OAAO,aAAa;AAAA,MAC7C,OAAO,oBAAI;AAAA,MACX;AAAA,IACF;AACA,WAAO,OAAO,OAAO,KAAK;AAAA,EAC5B,GAAG,EAAE,WAAW,OAAO,OAAO,QAAQ,QAAQ,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;AAG7D,SAAO,eAAe,MAAM,YAAY,EAAE,OAAO,KAAK,CAAC;AACvD,SAAO,eAAe,MAAM,QAAQ,EAAE,OAAO,MAAM,CAAC;AACpD,SAAO;AACT;AAYA,IAAM,cAAc,OAAO,IAAI,gBAAgB;AAGxC,SAAS,MAEd,KAAgC;AAChC,QAAM,gBAAY,0BAAW,KAAK;AAClC,QAAM,QAA8B,CAAC;AACrC,QAAM,QAAgC,CAAC;AAGvC,aAAW,CAAE,KAAK,GAAI,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC9C,QAAI,MAAM;AACV,QAAI,OAAO,GAAG,GAAG;AACf,YAAM,GAAG,IAAI;AACb,YAAM,IAAI;AAAA,IACZ,WAAW,OAAO,QAAQ,UAAU;AAClC,YAAM,GAAG,IAAI;AAAA,IACf,WAAW,OAAO,QAAQ,YAAY;AACpC,YAAM,GAAG,IAAI,SAAS,WAAW,OAAO,OAAO,KAAK,GAAG;AACvD,YAAM,IAAI;AAAA,IACZ;AAIA,QAAI,MAAM,0BAAW;AAAY,gCAAW,aAAa;AAAA,EAC3D;AAGA,QAAM,SAAS,eAAeE,QAC1B,WACA,gBAAoD,CAAC,GACxC;AAEf,UAAM,aAAS,0BAAU;AACzB,UAAM,QAAQ;AAAA,MACZ,OAAO,oBAAI,IAA2B;AAAA,MACtC,OAAO,OAAO,OAAO,CAAC,GAAG,OAAO,aAAa;AAAA,MAC7C,OAAO,oBAAI,IAAU;AAAA,MACrB,OAAO,CAAC;AAAA,MACR;AAAA,IACF;AAGA,WAAO,OAAO,aAAa;AAC3B,UAAM,MAAM,KAAK,IAAI;AAErB,QAAI;AAEF,iBAAW,QAAQ,WAAW;AAC5B,cAAM,OAAO,MAAM,IAAI;AACvB,mCAAO,MAAM,YAAQ,mBAAG,IAAI,4BAAwB,mBAAG,SAAS,GAAG;AACnE,cAAM,KAAK,OAAO,OAAO,IAAI;AAAA,MAC/B;AACA,aAAO,OAAO,wBAAoB,oBAAI,KAAK,IAAI,IAAI,GAAG,GAAG;AAAA,IAC3D,SAAS,OAAP;AACA,UAAI,MAAM,MAAM,MAAM;AACpB,eAAO,MAAM,EAAE;AACf,eAAO,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,SAAS,IAAI,SAAS,SAAS,SAAS;AACnF,cAAM,MAAM,QAAQ,CAAC,SAAS,OAAO,UAAM,qBAAK,GAAG,OAAG,mBAAG,KAAK,IAAI,CAAC,CAAC;AACpE,eAAO,MAAM,EAAE;AAAA,MACjB;AACA,YAAM,OAAO,KAAK,oBAAgB,oBAAI,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK;AAAA,IAClE;AAAA,EACF;AAGA,QAAM,WAAW,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG,OAAO,KAAK;AAGhE,SAAO,eAAe,UAAU,aAAa,EAAE,OAAO,OAAO,CAAC;AAG9D,SAAO;AACT;AAGO,SAAS,QAAQF,QAAiD;AACvE,SAAOA,UAAS,OAAOA,OAAM,WAAW,MAAM;AAChD;AAGO,SAAS,YACZA,QACA,OACA,OACa;AACf,MAAIA,UAAU,OAAOA,WAAU,YAC3B,eAAeA,UAAW,OAAOA,OAAM,WAAW,MAAM,YAAa;AACvE,WAAOA,OAAM,WAAW,EAAE,OAAO,KAAK;AAAA,EACxC,OAAO;AACL,UAAM,IAAI,UAAU,wBAAwB;AAAA,EAC9C;AACF;AAUO,SAAS,WACZA,QACA,UACA,OACI;AACN,QAAM,OAAOA,OAAM,QAAQ;AAC3B,6BAAO,OAAO,IAAI,GAAG,aAAS,mBAAG,QAAQ,uBAAuB;AAEhE,aAAW,QAAQ,OAAO;AACxB,UAAM,aAAaA,OAAM,IAAI;AAC7B,+BAAO,OAAO,UAAU,GAAG,aAAS,mBAAG,IAAI,0BAAsB,mBAAG,QAAQ,uBAAuB;AACnG,QAAI,KAAK,OAAO,SAAS,UAAU;AAAG;AACtC,SAAK,OAAO,KAAK,UAAU;AAAA,EAC7B;AACF;AAEO,SAAS,UACZA,QACA,UACA,OACI;AACN,QAAM,OAAOA,OAAM,QAAQ;AAC3B,6BAAO,OAAO,IAAI,GAAG,aAAS,mBAAG,QAAQ,uBAAuB;AAEhE,aAAW,QAAQ,OAAO;AACxB,UAAM,YAAYA,OAAM,IAAI;AAC5B,+BAAO,OAAO,SAAS,GAAG,aAAS,mBAAG,IAAI,yBAAqB,mBAAG,QAAQ,uBAAuB;AACjG,QAAI,KAAK,MAAM,SAAS,SAAS;AAAG;AACpC,SAAK,MAAM,KAAK,SAAS;AAAA,EAC3B;AACF;",
|
|
5
5
|
"names": ["props", "tasks", "build", "promise", "invoke"]
|
|
6
6
|
}
|
package/dist/build.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { Build, BuildDef, Task, ThisBuild } from './types';
|
|
2
2
|
/** Compile a {@link BuildDef | build definition} into a {@link Build} */
|
|
3
3
|
export declare function build<D extends BuildDef, B extends ThisBuild<D>>(def: D & ThisType<B>): Build<D>;
|
|
4
|
+
/** Check if the specified build is actually a {@link Build} */
|
|
5
|
+
export declare function isBuild(build: any): build is Build<Record<string, any>>;
|
|
6
|
+
/** Invoke a number of tasks in a {@link Build} */
|
|
7
|
+
export declare function invokeTasks(build: Build, tasks: string[], props?: Record<string, string>): Promise<void>;
|
|
4
8
|
type TaskNames<B extends Build> = keyof {
|
|
5
9
|
[name in keyof B as B[name] extends Task ? name : never]: any;
|
|
6
10
|
};
|
package/dist/build.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// build.ts
|
|
2
2
|
import { assert } from "./asserts.mjs";
|
|
3
3
|
import { runAsync } from "./async.mjs";
|
|
4
|
-
import { $ms, $p, $t, getLogger, logOptions } from "./logging.mjs";
|
|
4
|
+
import { $gry, $ms, $p, $t, getLogger, logOptions } from "./logging.mjs";
|
|
5
5
|
import { Context, ContextPromises, PipeImpl } from "./pipe.mjs";
|
|
6
6
|
import { findCaller } from "./utils/caller.mjs";
|
|
7
7
|
var taskMarker = Symbol.for("plugjs:isTask");
|
|
@@ -18,7 +18,8 @@ function makeTask(buildFile, tasks, props, _def, _name) {
|
|
|
18
18
|
const tasks2 = Object.assign({}, task.tasks, state.tasks);
|
|
19
19
|
const stack = [...state.stack, task];
|
|
20
20
|
const cache = state.cache;
|
|
21
|
-
|
|
21
|
+
const fails = state.fails;
|
|
22
|
+
state = { stack, cache, fails, tasks: tasks2, props: props2 };
|
|
22
23
|
const context = new Context(task.buildFile, taskName);
|
|
23
24
|
const build2 = new Proxy({}, {
|
|
24
25
|
get(_, name) {
|
|
@@ -43,6 +44,7 @@ function makeTask(buildFile, tasks, props, _def, _name) {
|
|
|
43
44
|
context.log[level](`Success ${$ms(Date.now() - now)}`);
|
|
44
45
|
return result;
|
|
45
46
|
}).catch((error) => {
|
|
47
|
+
fails.add(task);
|
|
46
48
|
throw context.log.fail(`Failure ${$ms(Date.now() - now)}`, error);
|
|
47
49
|
}).finally(async () => {
|
|
48
50
|
await ContextPromises.wait(context);
|
|
@@ -59,6 +61,7 @@ function makeTask(buildFile, tasks, props, _def, _name) {
|
|
|
59
61
|
cache: /* @__PURE__ */ new Map(),
|
|
60
62
|
stack: [],
|
|
61
63
|
props: Object.assign({}, props, overrideProps),
|
|
64
|
+
fails: /* @__PURE__ */ new Set(),
|
|
62
65
|
tasks
|
|
63
66
|
};
|
|
64
67
|
return invoke(state, _name);
|
|
@@ -90,8 +93,9 @@ function build(def) {
|
|
|
90
93
|
const logger = getLogger();
|
|
91
94
|
const state = {
|
|
92
95
|
cache: /* @__PURE__ */ new Map(),
|
|
93
|
-
stack: [],
|
|
94
96
|
props: Object.assign({}, props, overrideProps),
|
|
97
|
+
fails: /* @__PURE__ */ new Set(),
|
|
98
|
+
stack: [],
|
|
95
99
|
tasks
|
|
96
100
|
};
|
|
97
101
|
logger.notice("Starting...");
|
|
@@ -104,13 +108,29 @@ function build(def) {
|
|
|
104
108
|
}
|
|
105
109
|
logger.notice(`Build successful ${$ms(Date.now() - now)}`);
|
|
106
110
|
} catch (error) {
|
|
111
|
+
if (state.fails.size) {
|
|
112
|
+
logger.error("");
|
|
113
|
+
logger.error(state.fails.size, state.fails.size === 1 ? "task" : "tasks", "failed:");
|
|
114
|
+
state.fails.forEach((task) => logger.error($gry("*"), $t(task.name)));
|
|
115
|
+
logger.error("");
|
|
116
|
+
}
|
|
107
117
|
throw logger.fail(`Build failed ${$ms(Date.now() - now)}`, error);
|
|
108
118
|
}
|
|
109
119
|
};
|
|
110
|
-
const compiled = Object.assign(
|
|
120
|
+
const compiled = Object.assign(/* @__PURE__ */ Object.create(null), props, tasks);
|
|
111
121
|
Object.defineProperty(compiled, buildMarker, { value: invoke });
|
|
112
122
|
return compiled;
|
|
113
123
|
}
|
|
124
|
+
function isBuild(build2) {
|
|
125
|
+
return build2 && typeof build2[buildMarker] === "function";
|
|
126
|
+
}
|
|
127
|
+
function invokeTasks(build2, tasks, props) {
|
|
128
|
+
if (build2 && typeof build2 === "object" && buildMarker in build2 && typeof build2[buildMarker] === "function") {
|
|
129
|
+
return build2[buildMarker](tasks, props);
|
|
130
|
+
} else {
|
|
131
|
+
throw new TypeError("Invalid build instance");
|
|
132
|
+
}
|
|
133
|
+
}
|
|
114
134
|
function hookBefore(build2, taskName, hooks) {
|
|
115
135
|
const task = build2[taskName];
|
|
116
136
|
assert(isTask(task), `Task "${$t(taskName)}" not found in build`);
|
|
@@ -136,6 +156,8 @@ function hookAfter(build2, taskName, hooks) {
|
|
|
136
156
|
export {
|
|
137
157
|
build,
|
|
138
158
|
hookAfter,
|
|
139
|
-
hookBefore
|
|
159
|
+
hookBefore,
|
|
160
|
+
invokeTasks,
|
|
161
|
+
isBuild
|
|
140
162
|
};
|
|
141
163
|
//# sourceMappingURL=build.mjs.map
|
package/dist/build.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/build.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,cAAc;AACvB,SAAS,gBAAgB;AACzB,SAAS,KAAK,IAAI,IAAI,WAAW,kBAAkB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["props", "tasks", "build", "promise", "invoke"]
|
|
6
6
|
}
|
package/dist/cli.d.mts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import type { AbsolutePath } from './paths';
|
|
3
|
+
interface CommandLineOptions {
|
|
4
|
+
buildFile: AbsolutePath;
|
|
5
|
+
watchDirs: string[];
|
|
6
|
+
tasks: string[];
|
|
7
|
+
props: Record<string, string>;
|
|
8
|
+
listOnly: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** Parse `perocess.argv` and return our normalised command line options */
|
|
11
|
+
export declare function parseCommandLine(args: string[]): CommandLineOptions;
|
|
12
|
+
export {};
|
package/dist/cli.mjs
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// cli.mts
|
|
4
|
+
import _fs from "node:fs";
|
|
5
|
+
import { main, yargsParser } from "@plugjs/tsrun";
|
|
6
|
+
import { BuildFailure } from "./asserts.mjs";
|
|
7
|
+
import { invokeTasks, isBuild } from "./build.mjs";
|
|
8
|
+
import { $blu, $gry, $p, $red, $t, $und, $wht } from "./logging/colors.mjs";
|
|
9
|
+
import { getCurrentWorkingDirectory, resolveDirectory, resolveFile, resolveAbsolutePath } from "./paths.mjs";
|
|
10
|
+
var $bnd = (s) => $blu($und(s));
|
|
11
|
+
var $gnd = (s) => $gry($und(s));
|
|
12
|
+
var $wnd = (s) => $wht($und(s));
|
|
13
|
+
var version = true ? "0.4.0" : "0.0.0-dev";
|
|
14
|
+
function help() {
|
|
15
|
+
console.log(`${$bnd("Usage:")}
|
|
16
|
+
|
|
17
|
+
${$wht("plugjs")} ${$gry("[")}--options${$gry("] [... ")}prop=val${$gry(" ...] [... ")}task${$gry(" ...]")}
|
|
18
|
+
|
|
19
|
+
${$bnd("Options:")}
|
|
20
|
+
|
|
21
|
+
${$wht(`-f --file ${$gnd("file")}`)} Specify the build file to use (default ${$wnd("./build.ts")})
|
|
22
|
+
${$wht(`-w --watch ${$gnd("dir")}`)} Watch for changes on the specified directory and run
|
|
23
|
+
${$wht("-v --verbose")} Increase logging verbosity
|
|
24
|
+
${$wht("-q --quiet")} Decrease logging verbosity
|
|
25
|
+
${$wht("-c --colors")} Force colorful output (use ${$wnd("--no-colors")} to force plain text)
|
|
26
|
+
${$wht("-l --list")} Only list the tasks defined by the build, nothing more!
|
|
27
|
+
${$wht("-h --help")} Help! You're reading it now!
|
|
28
|
+
${$wht(" --version")} Version! This one: ${version}!
|
|
29
|
+
|
|
30
|
+
${$bnd("Properties:")}
|
|
31
|
+
|
|
32
|
+
Any argument in the format ${$wnd("key=value")} will be interpeted as a property to
|
|
33
|
+
be injected in the build process (e.g. ${$wnd("mode=production")}).
|
|
34
|
+
|
|
35
|
+
${$bnd("Tasks:")}
|
|
36
|
+
|
|
37
|
+
Any other argument will be treated as a task name. If no task names are
|
|
38
|
+
specified, the ${$t("default")} task will be executed.
|
|
39
|
+
|
|
40
|
+
${$bnd("Watch Mode:")}
|
|
41
|
+
|
|
42
|
+
The ${$wnd("--watch")} option can be specified multiple times, and each single
|
|
43
|
+
directory specified will be watched for changes. Note that Plug's own
|
|
44
|
+
watch mode is incredibly basic, for more complex scenarios use something
|
|
45
|
+
more advanced like nodemon ${$gry("(")}${$gnd("https://www.npmjs.com/package/nodemon")}${$gry(")")}.
|
|
46
|
+
|
|
47
|
+
${$bnd("TypeScript module format:")}
|
|
48
|
+
|
|
49
|
+
Normally our TypeScript loader will transpile ${$wnd(".ts")} files to the type
|
|
50
|
+
specified in ${$wnd("package.json")}, either ${$wnd("commonjs")} (the default) or ${$wnd("module")}.
|
|
51
|
+
|
|
52
|
+
To force a specific module format use one of the following flags:
|
|
53
|
+
|
|
54
|
+
${$wht("--force-esm")} Force transpilation of ${$wnd(".ts")} files to EcmaScript modules
|
|
55
|
+
${$wht("--force-cjs")} Force transpilation of ${$wnd(".ts")} files to CommonJS modules
|
|
56
|
+
`);
|
|
57
|
+
}
|
|
58
|
+
function parseCommandLine(args) {
|
|
59
|
+
const parsed = yargsParser(args, {
|
|
60
|
+
configuration: {
|
|
61
|
+
"camel-case-expansion": false,
|
|
62
|
+
"strip-aliased": true,
|
|
63
|
+
"strip-dashed": true
|
|
64
|
+
},
|
|
65
|
+
alias: {
|
|
66
|
+
"verbose": ["v"],
|
|
67
|
+
"quiet": ["q"],
|
|
68
|
+
"colors": ["c"],
|
|
69
|
+
"file": ["f"],
|
|
70
|
+
"list": ["l"],
|
|
71
|
+
"watch": ["w"],
|
|
72
|
+
"help": ["h"]
|
|
73
|
+
},
|
|
74
|
+
string: ["file", "watch"],
|
|
75
|
+
boolean: ["help", "colors", "list", "force-esm", "force-cjs", "version"],
|
|
76
|
+
count: ["verbose", "quiet"]
|
|
77
|
+
});
|
|
78
|
+
const tasks = [];
|
|
79
|
+
const props = {};
|
|
80
|
+
const watchDirs = [];
|
|
81
|
+
let verbosity = 0;
|
|
82
|
+
let colors = void 0;
|
|
83
|
+
let file = void 0;
|
|
84
|
+
let listOnly = false;
|
|
85
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
86
|
+
switch (key) {
|
|
87
|
+
case "_":
|
|
88
|
+
value.forEach((current) => {
|
|
89
|
+
const [key2, val] = current.split(/=(.*)/, 2);
|
|
90
|
+
if (key2 && val)
|
|
91
|
+
props[key2] = val;
|
|
92
|
+
else
|
|
93
|
+
tasks.push(current);
|
|
94
|
+
});
|
|
95
|
+
break;
|
|
96
|
+
case "verbose":
|
|
97
|
+
verbosity = verbosity + value;
|
|
98
|
+
break;
|
|
99
|
+
case "quiet":
|
|
100
|
+
verbosity = verbosity - value;
|
|
101
|
+
break;
|
|
102
|
+
case "file":
|
|
103
|
+
file = value;
|
|
104
|
+
break;
|
|
105
|
+
case "watch":
|
|
106
|
+
if (Array.isArray(value))
|
|
107
|
+
watchDirs.push(...value);
|
|
108
|
+
else if (value)
|
|
109
|
+
watchDirs.push(value);
|
|
110
|
+
break;
|
|
111
|
+
case "colors":
|
|
112
|
+
colors = !!value;
|
|
113
|
+
break;
|
|
114
|
+
case "list":
|
|
115
|
+
listOnly = !!value;
|
|
116
|
+
break;
|
|
117
|
+
case "help":
|
|
118
|
+
help();
|
|
119
|
+
process.exit(0);
|
|
120
|
+
break;
|
|
121
|
+
case "version":
|
|
122
|
+
console.log(`PlugJS ${$gry("ver.")} ${$wnd(version)}`);
|
|
123
|
+
process.exit(0);
|
|
124
|
+
break;
|
|
125
|
+
default:
|
|
126
|
+
console.log(`Unsupported option ${$wnd(key)} (try ${$wnd("--help")})`);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (colors !== void 0)
|
|
131
|
+
process.env.LOG_COLORS = `${colors}`;
|
|
132
|
+
if (verbosity) {
|
|
133
|
+
const levels = ["TRACE", "DEBUG", "INFO", "NOTICE", "WARN", "ERROR", "OFF"];
|
|
134
|
+
let level = levels.indexOf("NOTICE") - verbosity;
|
|
135
|
+
if (level >= levels.length)
|
|
136
|
+
level = levels.length - 1;
|
|
137
|
+
else if (level < 0)
|
|
138
|
+
level = 0;
|
|
139
|
+
process.env.LOG_LEVEL = levels[level];
|
|
140
|
+
}
|
|
141
|
+
const cwd = getCurrentWorkingDirectory();
|
|
142
|
+
const exts = ["ts", "mts", "mjs", "js", "mjs", "cjs"];
|
|
143
|
+
let buildFile = void 0;
|
|
144
|
+
if (file) {
|
|
145
|
+
const absolute = resolveFile(cwd, file);
|
|
146
|
+
if (!absolute) {
|
|
147
|
+
console.log(`Specified build file "${file}" was not found`);
|
|
148
|
+
process.exit(1);
|
|
149
|
+
} else {
|
|
150
|
+
buildFile = absolute;
|
|
151
|
+
}
|
|
152
|
+
} else {
|
|
153
|
+
for (const ext of exts) {
|
|
154
|
+
const absolute = resolveFile(cwd, `build.${ext}`);
|
|
155
|
+
if (!absolute)
|
|
156
|
+
continue;
|
|
157
|
+
buildFile = absolute;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (!buildFile) {
|
|
162
|
+
console.log(`${$red("Unable to find build file")} ${$wht(`./build.[${exts.join("|")}]`)}`);
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
watchDirs.forEach((watchDir) => {
|
|
166
|
+
const absolute = resolveDirectory(cwd, watchDir);
|
|
167
|
+
if (!absolute) {
|
|
168
|
+
const path = resolveAbsolutePath(cwd, watchDir);
|
|
169
|
+
console.log(`Specified watch directory "${$p(path)}" was not found`);
|
|
170
|
+
process.exit(1);
|
|
171
|
+
} else {
|
|
172
|
+
watchDir = absolute;
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
return { buildFile, watchDirs, tasks, props, listOnly };
|
|
176
|
+
}
|
|
177
|
+
main(import.meta.url, async (args) => {
|
|
178
|
+
const {
|
|
179
|
+
buildFile,
|
|
180
|
+
watchDirs,
|
|
181
|
+
tasks,
|
|
182
|
+
props,
|
|
183
|
+
listOnly
|
|
184
|
+
} = parseCommandLine(args);
|
|
185
|
+
if (tasks.length === 0)
|
|
186
|
+
tasks.push("default");
|
|
187
|
+
let maybeBuild = await import(buildFile);
|
|
188
|
+
while (maybeBuild) {
|
|
189
|
+
if (isBuild(maybeBuild))
|
|
190
|
+
break;
|
|
191
|
+
maybeBuild = maybeBuild.default;
|
|
192
|
+
}
|
|
193
|
+
if (!isBuild(maybeBuild)) {
|
|
194
|
+
console.log($red("Build file did not export a proper build"));
|
|
195
|
+
console.log();
|
|
196
|
+
console.log('- If using CommonJS export your build as "module.exports"');
|
|
197
|
+
console.log(` e.g.: ${$wht("module.exports = build({ ... })")}`);
|
|
198
|
+
console.log();
|
|
199
|
+
console.log('- If using ESM modules export your build as "default"');
|
|
200
|
+
console.log(` e.g.: ${$wht("export default build({ ... })")}`);
|
|
201
|
+
console.log();
|
|
202
|
+
process.exit(1);
|
|
203
|
+
}
|
|
204
|
+
const build = maybeBuild;
|
|
205
|
+
if (listOnly) {
|
|
206
|
+
const taskNames = [];
|
|
207
|
+
const propNames = [];
|
|
208
|
+
for (const [key, value] of Object.entries(build)) {
|
|
209
|
+
(typeof value === "string" ? propNames : taskNames).push(key);
|
|
210
|
+
}
|
|
211
|
+
console.log(`
|
|
212
|
+
${$gry("Outline of")} ${$p(buildFile)}`);
|
|
213
|
+
console.log("\nKnown tasks:\n");
|
|
214
|
+
for (const taskName of taskNames.sort()) {
|
|
215
|
+
console.log(` ${$gry("\u25A0")} ${$t(taskName)}`);
|
|
216
|
+
}
|
|
217
|
+
console.log("\nKnown properties:\n");
|
|
218
|
+
for (const propName of propNames.sort()) {
|
|
219
|
+
const value = build[propName] ? ` ${$gry("(default")} ${$und(build[propName])}${$gry(")")}` : "";
|
|
220
|
+
console.log(` ${$gry("\u25A1")} ${$blu(propName)}${value}`);
|
|
221
|
+
}
|
|
222
|
+
console.log();
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (watchDirs.length) {
|
|
226
|
+
return new Promise((_, reject) => {
|
|
227
|
+
let timeout = void 0;
|
|
228
|
+
const runme = () => {
|
|
229
|
+
invokeTasks(build, tasks, props).then(() => {
|
|
230
|
+
console.log(`
|
|
231
|
+
${$gry("Watching for files change...")}
|
|
232
|
+
`);
|
|
233
|
+
}, (error) => {
|
|
234
|
+
if (error instanceof BuildFailure) {
|
|
235
|
+
console.log(`
|
|
236
|
+
${$gry("Watching for files change...")}
|
|
237
|
+
`);
|
|
238
|
+
} else {
|
|
239
|
+
watchers.forEach((watcher) => watcher.close());
|
|
240
|
+
reject(error);
|
|
241
|
+
}
|
|
242
|
+
}).finally(() => {
|
|
243
|
+
timeout = void 0;
|
|
244
|
+
});
|
|
245
|
+
};
|
|
246
|
+
const watchers = watchDirs.map((watchDir) => {
|
|
247
|
+
return _fs.watch(watchDir, { recursive: true }, () => {
|
|
248
|
+
if (!timeout)
|
|
249
|
+
timeout = setTimeout(runme, 250);
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
runme();
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
await invokeTasks(build, tasks, props);
|
|
257
|
+
} catch (error) {
|
|
258
|
+
if (!(error instanceof BuildFailure))
|
|
259
|
+
console.log(error);
|
|
260
|
+
process.exitCode = 1;
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
export {
|
|
264
|
+
parseCommandLine
|
|
265
|
+
};
|
|
266
|
+
//# sourceMappingURL=cli.mjs.map
|
package/dist/cli.mjs.map
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli.mts"],
|
|
4
|
+
"mappings": ";;;AAGA,OAAO,SAAS;AAEhB,SAAS,MAAM,mBAAmB;AAElC,SAAS,oBAAoB;AAC7B,SAAS,aAAa,eAAe;AACrC,SAAS,MAAM,MAAM,IAAI,MAAM,IAAI,MAAM,YAAY;AACrD,SAAS,4BAA4B,kBAAkB,aAAa,2BAA2B;AAK/F,IAAM,OAAO,CAAC,MAAsB,KAAK,KAAK,CAAC,CAAC;AAChD,IAAM,OAAO,CAAC,MAAsB,KAAK,KAAK,CAAC,CAAC;AAChD,IAAM,OAAO,CAAC,MAAsB,KAAK,KAAK,CAAC,CAAC;AAGhD,IAAM,UAAU,OAAgC,UAAY;AAQ5D,SAAS,OAAa;AACpB,UAAQ,IAAI,GAAG,KAAK,QAAQ;AAAA;AAAA,IAE1B,KAAK,QAAQ,KAAK,KAAK,GAAG,aAAa,KAAK,SAAS,YAAY,KAAK,aAAa,QAAQ,KAAK,OAAO;AAAA;AAAA,IAEvG,KAAK,UAAU;AAAA;AAAA,QAEX,KAAK,aAAa,KAAK,MAAM,GAAG,6CAA6C,KAAK,YAAY;AAAA,QAC9F,KAAK,cAAc,KAAK,KAAK,GAAG;AAAA,QAChC,KAAK,cAAc;AAAA,QACnB,KAAK,YAAY;AAAA,QACjB,KAAK,aAAa,oCAAoC,KAAK,aAAa;AAAA,QACxE,KAAK,WAAW;AAAA,QAChB,KAAK,WAAW;AAAA,QAChB,KAAK,cAAc,2BAA2B;AAAA;AAAA,IAElD,KAAK,aAAa;AAAA;AAAA,mCAEa,KAAK,WAAW;AAAA,+CACJ,KAAK,iBAAiB;AAAA;AAAA,IAEjE,KAAK,QAAQ;AAAA;AAAA;AAAA,uBAGM,GAAG,SAAS;AAAA;AAAA,IAE/B,KAAK,aAAa;AAAA;AAAA,YAEV,KAAK,SAAS;AAAA;AAAA;AAAA,mCAGS,KAAK,GAAG,IAAI,KAAK,uCAAuC,IAAI,KAAK,GAAG;AAAA;AAAA,IAEnG,KAAK,2BAA2B;AAAA;AAAA,sDAEkB,KAAK,KAAK;AAAA,qBAC3C,KAAK,cAAc,aAAa,KAAK,UAAU,sBAAsB,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA,QAI/F,KAAK,aAAa,+BAA+B,KAAK,KAAK;AAAA,QAC3D,KAAK,aAAa,+BAA+B,KAAK,KAAK;AAAA,KAC9D;AACL;AAeO,SAAS,iBAAiB,MAAoC;AAEnE,QAAM,SAAS,YAAY,MAAM;AAAA,IAC/B,eAAe;AAAA,MACb,wBAAwB;AAAA,MACxB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,IAClB;AAAA,IAEA,OAAO;AAAA,MACL,WAAW,CAAE,GAAI;AAAA,MACjB,SAAS,CAAE,GAAI;AAAA,MACf,UAAU,CAAE,GAAI;AAAA,MAChB,QAAQ,CAAE,GAAI;AAAA,MACd,QAAQ,CAAE,GAAI;AAAA,MACd,SAAS,CAAE,GAAI;AAAA,MACf,QAAQ,CAAE,GAAI;AAAA,IAChB;AAAA,IAEA,QAAQ,CAAE,QAAQ,OAAQ;AAAA,IAC1B,SAAS,CAAE,QAAQ,UAAU,QAAQ,aAAa,aAAa,SAAU;AAAA,IACzE,OAAO,CAAE,WAAW,OAAQ;AAAA,EAC9B,CAAC;AAOD,QAAM,QAAkB,CAAC;AACzB,QAAM,QAAgC,CAAC;AACvC,QAAM,YAAsB,CAAC;AAC7B,MAAI,YAAY;AAChB,MAAI,SAA8B;AAClC,MAAI,OAA2B;AAC/B,MAAI,WAAW;AAGf,aAAW,CAAE,KAAK,KAAM,KAAK,OAAO,QAAQ,MAAM,GAAG;AACnD,YAAQ,KAAK;AAAA,MACX,KAAK;AACH,cAAM,QAAQ,CAAC,YAAoB;AACjC,gBAAM,CAAEA,MAAK,GAAI,IAAI,QAAQ,MAAM,SAAS,CAAC;AAC7C,cAAIA,QAAO;AAAK,kBAAMA,IAAG,IAAI;AAAA;AACxB,kBAAM,KAAK,OAAO;AAAA,QACzB,CAAC;AACD;AAAA,MACF,KAAK;AACH,oBAAY,YAAY;AACxB;AAAA,MACF,KAAK;AACH,oBAAY,YAAY;AACxB;AAAA,MACF,KAAK;AACH,eAAO;AACP;AAAA,MACF,KAAK;AACH,YAAI,MAAM,QAAQ,KAAK;AAAG,oBAAU,KAAK,GAAG,KAAK;AAAA,iBACxC;AAAO,oBAAU,KAAK,KAAK;AACpC;AAAA,MACF,KAAK;AACH,iBAAS,CAAC,CAAE;AACZ;AAAA,MACF,KAAK;AACH,mBAAW,CAAC,CAAE;AACd;AAAA,MACF,KAAK;AACH,aAAK;AACL,gBAAQ,KAAK,CAAC;AACd;AAAA,MACF,KAAK;AACH,gBAAQ,IAAI,UAAU,KAAK,MAAM,KAAK,KAAK,OAAO,GAAG;AACrD,gBAAQ,KAAK,CAAC;AACd;AAAA,MACF;AACE,gBAAQ,IAAI,sBAAsB,KAAK,GAAG,UAAU,KAAK,QAAQ,IAAI;AACrE,gBAAQ,KAAK,CAAC;AAAA,IAClB;AAAA,EACF;AAOA,MAAI,WAAW;AAAW,YAAQ,IAAI,aAAa,GAAG;AAGtD,MAAI,WAAW;AACb,UAAM,SAAS,CAAE,SAAS,SAAS,QAAQ,UAAU,QAAQ,SAAS,KAAM;AAC5E,QAAI,QAAQ,OAAO,QAAQ,QAAQ,IAAI;AACvC,QAAI,SAAS,OAAO;AAAQ,cAAQ,OAAO,SAAS;AAAA,aAC3C,QAAQ;AAAG,cAAQ;AAE5B,YAAQ,IAAI,YAAY,OAAO,KAAK;AAAA,EACtC;AAOA,QAAM,MAAM,2BAA2B;AACvC,QAAM,OAAO,CAAE,MAAM,OAAO,OAAO,MAAM,OAAO,KAAM;AAEtD,MAAI,YAAsC;AAE1C,MAAI,MAAM;AACR,UAAM,WAAW,YAAY,KAAK,IAAI;AACtC,QAAI,CAAE,UAAU;AACd,cAAQ,IAAI,yBAAyB,qBAAqB;AAC1D,cAAQ,KAAK,CAAC;AAAA,IAChB,OAAO;AACL,kBAAY;AAAA,IACd;AAAA,EACF,OAAO;AACL,eAAW,OAAO,MAAM;AACtB,YAAM,WAAW,YAAY,KAAK,SAAS,KAAK;AAChD,UAAI,CAAE;AAAU;AAChB,kBAAY;AACZ;AAAA,IACF;AAAA,EACF;AAGA,MAAI,CAAE,WAAW;AACf,YAAQ,IAAI,GAAG,KAAK,2BAA2B,KAAK,KAAK,YAAY,KAAK,KAAK,GAAG,IAAI,GAAG;AACzF,YAAQ,KAAK,CAAC;AAAA,EAChB;AAMA,YAAU,QAAQ,CAAC,aAAa;AAC9B,UAAM,WAAW,iBAAiB,KAAK,QAAQ;AAC/C,QAAI,CAAE,UAAU;AACd,YAAM,OAAO,oBAAoB,KAAK,QAAQ;AAC9C,cAAQ,IAAI,8BAA8B,GAAG,IAAI,kBAAkB;AACnE,cAAQ,KAAK,CAAC;AAAA,IAChB,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF,CAAC;AAMD,SAAO,EAAE,WAAW,WAAW,OAAO,OAAO,SAAS;AACxD;AAMA,KAAK,YAAY,KAAK,OAAO,SAAkC;AAE7D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,iBAAiB,IAAI;AAGzB,MAAI,MAAM,WAAW;AAAG,UAAM,KAAK,SAAS;AAG5C,MAAI,aAAa,MAAM,OAAO;AAC9B,SAAO,YAAY;AACjB,QAAI,QAAQ,UAAU;AAAG;AACzB,iBAAa,WAAW;AAAA,EAC1B;AAGA,MAAI,CAAE,QAAQ,UAAU,GAAG;AACzB,YAAQ,IAAI,KAAK,0CAA0C,CAAC;AAC5D,YAAQ,IAAI;AACZ,YAAQ,IAAI,2DAA2D;AACvE,YAAQ,IAAI,WAAW,KAAK,iCAAiC,GAAG;AAChE,YAAQ,IAAI;AACZ,YAAQ,IAAI,uDAAuD;AACnE,YAAQ,IAAI,WAAW,KAAK,+BAA+B,GAAG;AAC9D,YAAQ,IAAI;AACZ,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,QAAQ;AAGd,MAAI,UAAU;AACZ,UAAM,YAAsB,CAAC;AAC7B,UAAM,YAAsB,CAAC;AAE7B,eAAW,CAAE,KAAK,KAAM,KAAK,OAAO,QAAQ,KAAK,GAAG;AAClD,OAAC,OAAO,UAAU,WAAW,YAAY,WAAW,KAAK,GAAG;AAAA,IAC9D;AAEA,YAAQ,IAAI;AAAA,EAAK,KAAK,YAAY,KAAK,GAAG,SAAS,GAAG;AAEtD,YAAQ,IAAI,kBAAkB;AAC9B,eAAW,YAAY,UAAU,KAAK,GAAG;AACvC,cAAQ,IAAI,IAAI,KAAK,QAAQ,KAAK,GAAG,QAAQ,GAAG;AAAA,IAClD;AAEA,YAAQ,IAAI,uBAAuB;AACnC,eAAW,YAAY,UAAU,KAAK,GAAG;AACvC,YAAM,QAAQ,MAAM,QAAQ,IAC1B,IAAI,KAAK,UAAU,KAAK,KAAK,MAAM,QAAQ,CAAC,IAAI,KAAK,GAAG,MAAM;AAChE,cAAQ,IAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,IAAI,OAAO;AAAA,IAC5D;AAEA,YAAQ,IAAI;AACZ;AAAA,EACF;AAGA,MAAI,UAAU,QAAQ;AACpB,WAAO,IAAI,QAAQ,CAAC,GAAG,WAAW;AAIhC,UAAI,UAAsC;AAG1C,YAAM,QAAQ,MAAY;AACxB,oBAAY,OAAO,OAAO,KAAK,EAC1B,KAAK,MAAM;AACV,kBAAQ,IAAI;AAAA,EAAK,KAAK,8BAA8B;AAAA,CAAK;AAAA,QAC3D,GAAG,CAAC,UAAU;AACZ,cAAI,iBAAiB,cAAc;AACjC,oBAAQ,IAAI;AAAA,EAAK,KAAK,8BAA8B;AAAA,CAAK;AAAA,UAC3D,OAAO;AACL,qBAAS,QAAQ,CAAC,YAAY,QAAQ,MAAM,CAAC;AAC7C,mBAAO,KAAK;AAAA,UACd;AAAA,QACF,CAAC,EACA,QAAQ,MAAM;AACb,oBAAU;AAAA,QACZ,CAAC;AAAA,MACP;AAGA,YAAM,WAAW,UAAU,IAAI,CAAC,aAAa;AAC3C,eAAO,IAAI,MAAM,UAAU,EAAE,WAAW,KAAK,GAAG,MAAM;AACpD,cAAI,CAAE;AAAS,sBAAU,WAAW,OAAO,GAAG;AAAA,QAChD,CAAC;AAAA,MACH,CAAC;AAGD,YAAM;AAAA,IACR,CAAC;AAAA,EACH;AAGA,MAAI;AACF,UAAM,YAAY,OAAO,OAAO,KAAK;AAAA,EACvC,SAAS,OAAP;AACA,QAAI,EAAE,iBAAiB;AAAe,cAAQ,IAAI,KAAK;AACvD,YAAQ,WAAW;AAAA,EACrB;AACF,CAAC;",
|
|
5
|
+
"names": ["key"]
|
|
6
|
+
}
|