harness-engineer 0.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/LICENSE +21 -0
- package/README.md +176 -0
- package/README.zh-CN.md +174 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +145 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +66 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +3 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +76 -0
- package/dist/init.js.map +1 -0
- package/dist/presets.d.ts +17 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +2344 -0
- package/dist/presets.js.map +1 -0
- package/dist/render.d.ts +5 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +28 -0
- package/dist/render.js.map +1 -0
- package/dist/status.d.ts +3 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +50 -0
- package/dist/status.js.map +1 -0
- package/dist/tasks.d.ts +4 -0
- package/dist/tasks.d.ts.map +1 -0
- package/dist/tasks.js +121 -0
- package/dist/tasks.js.map +1 -0
- package/dist/types.d.ts +84 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +20 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +108 -0
- package/dist/utils.js.map +1 -0
- package/package.json +63 -0
package/dist/init.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { dirname, join, resolve } from "node:path";
|
|
2
|
+
import { buildHarnessConfig, buildHarnessDependencyVersion, createDefaultPackageJson, HARNESS_CONFIG_FILE, serializeHarnessConfig } from "./config.js";
|
|
3
|
+
import { getPreset } from "./presets.js";
|
|
4
|
+
import { ensureDir, formatJson, pathExists, readJsonFile, writeTextFile } from "./utils.js";
|
|
5
|
+
export async function initProject(options) {
|
|
6
|
+
const targetDir = resolve(options.cwd, options.targetDir ?? ".");
|
|
7
|
+
const preset = getPreset(options.preset);
|
|
8
|
+
const projectName = options.projectName || preset.defaultProjectName;
|
|
9
|
+
const config = buildHarnessConfig({
|
|
10
|
+
cwd: options.cwd,
|
|
11
|
+
targetDir: options.targetDir,
|
|
12
|
+
projectName,
|
|
13
|
+
presetKey: options.preset,
|
|
14
|
+
language: options.language,
|
|
15
|
+
devCommand: options.devCommand,
|
|
16
|
+
});
|
|
17
|
+
const managedEntries = preset.buildManagedFiles(config);
|
|
18
|
+
const createdFiles = [];
|
|
19
|
+
const skippedFiles = [];
|
|
20
|
+
const overwrittenFiles = [];
|
|
21
|
+
await ensureDir(targetDir);
|
|
22
|
+
await ensurePackageJson(targetDir, projectName, options.packageVersion ?? "latest");
|
|
23
|
+
const configPath = join(targetDir, HARNESS_CONFIG_FILE);
|
|
24
|
+
await writeManagedFile(configPath, serializeHarnessConfig(config), options.force ?? false, {
|
|
25
|
+
createdFiles,
|
|
26
|
+
skippedFiles,
|
|
27
|
+
overwrittenFiles,
|
|
28
|
+
relativePath: HARNESS_CONFIG_FILE,
|
|
29
|
+
});
|
|
30
|
+
for (const entry of managedEntries) {
|
|
31
|
+
const filePath = join(targetDir, entry.path);
|
|
32
|
+
await writeManagedFile(filePath, entry.content, options.force ?? false, {
|
|
33
|
+
createdFiles,
|
|
34
|
+
skippedFiles,
|
|
35
|
+
overwrittenFiles,
|
|
36
|
+
relativePath: entry.path,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
targetDir,
|
|
41
|
+
createdFiles,
|
|
42
|
+
skippedFiles,
|
|
43
|
+
overwrittenFiles,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
async function ensurePackageJson(targetDir, projectName, packageVersion) {
|
|
47
|
+
const packageJsonPath = join(targetDir, "package.json");
|
|
48
|
+
const dependencyVersion = buildHarnessDependencyVersion(packageVersion);
|
|
49
|
+
const packageJson = (await pathExists(packageJsonPath))
|
|
50
|
+
? await readJsonFile(packageJsonPath)
|
|
51
|
+
: createDefaultPackageJson(projectName);
|
|
52
|
+
const devDependencies = {
|
|
53
|
+
...(packageJson.devDependencies ?? {}),
|
|
54
|
+
"harness-engineer": dependencyVersion,
|
|
55
|
+
};
|
|
56
|
+
const nextPackageJson = {
|
|
57
|
+
...packageJson,
|
|
58
|
+
devDependencies,
|
|
59
|
+
};
|
|
60
|
+
await writeTextFile(packageJsonPath, formatJson(nextPackageJson));
|
|
61
|
+
}
|
|
62
|
+
async function writeManagedFile(filePath, content, force, collector) {
|
|
63
|
+
const exists = await pathExists(filePath);
|
|
64
|
+
if (exists && !force) {
|
|
65
|
+
collector.skippedFiles.push(collector.relativePath);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
await ensureDir(dirname(filePath));
|
|
69
|
+
await writeTextFile(filePath, content);
|
|
70
|
+
if (exists) {
|
|
71
|
+
collector.overwrittenFiles.push(collector.relativePath);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
collector.createdFiles.push(collector.relativePath);
|
|
75
|
+
}
|
|
76
|
+
//# 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":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { HarnessConfig, HarnessPathsConfig, HarnessRoleConfig, TruthSourceConfig } from "./types.js";
|
|
2
|
+
export interface GeneratedFile {
|
|
3
|
+
path: string;
|
|
4
|
+
content: string;
|
|
5
|
+
}
|
|
6
|
+
export interface PresetDefinition {
|
|
7
|
+
key: string;
|
|
8
|
+
defaultLanguage: HarnessConfig["language"];
|
|
9
|
+
defaultProjectName: string;
|
|
10
|
+
paths: HarnessPathsConfig;
|
|
11
|
+
roles: HarnessRoleConfig[];
|
|
12
|
+
truthSources: TruthSourceConfig[];
|
|
13
|
+
includeOverrideFile: boolean;
|
|
14
|
+
buildManagedFiles(config: HarnessConfig): GeneratedFile[];
|
|
15
|
+
}
|
|
16
|
+
export declare function getPreset(key: string): PresetDefinition;
|
|
17
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG1G,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;CAC3D;AAo2ED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAQvD"}
|