@plugjs/plug 0.3.4 → 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.
Files changed (77) hide show
  1. package/dist/asserts.cjs +9 -11
  2. package/dist/asserts.cjs.map +1 -1
  3. package/dist/asserts.d.ts +1 -2
  4. package/dist/asserts.mjs +8 -9
  5. package/dist/asserts.mjs.map +1 -1
  6. package/dist/build.cjs +29 -5
  7. package/dist/build.cjs.map +1 -1
  8. package/dist/build.d.ts +4 -0
  9. package/dist/build.mjs +27 -5
  10. package/dist/build.mjs.map +1 -1
  11. package/dist/cli.d.mts +12 -0
  12. package/dist/cli.mjs +266 -0
  13. package/dist/cli.mjs.map +6 -0
  14. package/dist/fork.cjs +35 -12
  15. package/dist/fork.cjs.map +1 -1
  16. package/dist/fork.d.ts +10 -0
  17. package/dist/fork.mjs +36 -13
  18. package/dist/fork.mjs.map +1 -1
  19. package/dist/helpers.cjs +30 -10
  20. package/dist/helpers.cjs.map +2 -2
  21. package/dist/helpers.d.ts +12 -0
  22. package/dist/helpers.mjs +35 -11
  23. package/dist/helpers.mjs.map +2 -2
  24. package/dist/index.cjs +5 -0
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.ts +2 -1
  27. package/dist/index.mjs +4 -1
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/logging/emit.cjs +4 -4
  30. package/dist/logging/emit.cjs.map +1 -1
  31. package/dist/logging/emit.mjs +4 -4
  32. package/dist/logging/emit.mjs.map +1 -1
  33. package/dist/logging/logger.cjs +43 -2
  34. package/dist/logging/logger.cjs.map +1 -1
  35. package/dist/logging/logger.d.ts +36 -3
  36. package/dist/logging/logger.mjs +43 -3
  37. package/dist/logging/logger.mjs.map +1 -1
  38. package/dist/logging/options.cjs +5 -2
  39. package/dist/logging/options.cjs.map +1 -1
  40. package/dist/logging/options.mjs +5 -2
  41. package/dist/logging/options.mjs.map +1 -1
  42. package/dist/logging.cjs +14 -3
  43. package/dist/logging.cjs.map +1 -1
  44. package/dist/logging.d.ts +2 -0
  45. package/dist/logging.mjs +13 -3
  46. package/dist/logging.mjs.map +1 -1
  47. package/dist/plugs/build.cjs +66 -0
  48. package/dist/plugs/build.cjs.map +6 -0
  49. package/dist/plugs/build.d.ts +13 -0
  50. package/dist/plugs/build.mjs +40 -0
  51. package/dist/plugs/build.mjs.map +6 -0
  52. package/dist/types.d.ts +2 -0
  53. package/dist/utils/exec.cjs +5 -12
  54. package/dist/utils/exec.cjs.map +2 -2
  55. package/dist/utils/exec.d.ts +0 -2
  56. package/dist/utils/exec.mjs +6 -13
  57. package/dist/utils/exec.mjs.map +1 -1
  58. package/package.json +7 -9
  59. package/src/asserts.ts +9 -11
  60. package/src/build.ts +33 -4
  61. package/{extra/plug.mts → src/cli.mts} +115 -141
  62. package/src/fork.ts +50 -13
  63. package/src/helpers.ts +53 -1
  64. package/src/index.ts +2 -1
  65. package/src/logging/emit.ts +4 -4
  66. package/src/logging/logger.ts +60 -7
  67. package/src/logging/options.ts +5 -1
  68. package/src/logging.ts +20 -5
  69. package/src/plugs/build.ts +58 -0
  70. package/src/types.ts +2 -0
  71. package/src/utils/exec.ts +6 -20
  72. package/cli/plug.mjs +0 -1385
  73. package/cli/ts-loader.mjs +0 -275
  74. package/cli/tsrun.mjs +0 -1204
  75. package/extra/ts-loader.mts +0 -546
  76. package/extra/tsrun.mts +0 -127
  77. 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
@@ -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;AAAA;AAIA,oBAAiC;AAGjC,IAAM,eAAe,OAAO,IAAI,qBAAqB;AAG9C,SAAS,eAAe,KAA+B;AAC5D,SAAO,OAAO,IAAI,YAAY,MAAM;AACtC;AAGO,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;AAG5D,WAAO,iBAAiB,MAAM;AAAA,MAC5B,CAAC,YAAY,GAAG,EAAE,OAAO,aAAa;AAAA,MACtC,QAAQ,EAAE,OAAO,eAAe;AAAA,IAClC,CAAC;AAAA,EACH;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;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;",
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
@@ -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,SAAS,eAAe,KAA+B;AAC5D,SAAO,OAAO,IAAI,YAAY,MAAM;AACtC;AAGO,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;AAG5D,WAAO,iBAAiB,MAAM;AAAA,MAC5B,CAAC,YAAY,GAAG,EAAE,OAAO,aAAa;AAAA,MACtC,QAAQ,EAAE,OAAO,eAAe;AAAA,IAClC,CAAC;AAAA,EACH;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;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;",
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
- state = { stack, cache, tasks: tasks2, props: props2 };
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({}, props, tasks);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/build.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
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
- state = { stack, cache, tasks: tasks2, props: props2 };
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({}, props, tasks);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/build.ts"],
4
- "mappings": "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",
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
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/cli.mts"],
4
+ "mappings": "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",
5
+ "names": ["key"]
6
+ }