@plugjs/plug 0.3.5 → 0.4.1
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 +10 -12
- package/dist/asserts.cjs.map +1 -1
- package/dist/asserts.d.ts +1 -2
- package/dist/asserts.mjs +9 -10
- package/dist/asserts.mjs.map +1 -1
- package/dist/async.cjs +5 -20
- package/dist/async.cjs.map +2 -2
- package/dist/async.mjs +5 -20
- package/dist/async.mjs.map +2 -2
- package/dist/build.cjs +113 -64
- package/dist/build.cjs.map +2 -2
- package/dist/build.d.ts +9 -7
- package/dist/build.mjs +110 -63
- package/dist/build.mjs.map +2 -2
- package/dist/cli.d.mts +12 -0
- package/dist/cli.mjs +266 -0
- package/dist/cli.mjs.map +6 -0
- package/dist/files.cjs +5 -3
- package/dist/files.cjs.map +1 -1
- package/dist/files.d.ts +2 -1
- package/dist/files.mjs +11 -4
- package/dist/files.mjs.map +1 -1
- 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 +32 -13
- package/dist/helpers.cjs.map +2 -2
- package/dist/helpers.d.ts +12 -0
- package/dist/helpers.mjs +37 -14
- 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 +8 -12
- package/dist/logging/options.cjs.map +1 -1
- package/dist/logging/options.d.ts +44 -1
- package/dist/logging/options.mjs +8 -12
- 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 +63 -0
- package/dist/plugs/build.cjs.map +6 -0
- package/dist/plugs/build.d.ts +13 -0
- package/dist/plugs/build.mjs +37 -0
- package/dist/plugs/build.mjs.map +6 -0
- package/dist/plugs/debug.cjs +7 -9
- package/dist/plugs/debug.cjs.map +1 -1
- package/dist/plugs/debug.mjs +8 -10
- package/dist/plugs/debug.mjs.map +1 -1
- package/dist/types.cjs +12 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +35 -9
- package/dist/types.mjs +5 -0
- package/dist/types.mjs.map +2 -2
- package/dist/utils/diff.cjs +1 -4
- package/dist/utils/diff.cjs.map +1 -1
- package/dist/utils/diff.mjs +1 -4
- package/dist/utils/diff.mjs.map +1 -1
- 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/dist/utils/{types.cjs → singleton.cjs} +14 -13
- package/dist/utils/singleton.cjs.map +6 -0
- package/dist/utils/singleton.d.ts +12 -0
- package/dist/utils/singleton.mjs +13 -0
- package/dist/utils/singleton.mjs.map +6 -0
- package/dist/utils.cjs +2 -2
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +7 -9
- package/src/asserts.ts +10 -12
- package/src/async.ts +6 -29
- package/src/build.ts +169 -106
- package/{extra/plug.mts → src/cli.mts} +115 -141
- package/src/files.ts +14 -6
- package/src/fork.ts +42 -16
- package/src/helpers.ts +56 -5
- 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 +9 -14
- package/src/logging.ts +20 -5
- package/src/plugs/build.ts +45 -0
- package/src/plugs/debug.ts +10 -9
- package/src/types.ts +54 -23
- package/src/utils/diff.ts +1 -6
- package/src/utils/exec.ts +6 -20
- package/src/utils/singleton.ts +19 -0
- package/src/utils.ts +1 -1
- package/cli/plug.mjs +0 -1385
- package/cli/ts-loader.mjs +0 -275
- package/cli/tsrun.mjs +0 -1204
- package/dist/utils/types.cjs.map +0 -6
- package/dist/utils/types.d.ts +0 -4
- package/dist/utils/types.mjs +0 -12
- package/dist/utils/types.mjs.map +0 -6
- package/extra/ts-loader.mts +0 -546
- package/extra/tsrun.mts +0 -127
- package/extra/utils.ts +0 -150
- package/src/utils/types.ts +0 -11
package/dist/build.mjs
CHANGED
|
@@ -1,141 +1,188 @@
|
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
import { getSingleton } from "./utils/singleton.mjs";
|
|
8
|
+
import { buildMarker } from "./types.mjs";
|
|
9
|
+
var taskCallMarker = Symbol.for("plugjs:plug:types:TaskCall");
|
|
10
|
+
function isTaskCall(something) {
|
|
11
|
+
return something[taskCallMarker] === taskCallMarker;
|
|
10
12
|
}
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
function merge(a, b) {
|
|
14
|
+
return Object.assign(/* @__PURE__ */ Object.create(null), a, b);
|
|
15
|
+
}
|
|
16
|
+
function makeState(state) {
|
|
17
|
+
const {
|
|
18
|
+
cache = /* @__PURE__ */ new Map(),
|
|
19
|
+
fails = /* @__PURE__ */ new Set(),
|
|
20
|
+
stack = [],
|
|
21
|
+
tasks = {},
|
|
22
|
+
props = {}
|
|
23
|
+
} = state;
|
|
24
|
+
return { cache, fails, stack, tasks, props };
|
|
25
|
+
}
|
|
26
|
+
var lastIdKey = Symbol.for("plugjs:plug:singleton:taskId");
|
|
27
|
+
var taskId = getSingleton(lastIdKey, () => ({ id: 0 }));
|
|
28
|
+
var TaskImpl = class {
|
|
29
|
+
constructor(name, buildFile, _def, _tasks, _props) {
|
|
30
|
+
this.name = name;
|
|
31
|
+
this.buildFile = buildFile;
|
|
32
|
+
this._def = _def;
|
|
33
|
+
this.tasks = _tasks;
|
|
34
|
+
this.props = _props;
|
|
35
|
+
}
|
|
36
|
+
before = [];
|
|
37
|
+
after = [];
|
|
38
|
+
id = ++taskId.id;
|
|
39
|
+
props;
|
|
40
|
+
tasks;
|
|
41
|
+
async invoke(state, taskName) {
|
|
42
|
+
assert(!state.stack.includes(this), `Recursion detected calling ${$t(taskName)}`);
|
|
43
|
+
const cached = state.cache.get(this);
|
|
15
44
|
if (cached)
|
|
16
45
|
return cached;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
46
|
+
state = makeState({
|
|
47
|
+
props: merge(this.props, state.props),
|
|
48
|
+
tasks: merge(this.tasks, state.tasks),
|
|
49
|
+
stack: [...state.stack, this],
|
|
50
|
+
cache: state.cache,
|
|
51
|
+
fails: state.fails
|
|
52
|
+
});
|
|
53
|
+
const context = new Context(this.buildFile, taskName);
|
|
23
54
|
const build2 = new Proxy({}, {
|
|
24
|
-
get(_, name) {
|
|
25
|
-
if (name in
|
|
55
|
+
get: (_, name) => {
|
|
56
|
+
if (name in state.tasks) {
|
|
26
57
|
return () => {
|
|
27
|
-
const promise2 =
|
|
58
|
+
const promise2 = state.tasks[name].invoke(state, name);
|
|
28
59
|
return new PipeImpl(context, promise2);
|
|
29
60
|
};
|
|
30
|
-
} else if (name in
|
|
31
|
-
return
|
|
61
|
+
} else if (name in state.props) {
|
|
62
|
+
return state.props[name];
|
|
32
63
|
}
|
|
33
64
|
}
|
|
34
65
|
});
|
|
35
|
-
for (const before of
|
|
66
|
+
for (const before of this.before)
|
|
36
67
|
await before.invoke(state, before.name);
|
|
37
68
|
context.log.info("Running...");
|
|
38
69
|
const now = Date.now();
|
|
39
70
|
const promise = runAsync(context, taskName, async () => {
|
|
40
|
-
return await _def.call(build2) || void 0;
|
|
71
|
+
return await this._def.call(build2) || void 0;
|
|
41
72
|
}).then(async (result) => {
|
|
42
73
|
const level = taskName.startsWith("_") ? "info" : "notice";
|
|
43
74
|
context.log[level](`Success ${$ms(Date.now() - now)}`);
|
|
44
75
|
return result;
|
|
45
76
|
}).catch((error) => {
|
|
77
|
+
state.fails.add(this);
|
|
46
78
|
throw context.log.fail(`Failure ${$ms(Date.now() - now)}`, error);
|
|
47
79
|
}).finally(async () => {
|
|
48
80
|
await ContextPromises.wait(context);
|
|
49
81
|
}).then(async (result) => {
|
|
50
|
-
for (const after of
|
|
82
|
+
for (const after of this.after)
|
|
51
83
|
await after.invoke(state, after.name);
|
|
52
84
|
return result;
|
|
53
85
|
});
|
|
54
|
-
cache.set(
|
|
86
|
+
state.cache.set(this, promise);
|
|
55
87
|
return promise;
|
|
56
88
|
}
|
|
57
|
-
|
|
58
|
-
const state = {
|
|
59
|
-
cache: /* @__PURE__ */ new Map(),
|
|
60
|
-
stack: [],
|
|
61
|
-
props: Object.assign({}, props, overrideProps),
|
|
62
|
-
tasks
|
|
63
|
-
};
|
|
64
|
-
return invoke(state, _name);
|
|
65
|
-
}, { buildFile, tasks, props, invoke, before: [], after: [] });
|
|
66
|
-
Object.defineProperty(task, taskMarker, { value: true });
|
|
67
|
-
Object.defineProperty(task, "name", { value: _name });
|
|
68
|
-
return task;
|
|
69
|
-
}
|
|
70
|
-
var buildMarker = Symbol.for("plugjs:isBuild");
|
|
89
|
+
};
|
|
71
90
|
function build(def) {
|
|
72
91
|
const buildFile = findCaller(build);
|
|
73
92
|
const tasks = {};
|
|
74
93
|
const props = {};
|
|
75
94
|
for (const [key, val] of Object.entries(def)) {
|
|
76
95
|
let len = 0;
|
|
77
|
-
if (
|
|
78
|
-
tasks[key] = val;
|
|
96
|
+
if (isTaskCall(val)) {
|
|
97
|
+
tasks[key] = val.task;
|
|
79
98
|
len = key.length;
|
|
80
99
|
} else if (typeof val === "string") {
|
|
81
100
|
props[key] = val;
|
|
82
101
|
} else if (typeof val === "function") {
|
|
83
|
-
tasks[key] =
|
|
102
|
+
tasks[key] = new TaskImpl(key, buildFile, val, tasks, props);
|
|
84
103
|
len = key.length;
|
|
85
104
|
}
|
|
86
105
|
if (len > logOptions.taskLength)
|
|
87
106
|
logOptions.taskLength = len;
|
|
88
107
|
}
|
|
89
|
-
const
|
|
108
|
+
const start = async function start2(callback, overrideProps = {}) {
|
|
109
|
+
const state = makeState({ tasks, props: merge(props, overrideProps) });
|
|
90
110
|
const logger = getLogger();
|
|
91
|
-
const state = {
|
|
92
|
-
cache: /* @__PURE__ */ new Map(),
|
|
93
|
-
stack: [],
|
|
94
|
-
props: Object.assign({}, props, overrideProps),
|
|
95
|
-
tasks
|
|
96
|
-
};
|
|
97
111
|
logger.notice("Starting...");
|
|
98
112
|
const now = Date.now();
|
|
99
113
|
try {
|
|
114
|
+
const result = await callback(state);
|
|
115
|
+
logger.notice(`Build successful ${$ms(Date.now() - now)}`);
|
|
116
|
+
return result;
|
|
117
|
+
} catch (error) {
|
|
118
|
+
if (state.fails.size) {
|
|
119
|
+
logger.error("");
|
|
120
|
+
logger.error(state.fails.size, state.fails.size === 1 ? "task" : "tasks", "failed:");
|
|
121
|
+
state.fails.forEach((task) => logger.error($gry("*"), $t(task.name)));
|
|
122
|
+
logger.error("");
|
|
123
|
+
}
|
|
124
|
+
throw logger.fail(`Build failed ${$ms(Date.now() - now)}`, error);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
const invoke = async function invoke2(taskNames, overrideProps = {}) {
|
|
128
|
+
await start(async (state) => {
|
|
100
129
|
for (const name of taskNames) {
|
|
101
130
|
const task = tasks[name];
|
|
102
131
|
assert(task, `Task ${$t(name)} not found in build ${$p(buildFile)}`);
|
|
103
132
|
await task.invoke(state, name);
|
|
104
133
|
}
|
|
105
|
-
|
|
106
|
-
} catch (error) {
|
|
107
|
-
throw logger.fail(`Build failed ${$ms(Date.now() - now)}`, error);
|
|
108
|
-
}
|
|
134
|
+
}, overrideProps);
|
|
109
135
|
};
|
|
110
|
-
const
|
|
136
|
+
const callables = {};
|
|
137
|
+
for (const [name, task] of Object.entries(tasks)) {
|
|
138
|
+
const callable = async (overrideProps) => start(async (state) => task.invoke(state, name), overrideProps);
|
|
139
|
+
callables[name] = Object.defineProperties(callable, {
|
|
140
|
+
[taskCallMarker]: { value: taskCallMarker },
|
|
141
|
+
"task": { value: task },
|
|
142
|
+
"name": { value: name }
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
const compiled = merge(props, callables);
|
|
111
146
|
Object.defineProperty(compiled, buildMarker, { value: invoke });
|
|
112
147
|
return compiled;
|
|
113
148
|
}
|
|
149
|
+
function isBuild(build2) {
|
|
150
|
+
return build2 && typeof build2[buildMarker] === "function";
|
|
151
|
+
}
|
|
152
|
+
function invokeTasks(build2, tasks, props) {
|
|
153
|
+
if (isBuild(build2)) {
|
|
154
|
+
return build2[buildMarker](tasks, props);
|
|
155
|
+
} else {
|
|
156
|
+
throw new TypeError("Invalid build instance");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
114
159
|
function hookBefore(build2, taskName, hooks) {
|
|
115
|
-
const
|
|
116
|
-
assert(
|
|
160
|
+
const taskCall = build2[taskName];
|
|
161
|
+
assert(isTaskCall(taskCall), `Task "${$t(taskName)}" not found in build`);
|
|
117
162
|
for (const hook of hooks) {
|
|
118
163
|
const beforeHook = build2[hook];
|
|
119
|
-
assert(
|
|
120
|
-
if (task.before.includes(beforeHook))
|
|
164
|
+
assert(isTaskCall(beforeHook), `Task "${$t(hook)}" to hook before "${$t(taskName)}" not found in build`);
|
|
165
|
+
if (taskCall.task.before.includes(beforeHook.task))
|
|
121
166
|
continue;
|
|
122
|
-
task.before.push(beforeHook);
|
|
167
|
+
taskCall.task.before.push(beforeHook.task);
|
|
123
168
|
}
|
|
124
169
|
}
|
|
125
170
|
function hookAfter(build2, taskName, hooks) {
|
|
126
|
-
const
|
|
127
|
-
assert(
|
|
171
|
+
const taskCall = build2[taskName];
|
|
172
|
+
assert(isTaskCall(taskCall), `Task "${$t(taskName)}" not found in build`);
|
|
128
173
|
for (const hook of hooks) {
|
|
129
174
|
const afterHook = build2[hook];
|
|
130
|
-
assert(
|
|
131
|
-
if (task.after.includes(afterHook))
|
|
175
|
+
assert(isTaskCall(afterHook), `Task "${$t(hook)}" to hook after "${$t(taskName)}" not found in build`);
|
|
176
|
+
if (taskCall.task.after.includes(afterHook.task))
|
|
132
177
|
continue;
|
|
133
|
-
task.after.push(afterHook);
|
|
178
|
+
taskCall.task.after.push(afterHook.task);
|
|
134
179
|
}
|
|
135
180
|
}
|
|
136
181
|
export {
|
|
137
182
|
build,
|
|
138
183
|
hookAfter,
|
|
139
|
-
hookBefore
|
|
184
|
+
hookBefore,
|
|
185
|
+
invokeTasks,
|
|
186
|
+
isBuild
|
|
140
187
|
};
|
|
141
188
|
//# 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;
|
|
5
|
-
"names": ["
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["build", "promise", "start", "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.1" : "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": "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",
|
|
5
|
+
"names": ["key"]
|
|
6
|
+
}
|
package/dist/files.cjs
CHANGED
|
@@ -23,6 +23,7 @@ __export(files_exports, {
|
|
|
23
23
|
Files: () => Files
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(files_exports);
|
|
26
|
+
var import_node_util = require("node:util");
|
|
26
27
|
var import_asserts = require("./asserts.cjs");
|
|
27
28
|
var import_fs = require("./fs.cjs");
|
|
28
29
|
var import_paths = require("./paths.cjs");
|
|
@@ -34,10 +35,9 @@ var Files = class {
|
|
|
34
35
|
* relative to the specified {@link Run}'s directory.
|
|
35
36
|
*/
|
|
36
37
|
constructor(directory) {
|
|
37
|
-
this._directory = directory;
|
|
38
|
+
this._directory = directory || (0, import_paths.getCurrentWorkingDirectory)();
|
|
38
39
|
this._files = [];
|
|
39
|
-
|
|
40
|
-
Object.defineProperty(this, inspect, { value: () => ({
|
|
40
|
+
Object.defineProperty(this, import_node_util.inspect.custom, { value: () => ({
|
|
41
41
|
directory: this._directory,
|
|
42
42
|
files: [...this._files]
|
|
43
43
|
}) });
|
|
@@ -66,6 +66,8 @@ var Files = class {
|
|
|
66
66
|
yield [file, (0, import_paths.resolveAbsolutePath)(this._directory, file)];
|
|
67
67
|
}
|
|
68
68
|
static builder(arg) {
|
|
69
|
+
if (!arg)
|
|
70
|
+
arg = (0, import_paths.getCurrentWorkingDirectory)();
|
|
69
71
|
const directory = typeof arg === "string" ? arg : arg.directory;
|
|
70
72
|
const set = typeof arg === "string" ? /* @__PURE__ */ new Set() : new Set(arg._files);
|
|
71
73
|
const instance = new Files(directory);
|
package/dist/files.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/files.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAuB;AACvB,gBAAiC;AACjC,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAwB;AAExB,qBAAuB;AACvB,gBAAiC;AACjC,mBAKO;AA8BA,IAAM,QAAN,MAAY;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjB,YAAY,WAA0B;AACpC,SAAK,aAAa,iBAAa,yCAA2B;AAC1D,SAAK,SAAS,CAAC;AAGf,WAAO,eAAe,MAAM,yBAAQ,QAAQ,EAAE,OAAO,OAAO;AAAA,MAC1D,WAAW,KAAK;AAAA,MAChB,OAAO,CAAE,GAAG,KAAK,MAAO;AAAA,IAC1B,GAAG,CAAC;AAAA,EACN;AAAA;AAAA,EAGA,IAAI,YAA0B;AAC5B,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAGA,IAAI,SAAiB;AACnB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA,EAGA,EAAG,OAAO,QAAQ,IAAuB;AACvC,eAAW,QAAQ,KAAK;AAAQ,YAAM;AAAA,EACxC;AAAA;AAAA,EAGA,CAAE,gBAAyC;AACzC,eAAW,QAAQ;AAAM,gBAAM,kCAAoB,KAAK,YAAY,IAAI;AAAA,EAC1E;AAAA;AAAA,EAGA,CAAE,eAAwE;AACxE,eAAW,QAAQ;AAAM,YAAM,CAAE,UAAM,kCAAoB,KAAK,YAAY,IAAI,CAAE;AAAA,EACpF;AAAA,EAMA,OAAO,QAAQ,KAA0C;AACvD,QAAI,CAAE;AAAK,gBAAM,yCAA2B;AAC5C,UAAM,YAAY,OAAO,QAAQ,WAAW,MAAM,IAAI;AACtD,UAAM,MAAM,OAAO,QAAQ,WAAW,oBAAI,IAAY,IAAI,IAAI,IAAI,IAAI,MAAM;AAE5E,UAAM,WAAW,IAAI,MAAM,SAAS;AACpC,QAAI,QAAQ;AAEZ,WAAO;AAAA,MACL,WAAW,SAAS;AAAA,MAEpB,OAAO,OAA+B;AACpC,mCAAO,CAAE,OAAO,sCAAsC;AAEtD,mBAAW,QAAQ,OAAO;AACxB,gBAAM,eAAW,sCAAwB,SAAS,WAAW,IAAI;AACjE,cAAI,IAAI,QAAQ;AAAA,QAClB;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,SAAS,MAA6B;AACpC,mCAAO,CAAE,OAAO,sCAAsC;AAEtD,mBAAW,SAAS,MAAM;AACxB,qBAAW,QAAQ,MAAM,cAAc,GAAG;AACxC,iBAAK,IAAI,IAAI;AAAA,UACf;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,MAAM,MAAM,MAAc,SAAqD;AAC7E,cAAM,eAAW,sCAAwB,SAAS,WAAW,IAAI;AACjE,cAAM,eAAW,kCAAoB,SAAS,WAAW,QAAQ;AACjE,cAAMA,iBAAY,gCAAkB,QAAQ;AAE5C,kBAAM,iBAAMA,YAAW,EAAE,WAAW,KAAK,CAAC;AAC1C,kBAAM,qBAAU,UAAU,OAAO;AACjC,aAAK,IAAI,QAAQ;AAEjB,eAAO;AAAA,MACT;AAAA,MAEA,QAAe;AACb,mCAAO,CAAE,OAAO,sCAAsC;AAEtD,gBAAQ;AACR,iBAAS,OAAO,KAAK,GAAG,GAAG;AAC3B,iBAAS,OAAO,KAAK;AACrB,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;",
|
|
5
5
|
"names": ["directory"]
|
|
6
6
|
}
|
package/dist/files.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export declare class Files {
|
|
|
27
27
|
* Create a new {@link Files} instance rooted in the specified `directory`
|
|
28
28
|
* relative to the specified {@link Run}'s directory.
|
|
29
29
|
*/
|
|
30
|
-
constructor(directory
|
|
30
|
+
constructor(directory?: AbsolutePath);
|
|
31
31
|
/** Return the _directory_ where this {@link Files} is rooted */
|
|
32
32
|
get directory(): AbsolutePath;
|
|
33
33
|
/** Return the number of files tracked by this instance. */
|
|
@@ -39,6 +39,7 @@ export declare class Files {
|
|
|
39
39
|
/** Return an iterator over all _relative_ to _absolute_ mappings */
|
|
40
40
|
pathMappings(): Generator<[relative: string, absolute: AbsolutePath]>;
|
|
41
41
|
/** Create a new {@link FilesBuilder} creating {@link Files} instances. */
|
|
42
|
+
static builder(): FilesBuilder;
|
|
42
43
|
static builder(files: Files): FilesBuilder;
|
|
43
44
|
static builder(directory: AbsolutePath): FilesBuilder;
|
|
44
45
|
}
|