@shivaedev/create-app 0.29.0 → 0.31.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/CHANGELOG.md +37 -0
- package/README.md +1 -1
- package/dist/cli.js +69 -64
- package/dist/template.d.ts.map +1 -1
- package/dist/template.js +1 -5
- package/dist/template.js.map +1 -1
- package/dist/updateApp.d.ts.map +1 -1
- package/dist/updateApp.js +11 -6
- package/dist/updateApp.js.map +1 -1
- package/dist/updateChecks.d.ts +4 -0
- package/dist/updateChecks.d.ts.map +1 -0
- package/dist/updateChecks.js +44 -0
- package/dist/updateChecks.js.map +1 -0
- package/package.json +4 -4
- package/src/template.ts +1 -5
- package/src/updateApp.ts +11 -6
- package/src/updateChecks.ts +47 -0
- package/template.json +1 -1
package/dist/template.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,eAAO,MAAM,QAAQ,8CAA8C,CAAC;AACpE,eAAO,MAAM,QAAQ;;;GAA+E,CAAC;AACrG,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,eAAO,MAAM,cAAc;;;GAA4D,CAAC;AAExF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,UAAQ,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,eAAO,MAAM,QAAQ,8CAA8C,CAAC;AACpE,eAAO,MAAM,QAAQ;;;GAA+E,CAAC;AACrG,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,eAAO,MAAM,cAAc;;;GAA4D,CAAC;AAExF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,UAAQ,GAAG,QAAQ,CAqBzE;AAED,QAAA,MAAM,QAAQ;;;;;;;;;;;EAWZ,CAAC;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;CAA4D,CAAC;AAexF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,QAAQ,CAAC,IAAI,UAE1D;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;EAa9H;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,UAAQ,UAa1G;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,2BAWpG"}
|
package/dist/template.js
CHANGED
|
@@ -6,8 +6,7 @@ export const Template = Schema.Array(Schema.Struct({ content: Schema.String, pat
|
|
|
6
6
|
export const decodeTemplate = Schema.decodeUnknownSync(Schema.fromJsonString(Template));
|
|
7
7
|
export function appTemplate(template, minimal = false) {
|
|
8
8
|
const minimalManifest = template.find((entry) => entry.path === "package.minimal.json");
|
|
9
|
-
const
|
|
10
|
-
const files = template.filter((entry) => !["quality-baseline.minimal.jsonl", "package.minimal.json"].includes(entry.path));
|
|
9
|
+
const files = template.filter((entry) => entry.path !== "package.minimal.json");
|
|
11
10
|
if (!minimal) {
|
|
12
11
|
return files;
|
|
13
12
|
}
|
|
@@ -17,9 +16,6 @@ export function appTemplate(template, minimal = false) {
|
|
|
17
16
|
if (entry.path === "package.json" && minimalManifest !== undefined) {
|
|
18
17
|
return { ...entry, content: minimalManifest.content };
|
|
19
18
|
}
|
|
20
|
-
if (entry.path === "quality-baseline.jsonl" && minimalBaseline !== undefined) {
|
|
21
|
-
return { ...entry, content: minimalBaseline.content };
|
|
22
|
-
}
|
|
23
19
|
if (!["src/modules.ts", "src/server/modules.ts", "src/server/workerModules.ts", "src/client/modules.ts"].includes(entry.path)) {
|
|
24
20
|
return entry;
|
|
25
21
|
}
|
package/dist/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAErG,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AAExF,MAAM,UAAU,WAAW,CAAC,QAAkB,EAAE,OAAO,GAAG,KAAK;IAC9D,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;IACxF,MAAM,
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
|
package/dist/updateApp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateApp.d.ts","sourceRoot":"","sources":["../src/updateApp.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"updateApp.d.ts","sourceRoot":"","sources":["../src/updateApp.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrD,eAAO,MAAM,SAAS,mQAyCpB,CAAC"}
|
package/dist/updateApp.js
CHANGED
|
@@ -6,6 +6,7 @@ import { historicalTemplate } from "./historicalTemplate.js";
|
|
|
6
6
|
import { checkedProcess, runProcess } from "./runProcess.js";
|
|
7
7
|
import { starterPatch } from "./starterPatch.js";
|
|
8
8
|
import { appTemplate } from "./template.js";
|
|
9
|
+
import { updateChecks } from "./updateChecks.js";
|
|
9
10
|
export const updateApp = Effect.fn("CreateApp.updateApp")(function* (folder, templatePath, version) {
|
|
10
11
|
return yield* Effect.scoped(Effect.gen(function* () {
|
|
11
12
|
const fs = yield* FileSystem.FileSystem;
|
|
@@ -23,15 +24,19 @@ export const updateApp = Effect.fn("CreateApp.updateApp")(function* (folder, tem
|
|
|
23
24
|
const result = yield* runProcess(target, "git", ["apply", "--3way", patch.path]);
|
|
24
25
|
if (result.code !== 0) {
|
|
25
26
|
const conflicts = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U"])).trim();
|
|
26
|
-
|
|
27
|
-
message:
|
|
28
|
-
|
|
29
|
-
: result.stderr.trim(),
|
|
30
|
-
});
|
|
27
|
+
if (!conflicts) {
|
|
28
|
+
return yield* new CreateAppError({ message: result.stderr.trim() });
|
|
29
|
+
}
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
32
|
yield* writeGeneration(target, { ...generation, version });
|
|
34
|
-
yield*
|
|
33
|
+
const failures = yield* updateChecks(target);
|
|
34
|
+
if (failures.length > 0) {
|
|
35
|
+
return yield* new CreateAppError({
|
|
36
|
+
message: `Recorded create-app ${version}. Finish the update before committing:\n${failures.join("\n\n")}`,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
yield* Console.log(`Applied create-app ${version}. Install and typecheck passed. Review the changes and commit when ready.`);
|
|
35
40
|
}));
|
|
36
41
|
});
|
|
37
42
|
//# sourceMappingURL=updateApp.js.map
|
package/dist/updateApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateApp.js","sourceRoot":"","sources":["../src/updateApp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"updateApp.js","sourceRoot":"","sources":["../src/updateApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { CreateAppError } from "./CreateAppError.ts";
|
|
3
|
+
export declare const updateChecks: (target: string) => Effect.Effect<string[], CreateAppError | import("effect/PlatformError").PlatformError, import("effect/process/ChildProcessSpawner").ChildProcessSpawner>;
|
|
4
|
+
//# sourceMappingURL=updateChecks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateChecks.d.ts","sourceRoot":"","sources":["../src/updateChecks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAsBrD,eAAO,MAAM,YAAY,8KAuBvB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Console, Effect } from "effect";
|
|
2
|
+
import { CreateAppError } from "./CreateAppError.js";
|
|
3
|
+
import { checkedProcess, runProcess } from "./runProcess.js";
|
|
4
|
+
const conflictMarkers = Effect.fn("CreateApp.conflictMarkers")(function* (target) {
|
|
5
|
+
const result = yield* runProcess(target, "git", [
|
|
6
|
+
"grep",
|
|
7
|
+
"--untracked",
|
|
8
|
+
"--exclude-standard",
|
|
9
|
+
"-I",
|
|
10
|
+
"-l",
|
|
11
|
+
"-z",
|
|
12
|
+
"-E",
|
|
13
|
+
"^((<{7}|[|]{7}|>{7})( |$)|={7}$)",
|
|
14
|
+
"--",
|
|
15
|
+
".",
|
|
16
|
+
]);
|
|
17
|
+
if (result.code > 1) {
|
|
18
|
+
return yield* new CreateAppError({ message: `Could not check conflict markers: ${result.stderr.trim()}` });
|
|
19
|
+
}
|
|
20
|
+
return result.stdout.split("\0").filter(Boolean);
|
|
21
|
+
});
|
|
22
|
+
export const updateChecks = Effect.fn("CreateApp.updateChecks")(function* (target) {
|
|
23
|
+
const failures = [];
|
|
24
|
+
for (const args of [["install"], ["run", "typecheck"]]) {
|
|
25
|
+
yield* Console.log(`Running pnpm ${args.join(" ")}...`);
|
|
26
|
+
const result = yield* runProcess(target, "pnpm", args);
|
|
27
|
+
if (result.code !== 0) {
|
|
28
|
+
failures.push(`pnpm ${args.join(" ")} failed (exit ${result.code}):\n${result.stdout}${result.stderr}`.trim());
|
|
29
|
+
if (`${result.stdout}${result.stderr}`.includes("ERR_PNPM_TRUST_DOWNGRADE")) {
|
|
30
|
+
failures.push("To re-resolve transitive packages pinned by the old lockfile while keeping trustPolicy enabled, run pnpm update --depth Infinity, then pnpm run typecheck. If a flagged version is pinned exactly in the manifest or catalog, change that pin to a trusted version first.");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const markers = yield* conflictMarkers(target);
|
|
35
|
+
if (markers.length > 0) {
|
|
36
|
+
failures.unshift(`Files with conflict markers:\n${markers.join("\n")}`);
|
|
37
|
+
}
|
|
38
|
+
const unresolved = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U"])).trim();
|
|
39
|
+
if (unresolved !== "") {
|
|
40
|
+
failures.push(`Unresolved Git conflicts:\n${unresolved}`);
|
|
41
|
+
}
|
|
42
|
+
return failures;
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=updateChecks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateChecks.js","sourceRoot":"","sources":["../src/updateChecks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAc;IACvF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE;QAC/C,MAAM;QACN,aAAa;QACb,oBAAoB;QACpB,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,kCAAkC;QAClC,IAAI;QACJ,GAAG;KACH,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,qCAAqC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAc;IACxF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QACxD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/G,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;gBAC7E,QAAQ,CAAC,IAAI,CACZ,2QAA2Q,CAC3Q,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,OAAO,CAAC,iCAAiC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7G,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shivaedev/create-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.31.0",
|
|
4
4
|
"description": "Create and install a Platform application from the maintained starter",
|
|
5
5
|
"homepage": "https://github.com/ShivaeDev/platform/tree/main/packages/create-app#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -44,13 +44,13 @@
|
|
|
44
44
|
"README.md"
|
|
45
45
|
],
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@shivaedev/sql": "0.
|
|
47
|
+
"@shivaedev/sql": "0.28.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@effect/platform-node": "4.0.6",
|
|
51
51
|
"@effect/platform-node-shared": "4.0.6",
|
|
52
|
-
"@shivaedev/quality": "0.
|
|
53
|
-
"@shivaedev/test-story": "0.
|
|
52
|
+
"@shivaedev/quality": "0.51.0",
|
|
53
|
+
"@shivaedev/test-story": "0.31.0",
|
|
54
54
|
"@types/node": "24.19.2",
|
|
55
55
|
"effect": "4.0.6",
|
|
56
56
|
"esbuild": "0.28.2",
|
package/src/template.ts
CHANGED
|
@@ -9,8 +9,7 @@ export const decodeTemplate = Schema.decodeUnknownSync(Schema.fromJsonString(Tem
|
|
|
9
9
|
|
|
10
10
|
export function appTemplate(template: Template, minimal = false): Template {
|
|
11
11
|
const minimalManifest = template.find((entry) => entry.path === "package.minimal.json");
|
|
12
|
-
const
|
|
13
|
-
const files = template.filter((entry) => !["quality-baseline.minimal.jsonl", "package.minimal.json"].includes(entry.path));
|
|
12
|
+
const files = template.filter((entry) => entry.path !== "package.minimal.json");
|
|
14
13
|
if (!minimal) {
|
|
15
14
|
return files;
|
|
16
15
|
}
|
|
@@ -20,9 +19,6 @@ export function appTemplate(template: Template, minimal = false): Template {
|
|
|
20
19
|
if (entry.path === "package.json" && minimalManifest !== undefined) {
|
|
21
20
|
return { ...entry, content: minimalManifest.content };
|
|
22
21
|
}
|
|
23
|
-
if (entry.path === "quality-baseline.jsonl" && minimalBaseline !== undefined) {
|
|
24
|
-
return { ...entry, content: minimalBaseline.content };
|
|
25
|
-
}
|
|
26
22
|
if (!["src/modules.ts", "src/server/modules.ts", "src/server/workerModules.ts", "src/client/modules.ts"].includes(entry.path)) {
|
|
27
23
|
return entry;
|
|
28
24
|
}
|
package/src/updateApp.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { historicalTemplate } from "./historicalTemplate.ts";
|
|
|
6
6
|
import { checkedProcess, runProcess } from "./runProcess.ts";
|
|
7
7
|
import { starterPatch } from "./starterPatch.ts";
|
|
8
8
|
import { appTemplate } from "./template.ts";
|
|
9
|
+
import { updateChecks } from "./updateChecks.ts";
|
|
9
10
|
|
|
10
11
|
export const updateApp = Effect.fn("CreateApp.updateApp")(function* (folder: string, templatePath: string, version: string) {
|
|
11
12
|
return yield* Effect.scoped(
|
|
@@ -33,15 +34,19 @@ export const updateApp = Effect.fn("CreateApp.updateApp")(function* (folder: str
|
|
|
33
34
|
const result = yield* runProcess(target, "git", ["apply", "--3way", patch.path]);
|
|
34
35
|
if (result.code !== 0) {
|
|
35
36
|
const conflicts = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U"])).trim();
|
|
36
|
-
|
|
37
|
-
message:
|
|
38
|
-
|
|
39
|
-
: result.stderr.trim(),
|
|
40
|
-
});
|
|
37
|
+
if (!conflicts) {
|
|
38
|
+
return yield* new CreateAppError({ message: result.stderr.trim() });
|
|
39
|
+
}
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
42
|
yield* writeGeneration(target, { ...generation, version });
|
|
44
|
-
yield*
|
|
43
|
+
const failures = yield* updateChecks(target);
|
|
44
|
+
if (failures.length > 0) {
|
|
45
|
+
return yield* new CreateAppError({
|
|
46
|
+
message: `Recorded create-app ${version}. Finish the update before committing:\n${failures.join("\n\n")}`,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
yield* Console.log(`Applied create-app ${version}. Install and typecheck passed. Review the changes and commit when ready.`);
|
|
45
50
|
}),
|
|
46
51
|
);
|
|
47
52
|
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Console, Effect } from "effect";
|
|
2
|
+
import { CreateAppError } from "./CreateAppError.ts";
|
|
3
|
+
import { checkedProcess, runProcess } from "./runProcess.ts";
|
|
4
|
+
|
|
5
|
+
const conflictMarkers = Effect.fn("CreateApp.conflictMarkers")(function* (target: string) {
|
|
6
|
+
const result = yield* runProcess(target, "git", [
|
|
7
|
+
"grep",
|
|
8
|
+
"--untracked",
|
|
9
|
+
"--exclude-standard",
|
|
10
|
+
"-I",
|
|
11
|
+
"-l",
|
|
12
|
+
"-z",
|
|
13
|
+
"-E",
|
|
14
|
+
"^((<{7}|[|]{7}|>{7})( |$)|={7}$)",
|
|
15
|
+
"--",
|
|
16
|
+
".",
|
|
17
|
+
]);
|
|
18
|
+
if (result.code > 1) {
|
|
19
|
+
return yield* new CreateAppError({ message: `Could not check conflict markers: ${result.stderr.trim()}` });
|
|
20
|
+
}
|
|
21
|
+
return result.stdout.split("\0").filter(Boolean);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export const updateChecks = Effect.fn("CreateApp.updateChecks")(function* (target: string) {
|
|
25
|
+
const failures: string[] = [];
|
|
26
|
+
for (const args of [["install"], ["run", "typecheck"]]) {
|
|
27
|
+
yield* Console.log(`Running pnpm ${args.join(" ")}...`);
|
|
28
|
+
const result = yield* runProcess(target, "pnpm", args);
|
|
29
|
+
if (result.code !== 0) {
|
|
30
|
+
failures.push(`pnpm ${args.join(" ")} failed (exit ${result.code}):\n${result.stdout}${result.stderr}`.trim());
|
|
31
|
+
if (`${result.stdout}${result.stderr}`.includes("ERR_PNPM_TRUST_DOWNGRADE")) {
|
|
32
|
+
failures.push(
|
|
33
|
+
"To re-resolve transitive packages pinned by the old lockfile while keeping trustPolicy enabled, run pnpm update --depth Infinity, then pnpm run typecheck. If a flagged version is pinned exactly in the manifest or catalog, change that pin to a trusted version first.",
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const markers = yield* conflictMarkers(target);
|
|
39
|
+
if (markers.length > 0) {
|
|
40
|
+
failures.unshift(`Files with conflict markers:\n${markers.join("\n")}`);
|
|
41
|
+
}
|
|
42
|
+
const unresolved = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U"])).trim();
|
|
43
|
+
if (unresolved !== "") {
|
|
44
|
+
failures.push(`Unresolved Git conflicts:\n${unresolved}`);
|
|
45
|
+
}
|
|
46
|
+
return failures;
|
|
47
|
+
});
|