@shivaedev/create-app 0.34.0 → 0.36.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 +38 -0
- package/README.md +1 -1
- package/dist/cli.js +27 -27
- package/dist/pack.js +2 -1
- package/dist/pack.js.map +1 -1
- package/dist/updateApp.d.ts.map +1 -1
- package/dist/updateApp.js +17 -10
- package/dist/updateApp.js.map +1 -1
- package/dist/updateChecks.js +1 -1
- package/dist/updateChecks.js.map +1 -1
- package/package.json +4 -4
- package/src/pack.ts +2 -1
- package/src/updateApp.ts +18 -10
- package/src/updateChecks.ts +1 -1
- package/template.json +1 -1
package/dist/pack.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { fileURLToPath } from "node:url";
|
|
2
|
-
import
|
|
2
|
+
import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
|
|
3
|
+
import * as NodeServices from "@effect/platform-node/NodeServices";
|
|
3
4
|
import { Effect } from "effect";
|
|
4
5
|
import { packTemplate } from "./packTemplate.js";
|
|
5
6
|
if (import.meta.main) {
|
package/dist/pack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,WAAW,CAAC,OAAO,CAClB,YAAY,CACX,aAAa,CAAC,IAAI,GAAG,CAAC,2BAA2B,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EACpE,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAC3D,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAC1C,CAAC;AACH,CAAC"}
|
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;AAsBrD,eAAO,MAAM,SAAS,mQAmCpB,CAAC"}
|
package/dist/updateApp.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { join, resolve } from "node:path";
|
|
1
|
+
import { join, relative, resolve } from "node:path";
|
|
2
2
|
import { Console, Effect, FileSystem, Schema } from "effect";
|
|
3
3
|
import { CreateAppError } from "./CreateAppError.js";
|
|
4
4
|
import { GENERATION_FILE, Generation, readTemplate, writeGeneration } from "./generation.js";
|
|
@@ -7,12 +7,25 @@ import { checkedProcess, runProcess } from "./runProcess.js";
|
|
|
7
7
|
import { starterPatch } from "./starterPatch.js";
|
|
8
8
|
import { appTemplate } from "./template.js";
|
|
9
9
|
import { updateChecks } from "./updateChecks.js";
|
|
10
|
+
const applyPatch = Effect.fn("CreateApp.applyPatch")(function* (target, repository, path) {
|
|
11
|
+
const prefix = relative(repository, target);
|
|
12
|
+
const result = yield* runProcess(repository, "git", ["apply", "--3way", ...(prefix ? [`--directory=${prefix}`] : []), path]);
|
|
13
|
+
if (result.code !== 0) {
|
|
14
|
+
const conflicts = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U", "--", "."])).trim();
|
|
15
|
+
if (!conflicts) {
|
|
16
|
+
return yield* new CreateAppError({ message: result.stderr.trim() });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if ((yield* checkedProcess(target, "git", ["diff", "--cached", "--name-only", "--", "."])).trim() === "") {
|
|
20
|
+
return yield* new CreateAppError({ message: "The starter delta applied no changes. The generation record is unchanged." });
|
|
21
|
+
}
|
|
22
|
+
});
|
|
10
23
|
export const updateApp = Effect.fn("CreateApp.updateApp")(function* (folder, templatePath, version) {
|
|
11
24
|
return yield* Effect.scoped(Effect.gen(function* () {
|
|
12
25
|
const fs = yield* FileSystem.FileSystem;
|
|
13
26
|
const target = resolve(folder);
|
|
14
|
-
yield* checkedProcess(target, "git", ["rev-parse", "--show-toplevel"]);
|
|
15
|
-
if ((yield* checkedProcess(target, "git", ["status", "--porcelain"])).trim() !== "") {
|
|
27
|
+
const repository = (yield* checkedProcess(target, "git", ["rev-parse", "--show-toplevel"])).trim();
|
|
28
|
+
if ((yield* checkedProcess(target, "git", ["status", "--porcelain", "--", "."])).trim() !== "") {
|
|
16
29
|
return yield* new CreateAppError({ message: "Refusing to update a dirty working tree. Commit or stash your changes first." });
|
|
17
30
|
}
|
|
18
31
|
const generation = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(Generation))(yield* fs.readFileString(join(target, GENERATION_FILE)));
|
|
@@ -21,13 +34,7 @@ export const updateApp = Effect.fn("CreateApp.updateApp")(function* (folder, tem
|
|
|
21
34
|
const previous = generation.version === version ? current : yield* historicalTemplate(directory, generation.version);
|
|
22
35
|
const patch = yield* starterPatch(target, directory, generation.name, appTemplate(previous, generation.minimal), appTemplate(current, generation.minimal));
|
|
23
36
|
if (!patch.empty) {
|
|
24
|
-
|
|
25
|
-
if (result.code !== 0) {
|
|
26
|
-
const conflicts = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U"])).trim();
|
|
27
|
-
if (!conflicts) {
|
|
28
|
-
return yield* new CreateAppError({ message: result.stderr.trim() });
|
|
29
|
-
}
|
|
30
|
-
}
|
|
37
|
+
yield* applyPatch(target, repository, patch.path);
|
|
31
38
|
}
|
|
32
39
|
yield* writeGeneration(target, { ...generation, version });
|
|
33
40
|
const failures = yield* updateChecks(target);
|
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;
|
|
1
|
+
{"version":3,"file":"updateApp.js","sourceRoot":"","sources":["../src/updateApp.ts"],"names":[],"mappings":"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"}
|
package/dist/updateChecks.js
CHANGED
|
@@ -35,7 +35,7 @@ export const updateChecks = Effect.fn("CreateApp.updateChecks")(function* (targe
|
|
|
35
35
|
if (markers.length > 0) {
|
|
36
36
|
failures.unshift(`Files with conflict markers:\n${markers.join("\n")}`);
|
|
37
37
|
}
|
|
38
|
-
const unresolved = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U"])).trim();
|
|
38
|
+
const unresolved = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U", "--", "."])).trim();
|
|
39
39
|
if (unresolved !== "") {
|
|
40
40
|
failures.push(`Unresolved Git conflicts:\n${unresolved}`);
|
|
41
41
|
}
|
package/dist/updateChecks.js.map
CHANGED
|
@@ -1 +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;
|
|
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,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxH,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.36.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.32.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.55.0",
|
|
53
|
+
"@shivaedev/test-story": "0.33.0",
|
|
54
54
|
"@types/node": "24.19.2",
|
|
55
55
|
"effect": "4.0.6",
|
|
56
56
|
"esbuild": "0.28.2",
|
package/src/pack.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { fileURLToPath } from "node:url";
|
|
2
|
-
import
|
|
2
|
+
import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
|
|
3
|
+
import * as NodeServices from "@effect/platform-node/NodeServices";
|
|
3
4
|
import { Effect } from "effect";
|
|
4
5
|
import { packTemplate } from "./packTemplate.ts";
|
|
5
6
|
|
package/src/updateApp.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { join, resolve } from "node:path";
|
|
1
|
+
import { join, relative, resolve } from "node:path";
|
|
2
2
|
import { Console, Effect, FileSystem, Schema } from "effect";
|
|
3
3
|
import { CreateAppError } from "./CreateAppError.ts";
|
|
4
4
|
import { GENERATION_FILE, Generation, readTemplate, writeGeneration } from "./generation.ts";
|
|
@@ -8,13 +8,27 @@ import { starterPatch } from "./starterPatch.ts";
|
|
|
8
8
|
import { appTemplate } from "./template.ts";
|
|
9
9
|
import { updateChecks } from "./updateChecks.ts";
|
|
10
10
|
|
|
11
|
+
const applyPatch = Effect.fn("CreateApp.applyPatch")(function* (target: string, repository: string, path: string) {
|
|
12
|
+
const prefix = relative(repository, target);
|
|
13
|
+
const result = yield* runProcess(repository, "git", ["apply", "--3way", ...(prefix ? [`--directory=${prefix}`] : []), path]);
|
|
14
|
+
if (result.code !== 0) {
|
|
15
|
+
const conflicts = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U", "--", "."])).trim();
|
|
16
|
+
if (!conflicts) {
|
|
17
|
+
return yield* new CreateAppError({ message: result.stderr.trim() });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if ((yield* checkedProcess(target, "git", ["diff", "--cached", "--name-only", "--", "."])).trim() === "") {
|
|
21
|
+
return yield* new CreateAppError({ message: "The starter delta applied no changes. The generation record is unchanged." });
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
11
25
|
export const updateApp = Effect.fn("CreateApp.updateApp")(function* (folder: string, templatePath: string, version: string) {
|
|
12
26
|
return yield* Effect.scoped(
|
|
13
27
|
Effect.gen(function* () {
|
|
14
28
|
const fs = yield* FileSystem.FileSystem;
|
|
15
29
|
const target = resolve(folder);
|
|
16
|
-
yield* checkedProcess(target, "git", ["rev-parse", "--show-toplevel"]);
|
|
17
|
-
if ((yield* checkedProcess(target, "git", ["status", "--porcelain"])).trim() !== "") {
|
|
30
|
+
const repository = (yield* checkedProcess(target, "git", ["rev-parse", "--show-toplevel"])).trim();
|
|
31
|
+
if ((yield* checkedProcess(target, "git", ["status", "--porcelain", "--", "."])).trim() !== "") {
|
|
18
32
|
return yield* new CreateAppError({ message: "Refusing to update a dirty working tree. Commit or stash your changes first." });
|
|
19
33
|
}
|
|
20
34
|
const generation = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(Generation))(
|
|
@@ -31,13 +45,7 @@ export const updateApp = Effect.fn("CreateApp.updateApp")(function* (folder: str
|
|
|
31
45
|
appTemplate(current, generation.minimal),
|
|
32
46
|
);
|
|
33
47
|
if (!patch.empty) {
|
|
34
|
-
|
|
35
|
-
if (result.code !== 0) {
|
|
36
|
-
const conflicts = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U"])).trim();
|
|
37
|
-
if (!conflicts) {
|
|
38
|
-
return yield* new CreateAppError({ message: result.stderr.trim() });
|
|
39
|
-
}
|
|
40
|
-
}
|
|
48
|
+
yield* applyPatch(target, repository, patch.path);
|
|
41
49
|
}
|
|
42
50
|
yield* writeGeneration(target, { ...generation, version });
|
|
43
51
|
const failures = yield* updateChecks(target);
|
package/src/updateChecks.ts
CHANGED
|
@@ -39,7 +39,7 @@ export const updateChecks = Effect.fn("CreateApp.updateChecks")(function* (targe
|
|
|
39
39
|
if (markers.length > 0) {
|
|
40
40
|
failures.unshift(`Files with conflict markers:\n${markers.join("\n")}`);
|
|
41
41
|
}
|
|
42
|
-
const unresolved = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U"])).trim();
|
|
42
|
+
const unresolved = (yield* checkedProcess(target, "git", ["diff", "--name-only", "--diff-filter=U", "--", "."])).trim();
|
|
43
43
|
if (unresolved !== "") {
|
|
44
44
|
failures.push(`Unresolved Git conflicts:\n${unresolved}`);
|
|
45
45
|
}
|