@tzwzx/codesweep 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -19
- package/dist/cli.d.ts +2 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +16 -5
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -3
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +9 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +41 -0
- package/dist/init.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
Run lint, format, typecheck, test, and other code quality commands in one go. Configure each project with a YAML file.
|
|
7
7
|
|
|
8
|
+
## Why codesweep?
|
|
9
|
+
|
|
10
|
+
Task runners like [concurrently](https://www.npmjs.com/package/concurrently) and [npm-run-all2](https://www.npmjs.com/package/npm-run-all2) are great at running commands in parallel, but multi-stage pipelines — apply fixes first, then verify everything in parallel — quickly turn into hard-to-read one-liners in `package.json`. codesweep lets you declare the whole pipeline in one YAML file, mixing sequential and parallel stages freely, and run it with a single command.
|
|
11
|
+
|
|
12
|
+
It is built for "run all quality checks in one go" moments: post-task checks for AI coding agents, pre-commit hooks, and CI. Commands in a stage fail through — one failure doesn't cancel the other checks — so you see every error in a single run.
|
|
13
|
+
|
|
14
|
+
In short: if you need build caching and dependency graphs, reach for [wireit](https://www.npmjs.com/package/wireit); if you just want to run a couple of commands in parallel, `concurrently` alone is enough; if you want a declarative, multi-stage quality-check pipeline, codesweep is for you.
|
|
15
|
+
|
|
8
16
|
## Requirements
|
|
9
17
|
|
|
10
18
|
- Node.js >= 22 (or Bun >= 1)
|
|
@@ -27,9 +35,10 @@ After install, the `codesweep` binary is available via `npx @tzwzx/codesweep`, `
|
|
|
27
35
|
## CLI usage
|
|
28
36
|
|
|
29
37
|
```bash
|
|
30
|
-
codesweep <
|
|
38
|
+
codesweep <command> [options]
|
|
31
39
|
```
|
|
32
40
|
|
|
41
|
+
- **`init`** — Create a starter `codesweep.yml` in the current directory. Reserved as a subcommand; see note below.
|
|
33
42
|
- **mode** — Any mode defined in `codesweep.yml` (for example `check` or `fix`).
|
|
34
43
|
- **`--config` / `-c <path>`** — Path to the config file (default: `./codesweep.yml`).
|
|
35
44
|
- **`--help` / `-h`** — Show help.
|
|
@@ -37,6 +46,7 @@ codesweep <mode> [options]
|
|
|
37
46
|
Examples:
|
|
38
47
|
|
|
39
48
|
```bash
|
|
49
|
+
codesweep init
|
|
40
50
|
codesweep check
|
|
41
51
|
codesweep fix
|
|
42
52
|
codesweep check --config ./packages/app/codesweep.yml
|
|
@@ -46,36 +56,41 @@ Exit code `0` on success, `1` on failure. Elapsed time is printed when the run f
|
|
|
46
56
|
|
|
47
57
|
## Library usage
|
|
48
58
|
|
|
49
|
-
|
|
50
|
-
import { codesweep } from "@tzwzx/codesweep";
|
|
59
|
+
codesweep can also be called programmatically: `import { codesweep } from "@tzwzx/codesweep"` and `await codesweep("check")` (optionally passing a config path as the second argument).
|
|
51
60
|
|
|
52
|
-
|
|
53
|
-
await codesweep("fix", "./custom.yml");
|
|
54
|
-
```
|
|
61
|
+
## Config: `codesweep.yml`
|
|
55
62
|
|
|
56
|
-
|
|
63
|
+
Run `init` to generate a starter `codesweep.yml` in the current directory (fails if the file already exists). This also works without installing first:
|
|
57
64
|
|
|
58
|
-
|
|
65
|
+
```bash
|
|
66
|
+
npx @tzwzx/codesweep init
|
|
59
67
|
|
|
60
|
-
|
|
68
|
+
# or with bun
|
|
69
|
+
bunx @tzwzx/codesweep init
|
|
70
|
+
```
|
|
61
71
|
|
|
62
|
-
|
|
72
|
+
This creates:
|
|
63
73
|
|
|
64
74
|
```yaml
|
|
75
|
+
# codesweep configuration
|
|
76
|
+
# https://github.com/tzwzx/codesweep
|
|
77
|
+
|
|
65
78
|
check:
|
|
66
|
-
- parallel:
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
79
|
+
- parallel: # Stage 1: run checks in parallel
|
|
80
|
+
- npm run lint
|
|
81
|
+
- npm run typecheck
|
|
82
|
+
- npm test
|
|
70
83
|
|
|
71
84
|
fix:
|
|
72
|
-
- sequential:
|
|
73
|
-
-
|
|
74
|
-
- parallel:
|
|
75
|
-
-
|
|
76
|
-
-
|
|
85
|
+
- sequential: # Stage 1: apply auto-fixes
|
|
86
|
+
- npm run fix
|
|
87
|
+
- parallel: # Stage 2: verify after fixing
|
|
88
|
+
- npm run typecheck
|
|
89
|
+
- npm test
|
|
77
90
|
```
|
|
78
91
|
|
|
92
|
+
Define one or more **modes**. Each mode is an ordered list of **stages**. Each stage is either `parallel` or `sequential`, and holds a non-empty array of shell command strings. Mode names are arbitrary — note: `"init"` is reserved as a subcommand and cannot be used as a mode name.
|
|
93
|
+
|
|
79
94
|
### Behavior
|
|
80
95
|
|
|
81
96
|
- **Stages** run one after another (stage 2 starts after stage 1 finishes).
|
package/dist/cli.d.ts
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
* codesweep CLI - Run code quality checks in one command
|
|
4
4
|
*
|
|
5
5
|
* Usage:
|
|
6
|
-
* codesweep <
|
|
6
|
+
* codesweep <command> [--config path]
|
|
7
7
|
*
|
|
8
8
|
* Examples:
|
|
9
|
+
* codesweep init # Create a starter codesweep.yml
|
|
9
10
|
* codesweep check # Run quality checks
|
|
10
11
|
* codesweep fix # Auto-fix then check
|
|
11
12
|
* codesweep check --config ./custom.yml # Use custom config file
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG"}
|
package/dist/cli.js
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
* codesweep CLI - Run code quality checks in one command
|
|
4
4
|
*
|
|
5
5
|
* Usage:
|
|
6
|
-
* codesweep <
|
|
6
|
+
* codesweep <command> [--config path]
|
|
7
7
|
*
|
|
8
8
|
* Examples:
|
|
9
|
+
* codesweep init # Create a starter codesweep.yml
|
|
9
10
|
* codesweep check # Run quality checks
|
|
10
11
|
* codesweep fix # Auto-fix then check
|
|
11
12
|
* codesweep check --config ./custom.yml # Use custom config file
|
|
@@ -13,14 +14,17 @@
|
|
|
13
14
|
import process from "node:process";
|
|
14
15
|
import { parseArgs } from "node:util";
|
|
15
16
|
import { codesweep } from "./index.js";
|
|
17
|
+
import { initConfig } from "./init.js";
|
|
16
18
|
const HELP_TEXT = `
|
|
17
19
|
codesweep - Run code quality checks in one command 🧹
|
|
18
20
|
|
|
19
21
|
Usage:
|
|
20
|
-
codesweep <
|
|
22
|
+
codesweep <command> [options]
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
Commands:
|
|
25
|
+
init Create a starter codesweep.yml config file
|
|
26
|
+
<mode> Run a mode defined in your codesweep.yml (e.g. check, fix)
|
|
27
|
+
Note: "init" is reserved and cannot be used as a mode name
|
|
24
28
|
|
|
25
29
|
Options:
|
|
26
30
|
--config, -c <path> Path to config file (default: ./codesweep.yml)
|
|
@@ -53,7 +57,14 @@ const main = async () => {
|
|
|
53
57
|
process.exit(1);
|
|
54
58
|
}
|
|
55
59
|
try {
|
|
56
|
-
|
|
60
|
+
if (mode === "init") {
|
|
61
|
+
// "init" is a reserved subcommand and never runs a user-defined mode.
|
|
62
|
+
const createdPath = initConfig(values.config);
|
|
63
|
+
console.log(`Created ${createdPath}`);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
await codesweep(mode, values.config);
|
|
67
|
+
}
|
|
57
68
|
process.exit(0);
|
|
58
69
|
}
|
|
59
70
|
catch (error) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;CAcjB,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IACrC,IAAI,MAA2C,CAAC;IAChD,IAAI,WAAqB,CAAC;IAE1B,IAAI,CAAC;QACH,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;YACnC,gBAAgB,EAAE,IAAI;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3B,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACtC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;aACtC;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IAE3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,sEAAsE;YACtE,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,wEAAwE;AACxE,uEAAuE;AACvE,IAAI,CAAC;IACH,MAAM,IAAI,EAAE,CAAC;AACf,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ParallelStage, SequentialStage, Stage, CodesweepConfig } from "./types.js";
|
|
2
2
|
export declare const isParallelStage: (stage: Stage) => stage is ParallelStage;
|
|
3
3
|
export declare const isSequentialStage: (stage: Stage) => stage is SequentialStage;
|
|
4
|
+
export declare const resolveConfigPath: (configPath?: string) => string;
|
|
4
5
|
export declare const loadConfig: (configPath?: string) => CodesweepConfig;
|
|
5
6
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIzF,eAAO,MAAM,eAAe,GAAI,OAAO,KAAK,KAAG,KAAK,IAAI,aAAoC,CAAC;AAE7F,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,KAAG,KAAK,IAAI,eAAwC,CAAC;AA2DnG,eAAO,MAAM,UAAU,GAAI,aAAa,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIzF,eAAO,MAAM,eAAe,GAAI,OAAO,KAAK,KAAG,KAAK,IAAI,aAAoC,CAAC;AAE7F,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,KAAG,KAAK,IAAI,eAAwC,CAAC;AA2DnG,eAAO,MAAM,iBAAiB,GAAI,aAAa,MAAM,KAAG,MACsC,CAAC;AAE/F,eAAO,MAAM,UAAU,GAAI,aAAa,MAAM,KAAG,eAYhD,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -47,10 +47,9 @@ const validateConfig = (config) => {
|
|
|
47
47
|
}
|
|
48
48
|
return record;
|
|
49
49
|
};
|
|
50
|
+
export const resolveConfigPath = (configPath) => configPath ? path.resolve(configPath) : path.resolve(process.cwd(), DEFAULT_CONFIG_FILENAME);
|
|
50
51
|
export const loadConfig = (configPath) => {
|
|
51
|
-
const resolvedPath = configPath
|
|
52
|
-
? path.resolve(configPath)
|
|
53
|
-
: path.resolve(process.cwd(), DEFAULT_CONFIG_FILENAME);
|
|
52
|
+
const resolvedPath = resolveConfigPath(configPath);
|
|
54
53
|
let content;
|
|
55
54
|
try {
|
|
56
55
|
content = readFileSync(resolvedPath, "utf-8");
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Mode } from "./types.js";
|
|
2
2
|
export type { CodesweepConfig, Stage, ParallelStage, SequentialStage, Mode } from "./types.js";
|
|
3
3
|
export { isParallelStage, isSequentialStage, loadConfig } from "./config.js";
|
|
4
|
+
export { initConfig } from "./init.js";
|
|
4
5
|
export { runParallel, runSequential } from "./runner.js";
|
|
5
6
|
/**
|
|
6
7
|
* Load the config file, then run the pipeline for the given mode.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,IAAI,EAAE,MAAM,YAAY,CAAC;AAE9C,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAkBzD;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,GAAU,MAAM,IAAI,EAAE,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAsB7E,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,IAAI,EAAE,MAAM,YAAY,CAAC;AAE9C,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAkBzD;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,GAAU,MAAM,IAAI,EAAE,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAsB7E,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { performance } from "node:perf_hooks";
|
|
|
2
2
|
import { isParallelStage, loadConfig } from "./config.js";
|
|
3
3
|
import { runParallel, runSequential } from "./runner.js";
|
|
4
4
|
export { isParallelStage, isSequentialStage, loadConfig } from "./config.js";
|
|
5
|
+
export { initConfig } from "./init.js";
|
|
5
6
|
export { runParallel, runSequential } from "./runner.js";
|
|
6
7
|
const MILLISECONDS_PER_SECOND = 1000;
|
|
7
8
|
const formatDuration = (startTime) => ((performance.now() - startTime) / MILLISECONDS_PER_SECOND).toFixed(2);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIzD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAU,EAAE,CACnD,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEzE,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAiB,EAAE,CAC/C,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAEzF,MAAM,WAAW,GAAG,KAAK,EAAE,MAAwB,EAAiB,EAAE;IACpE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,mGAAmG;QACnG,4CAA4C;QAC5C,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAU,EAAE,UAAmB,EAAiB,EAAE;IAChF,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,mDAAmD,cAAc,GAAG,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,YAAY,QAAQ,MAAM,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,YAAY,QAAQ,MAAM,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIzD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAU,EAAE,CACnD,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEzE,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAiB,EAAE,CAC/C,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAEzF,MAAM,WAAW,GAAG,KAAK,EAAE,MAAwB,EAAiB,EAAE;IACpE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,mGAAmG;QACnG,4CAA4C;QAC5C,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAU,EAAE,UAAmB,EAAiB,EAAE;IAChF,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,mDAAmD,cAAc,GAAG,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,YAAY,QAAQ,MAAM,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,YAAY,QAAQ,MAAM,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
|
package/dist/init.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a starter codesweep.yml config file.
|
|
3
|
+
*
|
|
4
|
+
* @param configPath - Destination path (default: `./codesweep.yml`).
|
|
5
|
+
* @returns The absolute path of the created file.
|
|
6
|
+
* @throws {Error} If a file already exists at the destination.
|
|
7
|
+
*/
|
|
8
|
+
export declare const initConfig: (configPath?: string) => string;
|
|
9
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAqBA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,aAAa,MAAM,KAAG,MAehD,CAAC"}
|
package/dist/init.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { writeFileSync } from "node:fs";
|
|
2
|
+
import { resolveConfigPath } from "./config.js";
|
|
3
|
+
const CONFIG_TEMPLATE = `# codesweep configuration
|
|
4
|
+
# https://github.com/tzwzx/codesweep
|
|
5
|
+
|
|
6
|
+
check:
|
|
7
|
+
- parallel: # Stage 1: run checks in parallel
|
|
8
|
+
- npm run lint
|
|
9
|
+
- npm run typecheck
|
|
10
|
+
- npm test
|
|
11
|
+
|
|
12
|
+
fix:
|
|
13
|
+
- sequential: # Stage 1: apply auto-fixes
|
|
14
|
+
- npm run fix
|
|
15
|
+
- parallel: # Stage 2: verify after fixing
|
|
16
|
+
- npm run typecheck
|
|
17
|
+
- npm test
|
|
18
|
+
`;
|
|
19
|
+
/**
|
|
20
|
+
* Create a starter codesweep.yml config file.
|
|
21
|
+
*
|
|
22
|
+
* @param configPath - Destination path (default: `./codesweep.yml`).
|
|
23
|
+
* @returns The absolute path of the created file.
|
|
24
|
+
* @throws {Error} If a file already exists at the destination.
|
|
25
|
+
*/
|
|
26
|
+
export const initConfig = (configPath) => {
|
|
27
|
+
const resolvedPath = resolveConfigPath(configPath);
|
|
28
|
+
try {
|
|
29
|
+
// The "wx" flag fails atomically if the file already exists,
|
|
30
|
+
// avoiding a check-then-write race condition.
|
|
31
|
+
writeFileSync(resolvedPath, CONFIG_TEMPLATE, { encoding: "utf-8", flag: "wx" });
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error instanceof Error && "code" in error && error.code === "EEXIST") {
|
|
35
|
+
throw new Error(`Config file already exists: ${resolvedPath}`, { cause: error });
|
|
36
|
+
}
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
return resolvedPath;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=init.js.map
|
package/dist/init.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;CAevB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAAmB,EAAU,EAAE;IACxD,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,6DAA6D;QAC7D,8CAA8C;QAC9C,aAAa,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tzwzx/codesweep",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Run code quality checks in one command 🧹",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@types/node": "26.1.0",
|
|
63
|
-
"knip": "6.
|
|
63
|
+
"knip": "6.24.0",
|
|
64
64
|
"oxfmt": "0.57.0",
|
|
65
65
|
"oxlint": "1.72.0",
|
|
66
66
|
"syncpack": "15.3.2",
|