@simplysm/sd-cli 14.0.54 → 14.0.55
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/capacitor/capacitor-icon.js +1 -1
- package/dist/capacitor/capacitor-icon.js.map +1 -1
- package/dist/commands/publish/git-phase.d.ts +1 -1
- package/dist/commands/publish/git-phase.d.ts.map +1 -1
- package/dist/commands/publish/git-phase.js +12 -22
- package/dist/commands/publish/git-phase.js.map +1 -1
- package/package.json +4 -4
- package/src/capacitor/capacitor-icon.ts +1 -1
- package/src/commands/publish/git-phase.ts +12 -22
- package/tests/capacitor/capacitor-icon.spec.ts +23 -1
- package/tests/commands/git-phase.acc.spec.ts +14 -11
- package/tests/commands/publish.spec.ts +16 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitor-icon.js","sourceRoot":"","sources":["../../src/capacitor/capacitor-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe,EACf,OAAe,EACf,WAAmB;IAEnB,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAE1D,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAE9C,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC;aACxC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;aACnD,GAAG,EAAE;aACL,QAAQ,EAAE,CAAC;QAEd,uBAAuB;QACvB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE3D,MAAM,KAAK,CAAC;YACV,MAAM,EAAE;gBACN,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,CAAU;gBACpB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;aAC3C;SACF,CAAC;aACC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;aACxD,GAAG,EAAE;aACL,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEpB,uCAAuC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;QACjD,MAAM,GAAG,CAAC,KAAK,CACb,MAAM,EACN;YACE,MAAM;YACN,kBAAkB;YAClB,UAAU;YACV,uBAAuB;YACvB,
|
|
1
|
+
{"version":3,"file":"capacitor-icon.js","sourceRoot":"","sources":["../../src/capacitor/capacitor-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe,EACf,OAAe,EACf,WAAmB;IAEnB,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAE1D,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAE9C,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC;aACxC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;aACnD,GAAG,EAAE;aACL,QAAQ,EAAE,CAAC;QAEd,uBAAuB;QACvB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE3D,MAAM,KAAK,CAAC;YACV,MAAM,EAAE;gBACN,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,CAAU;gBACpB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;aAC3C;SACF,CAAC;aACC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;aACxD,GAAG,EAAE;aACL,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEpB,uCAAuC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;QACjD,MAAM,GAAG,CAAC,KAAK,CACb,MAAM,EACN;YACE,MAAM;YACN,kBAAkB;YAClB,UAAU;YACV,uBAAuB;YACvB,SAAS;YACT,yBAAyB;YACzB,aAAa;YACb,mBAAmB;YACnB,KAAK;SACN,EACD;YACE,GAAG,EAAE,OAAO;YACZ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { consola } from "consola";
|
|
2
2
|
/**
|
|
3
|
-
* 미커밋 변경사항을 감지하고
|
|
3
|
+
* 미커밋 변경사항을 감지하고 Codex CLI로 자동 커밋을 시도한다.
|
|
4
4
|
* @throws 자동 커밋 실패 시 Error
|
|
5
5
|
*/
|
|
6
6
|
export declare function ensureCleanWorkingTree(hasGit: boolean, logger: ReturnType<typeof consola.withTag>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-phase.d.ts","sourceRoot":"","sources":["../../../src/commands/publish/git-phase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"git-phase.d.ts","sourceRoot":"","sources":["../../../src/commands/publish/git-phase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,EAC1C,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { cpx } from "@simplysm/core-node";
|
|
2
2
|
/**
|
|
3
|
-
* 미커밋 변경사항을 감지하고
|
|
3
|
+
* 미커밋 변경사항을 감지하고 Codex CLI로 자동 커밋을 시도한다.
|
|
4
4
|
* @throws 자동 커밋 실패 시 Error
|
|
5
5
|
*/
|
|
6
6
|
export async function ensureCleanWorkingTree(hasGit, logger) {
|
|
@@ -11,31 +11,21 @@ export async function ensureCleanWorkingTree(hasGit, logger) {
|
|
|
11
11
|
const { stdout: stagedDiff } = await cpx.spawn("git", ["diff", "--cached", "--name-only"]);
|
|
12
12
|
if (diff.trim() === "" && stagedDiff.trim() === "")
|
|
13
13
|
return;
|
|
14
|
-
logger.info("커밋되지 않은 변경사항 감지.
|
|
14
|
+
logger.info("커밋되지 않은 변경사항 감지. codex로 자동 커밋 시도 중...");
|
|
15
15
|
try {
|
|
16
|
-
await cpx.spawn("
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
16
|
+
await cpx.spawn("pnpm", [
|
|
17
|
+
"exec",
|
|
18
|
+
"codex",
|
|
19
|
+
"exec",
|
|
20
|
+
"--dangerously-bypass-approvals-and-sandbox",
|
|
21
|
+
"--ephemeral",
|
|
20
22
|
"--model",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
23
|
+
"gpt-5.3-codex-spark",
|
|
24
|
+
"-c",
|
|
25
|
+
'model_reasoning_effort="low"',
|
|
26
|
+
"$sd-commit",
|
|
24
27
|
], {
|
|
25
28
|
stdio: "inherit",
|
|
26
|
-
env: {
|
|
27
|
-
// eslint-disable-next-line no-restricted-properties -- 자식 프로세스에 env 전달
|
|
28
|
-
...process.env,
|
|
29
|
-
MCP_CONNECTION_NONBLOCKING: "true",
|
|
30
|
-
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1",
|
|
31
|
-
DISABLE_TELEMETRY: "1",
|
|
32
|
-
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS: "1",
|
|
33
|
-
CLAUDE_CODE_DISABLE_AUTO_MEMORY: "1",
|
|
34
|
-
CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING: "1",
|
|
35
|
-
CLAUDE_CODE_DISABLE_SESSION_DATA_UPLOAD: "1",
|
|
36
|
-
CLAUDE_CODE_SKIP_PROMPT_HISTORY: "1",
|
|
37
|
-
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: "1",
|
|
38
|
-
},
|
|
39
29
|
});
|
|
40
30
|
}
|
|
41
31
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-phase.js","sourceRoot":"","sources":["../../../src/commands/publish/git-phase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAe,EACf,MAA0C;IAE1C,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAElC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACzE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAE3F,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO;IAE3D,MAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"git-phase.js","sourceRoot":"","sources":["../../../src/commands/publish/git-phase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/sd-cli",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.55",
|
|
4
4
|
"description": "Simplysm package - CLI tool",
|
|
5
5
|
"author": "simplysm",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"ws": "^8.20.0",
|
|
45
45
|
"yaml": "^2.8.3",
|
|
46
46
|
"yargs": "^18.0.0",
|
|
47
|
-
"@simplysm/core-
|
|
48
|
-
"@simplysm/core-
|
|
49
|
-
"@simplysm/storage": "14.0.
|
|
47
|
+
"@simplysm/core-common": "14.0.55",
|
|
48
|
+
"@simplysm/core-node": "14.0.55",
|
|
49
|
+
"@simplysm/storage": "14.0.55"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/semver": "^7.7.1",
|
|
@@ -2,7 +2,7 @@ import type { consola } from "consola";
|
|
|
2
2
|
import { cpx } from "@simplysm/core-node";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* 미커밋 변경사항을 감지하고
|
|
5
|
+
* 미커밋 변경사항을 감지하고 Codex CLI로 자동 커밋을 시도한다.
|
|
6
6
|
* @throws 자동 커밋 실패 시 Error
|
|
7
7
|
*/
|
|
8
8
|
export async function ensureCleanWorkingTree(
|
|
@@ -18,34 +18,24 @@ export async function ensureCleanWorkingTree(
|
|
|
18
18
|
|
|
19
19
|
if (diff.trim() === "" && stagedDiff.trim() === "") return;
|
|
20
20
|
|
|
21
|
-
logger.info("커밋되지 않은 변경사항 감지.
|
|
21
|
+
logger.info("커밋되지 않은 변경사항 감지. codex로 자동 커밋 시도 중...");
|
|
22
22
|
try {
|
|
23
23
|
await cpx.spawn(
|
|
24
|
-
"
|
|
24
|
+
"pnpm",
|
|
25
25
|
[
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
26
|
+
"exec",
|
|
27
|
+
"codex",
|
|
28
|
+
"exec",
|
|
29
|
+
"--dangerously-bypass-approvals-and-sandbox",
|
|
30
|
+
"--ephemeral",
|
|
29
31
|
"--model",
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
32
|
+
"gpt-5.3-codex-spark",
|
|
33
|
+
"-c",
|
|
34
|
+
'model_reasoning_effort="low"',
|
|
35
|
+
"$sd-commit",
|
|
33
36
|
],
|
|
34
37
|
{
|
|
35
38
|
stdio: "inherit",
|
|
36
|
-
env: {
|
|
37
|
-
// eslint-disable-next-line no-restricted-properties -- 자식 프로세스에 env 전달
|
|
38
|
-
...process.env,
|
|
39
|
-
MCP_CONNECTION_NONBLOCKING: "true",
|
|
40
|
-
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1",
|
|
41
|
-
DISABLE_TELEMETRY: "1",
|
|
42
|
-
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS: "1",
|
|
43
|
-
CLAUDE_CODE_DISABLE_AUTO_MEMORY: "1",
|
|
44
|
-
CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING: "1",
|
|
45
|
-
CLAUDE_CODE_DISABLE_SESSION_DATA_UPLOAD: "1",
|
|
46
|
-
CLAUDE_CODE_SKIP_PROMPT_HISTORY: "1",
|
|
47
|
-
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: "1",
|
|
48
|
-
},
|
|
49
39
|
},
|
|
50
40
|
);
|
|
51
41
|
} catch (e) {
|
|
@@ -171,7 +171,12 @@ describe("Capacitor 아이콘 처리", () => {
|
|
|
171
171
|
const assetsCmd = execaCalls.find(
|
|
172
172
|
(c) => c.command === "pnpm" && c.args.includes("capacitor-assets"),
|
|
173
173
|
);
|
|
174
|
-
|
|
174
|
+
if (assetsCmd == null) {
|
|
175
|
+
throw new Error("capacitor-assets generate 명령이 실행되지 않았습니다.");
|
|
176
|
+
}
|
|
177
|
+
const iconBackgroundColorArgIndex = assetsCmd.args.indexOf("--iconBackgroundColor");
|
|
178
|
+
expect(iconBackgroundColorArgIndex).not.toBe(-1);
|
|
179
|
+
expect(assetsCmd.args[iconBackgroundColorArgIndex + 1]).toBe("#ffffff");
|
|
175
180
|
|
|
176
181
|
// sharp가 소스 이미지를 처리했는지 확인
|
|
177
182
|
expect(mockSharp).toHaveBeenCalled();
|
|
@@ -259,5 +264,22 @@ describe("Capacitor 아이콘 처리", () => {
|
|
|
259
264
|
);
|
|
260
265
|
expect(logoCall).toBeDefined();
|
|
261
266
|
});
|
|
267
|
+
|
|
268
|
+
it("capacitor-assets generate 명령에 흰색 아이콘 배경색을 전달한다", async () => {
|
|
269
|
+
const { setupIcon } = await import("../../src/capacitor/capacitor-icon.js");
|
|
270
|
+
|
|
271
|
+
await setupIcon(PKG_PATH, _CAP_PATH, "assets/icon.png");
|
|
272
|
+
|
|
273
|
+
const assetsCmd = execaCalls.find(
|
|
274
|
+
(c) => c.command === "pnpm" && c.args.includes("capacitor-assets"),
|
|
275
|
+
);
|
|
276
|
+
if (assetsCmd == null) {
|
|
277
|
+
throw new Error("capacitor-assets generate 명령이 실행되지 않았습니다.");
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
const iconBackgroundColorArgIndex = assetsCmd.args.indexOf("--iconBackgroundColor");
|
|
281
|
+
expect(iconBackgroundColorArgIndex).not.toBe(-1);
|
|
282
|
+
expect(assetsCmd.args[iconBackgroundColorArgIndex + 1]).toBe("#ffffff");
|
|
283
|
+
});
|
|
262
284
|
});
|
|
263
285
|
});
|
|
@@ -29,7 +29,7 @@ describe("ensureCleanWorkingTree", () => {
|
|
|
29
29
|
vi.clearAllMocks();
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
it("auto-commits with
|
|
32
|
+
it("auto-commits with codex when uncommitted changes detected", async () => {
|
|
33
33
|
const logger = createLogger();
|
|
34
34
|
mocks.execa.mockImplementation((cmd: string, args?: string[]) => {
|
|
35
35
|
if (cmd === "git" && args?.[0] === "diff") {
|
|
@@ -40,11 +40,14 @@ describe("ensureCleanWorkingTree", () => {
|
|
|
40
40
|
|
|
41
41
|
await ensureCleanWorkingTree(true, logger);
|
|
42
42
|
|
|
43
|
-
const
|
|
44
|
-
(c: unknown[]) => c[0] === "
|
|
43
|
+
const codexCalls = mocks.execa.mock.calls.filter(
|
|
44
|
+
(c: unknown[]) => c[0] === "codex",
|
|
45
45
|
);
|
|
46
|
-
expect(
|
|
47
|
-
expect((
|
|
46
|
+
expect(codexCalls).toHaveLength(1);
|
|
47
|
+
expect((codexCalls[0][1] as string[])).toContain("exec");
|
|
48
|
+
expect((codexCalls[0][1] as string[])).toContain("gpt-5.3-codex-spark");
|
|
49
|
+
expect((codexCalls[0][1] as string[])).toContain('model_reasoning_effort="low"');
|
|
50
|
+
expect((codexCalls[0][1] as string[])).toContain("$sd-commit");
|
|
48
51
|
});
|
|
49
52
|
|
|
50
53
|
it("skips auto-commit when no uncommitted changes", async () => {
|
|
@@ -55,20 +58,20 @@ describe("ensureCleanWorkingTree", () => {
|
|
|
55
58
|
|
|
56
59
|
await ensureCleanWorkingTree(true, logger);
|
|
57
60
|
|
|
58
|
-
const
|
|
59
|
-
(c: unknown[]) => c[0] === "
|
|
61
|
+
const codexCalls = mocks.execa.mock.calls.filter(
|
|
62
|
+
(c: unknown[]) => c[0] === "codex",
|
|
60
63
|
);
|
|
61
|
-
expect(
|
|
64
|
+
expect(codexCalls).toHaveLength(0);
|
|
62
65
|
});
|
|
63
66
|
|
|
64
|
-
it("throws when
|
|
67
|
+
it("throws when codex auto-commit fails", async () => {
|
|
65
68
|
const logger = createLogger();
|
|
66
69
|
mocks.execa.mockImplementation((cmd: string, args?: string[]) => {
|
|
67
70
|
if (cmd === "git" && args?.[0] === "diff") {
|
|
68
71
|
return { stdout: "file.txt", stderr: "", exitCode: 0 };
|
|
69
72
|
}
|
|
70
|
-
if (cmd === "
|
|
71
|
-
throw new Error("
|
|
73
|
+
if (cmd === "codex") {
|
|
74
|
+
throw new Error("codex commit failed");
|
|
72
75
|
}
|
|
73
76
|
return { stdout: "", stderr: "", exitCode: 0 };
|
|
74
77
|
});
|
|
@@ -385,7 +385,7 @@ describe("runPublish", () => {
|
|
|
385
385
|
expect(getExecaCalls("npm", "whoami")).toHaveLength(0);
|
|
386
386
|
});
|
|
387
387
|
|
|
388
|
-
it("auto-commits with
|
|
388
|
+
it("auto-commits with codex when uncommitted changes detected", async () => {
|
|
389
389
|
setupHappyPath();
|
|
390
390
|
mocks.execa.mockImplementation(
|
|
391
391
|
(cmd: string, args?: string[], _opts?: unknown) => {
|
|
@@ -404,23 +404,26 @@ describe("runPublish", () => {
|
|
|
404
404
|
options: [],
|
|
405
405
|
});
|
|
406
406
|
|
|
407
|
-
//
|
|
408
|
-
const
|
|
409
|
-
(c: unknown[]) => c[0] === "
|
|
407
|
+
// codex CLI should have been called for auto-commit
|
|
408
|
+
const codexCalls = mocks.execa.mock.calls.filter(
|
|
409
|
+
(c: unknown[]) => c[0] === "codex",
|
|
410
410
|
);
|
|
411
|
-
expect(
|
|
412
|
-
expect((
|
|
411
|
+
expect(codexCalls).toHaveLength(1);
|
|
412
|
+
expect((codexCalls[0][1] as string[])).toContain("exec");
|
|
413
|
+
expect((codexCalls[0][1] as string[])).toContain("gpt-5.3-codex-spark");
|
|
414
|
+
expect((codexCalls[0][1] as string[])).toContain('model_reasoning_effort="low"');
|
|
415
|
+
expect((codexCalls[0][1] as string[])).toContain("$sd-commit");
|
|
413
416
|
});
|
|
414
417
|
|
|
415
|
-
it("aborts when auto-commit
|
|
418
|
+
it("aborts when auto-commit codex command fails", async () => {
|
|
416
419
|
setupHappyPath();
|
|
417
420
|
mocks.execa.mockImplementation((cmd: string, args?: string[]) => {
|
|
418
421
|
if (cmd === "npm") return { stdout: "testuser", stderr: "", exitCode: 0 };
|
|
419
422
|
if (cmd === "git" && args?.[0] === "diff") {
|
|
420
423
|
return { stdout: "file.txt", stderr: "", exitCode: 0 };
|
|
421
424
|
}
|
|
422
|
-
if (cmd === "
|
|
423
|
-
throw new Error("
|
|
425
|
+
if (cmd === "codex") {
|
|
426
|
+
throw new Error("codex commit failed");
|
|
424
427
|
}
|
|
425
428
|
return { stdout: "", stderr: "", exitCode: 0 };
|
|
426
429
|
});
|
|
@@ -445,11 +448,11 @@ describe("runPublish", () => {
|
|
|
445
448
|
options: [],
|
|
446
449
|
});
|
|
447
450
|
|
|
448
|
-
// No
|
|
449
|
-
const
|
|
450
|
-
(c: unknown[]) => c[0] === "
|
|
451
|
+
// No codex CLI calls
|
|
452
|
+
const codexCalls = mocks.execa.mock.calls.filter(
|
|
453
|
+
(c: unknown[]) => c[0] === "codex",
|
|
451
454
|
);
|
|
452
|
-
expect(
|
|
455
|
+
expect(codexCalls).toHaveLength(0);
|
|
453
456
|
});
|
|
454
457
|
});
|
|
455
458
|
|