@intentic/scaffold 1.326.0 → 1.328.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 +6 -10
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/exec.d.ts +0 -42
- package/dist/exec.d.ts.map +0 -1
- package/dist/exec.js +0 -266
- package/dist/exec.js.map +0 -1
- package/dist/forker.d.ts +0 -20
- package/dist/forker.d.ts.map +0 -1
- package/dist/forker.js +0 -32
- package/dist/forker.js.map +0 -1
- package/dist/git.d.ts +0 -41
- package/dist/git.d.ts.map +0 -1
- package/dist/git.js +0 -84
- package/dist/git.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
# scaffold
|
|
2
2
|
|
|
3
|
-
The workspace
|
|
3
|
+
The workspace skeleton the intentic CLI and the sandbox daemon share: the on-disk layout, template scaffolding, the `deploy.config.ts` managed region and secret sync state.
|
|
4
4
|
|
|
5
5
|
```mermaid
|
|
6
6
|
flowchart LR
|
|
7
7
|
cli["intentic CLI<br/>init · add-app · adopt · secrets"] --> scaffold(["scaffold"])
|
|
8
|
-
daemon["Sandbox daemon<br/>
|
|
9
|
-
scaffold --> git["git<br/>forked from a resident child"]
|
|
8
|
+
daemon["Sandbox daemon<br/>templates · secrets"] --> scaffold
|
|
10
9
|
scaffold --> source["Template source repo<br/>templates.json"]
|
|
11
10
|
scaffold --> config["deploy.config.ts<br/>managed region"]
|
|
12
11
|
```
|
|
13
12
|
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
at 778 MB, where a request to the child costs 0.04 ms. `politeGit` runs bulk agent work under `nice` and `ionice`.
|
|
13
|
+
- Running git is not here: the runner (`defaultGit`, `forkedExec`, the git verbs and stale-lock clearing) is
|
|
14
|
+
[`@intentic/base/git`](../../_tools/base/src/git/index.ts). (2026-10-06: it moved there from this package, which is
|
|
15
|
+
named for the skeleton, rather than into a package of its own, since a name npm has never seen fails the release plan
|
|
16
|
+
until it is registered by hand.)
|
|
19
17
|
- `workspace-layout.ts` names the three repos a project operates on (`intent`, `desired-state`, `app`) and their
|
|
20
18
|
well-known files. The CLI and the daemon must agree on these names.
|
|
21
19
|
- `scaffoldMonorepo` and `addAppsToMonorepo` build an app monorepo from a template source repository described by
|
|
@@ -29,8 +27,6 @@ flowchart LR
|
|
|
29
27
|
|
|
30
28
|
## Key files
|
|
31
29
|
|
|
32
|
-
- [src/exec.ts](src/exec.ts) — `defaultGit`, `politeGit`, `forkedExec`, the forker client and git command observation.
|
|
33
|
-
- [src/git.ts](src/git.ts) — generic git verbs over an injectable `GitRunner`.
|
|
34
30
|
- [src/workspace-layout.ts](src/workspace-layout.ts) — the repo roles, directory names and file names.
|
|
35
31
|
- [src/inject-template.ts](src/inject-template.ts) — template fetch, monorepo shell and app injection.
|
|
36
32
|
- [src/deploy-config.ts](src/deploy-config.ts) — render and parse of the `deploy.config.ts` managed region.
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/scaffold",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.328.0",
|
|
4
4
|
"description": "Shared scaffold for an intentic workspace, the intent-repo skeleton + deploy.config managed-region render/parse, used by the CLI's `init` and the sandbox daemon",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -30,16 +30,16 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@intentic/constants": "1.
|
|
34
|
-
"@intentic/graph": "1.
|
|
35
|
-
"@intentic/sandbox-contract": "1.
|
|
33
|
+
"@intentic/constants": "1.328.0",
|
|
34
|
+
"@intentic/graph": "1.328.0",
|
|
35
|
+
"@intentic/sandbox-contract": "1.328.0",
|
|
36
36
|
"tslib": "2.8.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@intentic/testing": "0.0.0",
|
|
40
40
|
"@intentic/tsconfig": "0.0.0",
|
|
41
41
|
"@types/bun": "1.4.2",
|
|
42
|
-
"@types/node": "24.
|
|
42
|
+
"@types/node": "24.19.1",
|
|
43
43
|
"@typescript/native-preview": "7.0.0-dev.20260707.2"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
package/dist/exec.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
|
-
export declare const exec: typeof execFile.__promisify__;
|
|
3
|
-
export declare const GIT_GLOBAL_ARGS: readonly ["--no-optional-locks", "-c", "core.fileMode=false"];
|
|
4
|
-
export declare const literalPathspecs: (args: readonly string[]) => readonly string[];
|
|
5
|
-
export type GitRunner = (dir: string, args: readonly string[], env?: Readonly<Record<string, string>>) => Promise<{
|
|
6
|
-
readonly stdout: string;
|
|
7
|
-
readonly stderr: string;
|
|
8
|
-
}>;
|
|
9
|
-
export declare const gitBytes: (dir: string, args: readonly string[], maxBytes: number) => Promise<Buffer>;
|
|
10
|
-
type ForkedOutput = {
|
|
11
|
-
readonly stdout: string;
|
|
12
|
-
readonly stderr: string;
|
|
13
|
-
};
|
|
14
|
-
export declare const forkedExec: (command: string, args: readonly string[], options?: Partial<ForkedOptions>) => Promise<ForkedOutput>;
|
|
15
|
-
export declare const gitSpawnStats: () => {
|
|
16
|
-
readonly activeBulk: number;
|
|
17
|
-
readonly queuedBulk: number;
|
|
18
|
-
readonly bulkSlots: number;
|
|
19
|
-
};
|
|
20
|
-
interface ForkedOptions {
|
|
21
|
-
readonly maxBuffer: number;
|
|
22
|
-
readonly timeout?: number;
|
|
23
|
-
readonly cwd?: string;
|
|
24
|
-
readonly env?: Readonly<Record<string, string>>;
|
|
25
|
-
}
|
|
26
|
-
export interface GitObservation {
|
|
27
|
-
readonly dir: string;
|
|
28
|
-
readonly args: readonly string[];
|
|
29
|
-
readonly ms: number;
|
|
30
|
-
readonly execMs: number;
|
|
31
|
-
readonly attempts: number;
|
|
32
|
-
readonly failed: boolean;
|
|
33
|
-
readonly forked: boolean;
|
|
34
|
-
readonly queueDepth: number;
|
|
35
|
-
}
|
|
36
|
-
export declare const observeGitCommands: (observer: (observation: GitObservation) => void) => void;
|
|
37
|
-
export declare const gitRunCounts: () => Readonly<Record<string, number>>;
|
|
38
|
-
export declare const defaultGit: GitRunner;
|
|
39
|
-
export declare const settleIndex: (dir: string) => Promise<boolean>;
|
|
40
|
-
export declare const politeGit: GitRunner;
|
|
41
|
-
export {};
|
|
42
|
-
//# sourceMappingURL=exec.d.ts.map
|
package/dist/exec.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAQ,MAAM,oBAAoB,CAAC;AAOvE,eAAO,MAAM,IAAI,+BAAsB,CAAC;AAKxC,eAAO,MAAM,eAAe,+DAAuD,CAAC;AAMpF,eAAO,MAAM,gBAAgB,SAAU,SAAS,MAAM,EAAE,KAAG,SAAS,MAAM,EAMzE,CAAC;AAgBF,MAAM,MAAM,SAAS,GAAG,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACrC,OAAO,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAKnE,eAAO,MAAM,QAAQ,QAAe,MAAM,QAAQ,SAAS,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,CAGrG,CAAC;AAIF,KAAK,YAAY,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA+EzE,eAAO,MAAM,UAAU,YAAmB,MAAM,QAAQ,SAAS,MAAM,EAAE,YAAW,OAAO,CAAC,aAAa,CAAC,KAAQ,OAAO,CAAC,YAAY,CAGrI,CAAC;AAoDF,eAAO,MAAM,aAAa,QAAO;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAIrH,CAAC;AAEH,UAAU,aAAa;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD;AAgED,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAOD,eAAO,MAAM,kBAAkB,aAAc,CAAC,WAAW,EAAE,cAAc,KAAK,IAAI,KAAG,IAEpF,CAAC;AASF,eAAO,MAAM,YAAY,QAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAyC,CAAC;AA4EzG,eAAO,MAAM,UAAU,EAAE,SAAyF,CAAC;AAmBnH,eAAO,MAAM,WAAW,QAAe,MAAM,KAAG,OAAO,CAAC,OAAO,CAa9D,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,SASvB,CAAC"}
|
package/dist/exec.js
DELETED
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
import { execFile, fork } from "node:child_process";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { availableParallelism } from "node:os";
|
|
4
|
-
import { promisify } from "node:util";
|
|
5
|
-
export const exec = promisify(execFile);
|
|
6
|
-
const GIT_CONFIG_ARGS = ["-c", "core.fileMode=false"];
|
|
7
|
-
export const GIT_GLOBAL_ARGS = ["--no-optional-locks", ...GIT_CONFIG_ARGS];
|
|
8
|
-
const PLUMBING_PATHS = new Set(["update-index", "hash-object", "check-ignore", "check-attr"]);
|
|
9
|
-
export const literalPathspecs = (args) => {
|
|
10
|
-
const separator = args.lastIndexOf("--");
|
|
11
|
-
if (separator === -1 || separator === args.length - 1 || PLUMBING_PATHS.has(subcommandOf(args) ?? "")) {
|
|
12
|
-
return args;
|
|
13
|
-
}
|
|
14
|
-
return [...args.slice(0, separator + 1), ...args.slice(separator + 1).map((path) => `:(literal)${path}`)];
|
|
15
|
-
};
|
|
16
|
-
const MAX_GIT_OUTPUT = 16 * 1024 * 1024;
|
|
17
|
-
const LOCK_CONTENTION = /index\.lock.*File exists|Unable to create.*\.lock/i;
|
|
18
|
-
const RETRY_ATTEMPTS = 6;
|
|
19
|
-
const isLockContention = (error) => {
|
|
20
|
-
const stderr = error.stderr;
|
|
21
|
-
return typeof stderr === "string" && LOCK_CONTENTION.test(stderr);
|
|
22
|
-
};
|
|
23
|
-
export const gitBytes = async (dir, args, maxBytes) => {
|
|
24
|
-
const { stdout } = await exec("git", [...GIT_GLOBAL_ARGS, "-C", dir, ...literalPathspecs(args)], { maxBuffer: maxBytes, encoding: "buffer" });
|
|
25
|
-
return stdout;
|
|
26
|
-
};
|
|
27
|
-
const inFlight = new Map();
|
|
28
|
-
let forker;
|
|
29
|
-
let forkerUnavailable = false;
|
|
30
|
-
let nextRequestId = 0;
|
|
31
|
-
const settle = (id) => {
|
|
32
|
-
inFlight.delete(id);
|
|
33
|
-
if (inFlight.size === 0) {
|
|
34
|
-
forker?.channel?.unref();
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
const forkerFailure = (response, failure) => Object.assign(new Error(failure.message), {
|
|
38
|
-
...(failure.code !== undefined ? { code: failure.code } : {}),
|
|
39
|
-
stdout: response.stdout,
|
|
40
|
-
stderr: response.stderr,
|
|
41
|
-
execMs: response.execMs,
|
|
42
|
-
});
|
|
43
|
-
const failedExecMs = (error) => {
|
|
44
|
-
const reported = error.execMs;
|
|
45
|
-
return typeof reported === "number" ? reported : 0;
|
|
46
|
-
};
|
|
47
|
-
const forkerModule = new URL("./forker.js", import.meta.url);
|
|
48
|
-
const residentForker = () => {
|
|
49
|
-
if (forker !== undefined || forkerUnavailable) {
|
|
50
|
-
return forker;
|
|
51
|
-
}
|
|
52
|
-
if (!existsSync(forkerModule)) {
|
|
53
|
-
forkerUnavailable = true;
|
|
54
|
-
return undefined;
|
|
55
|
-
}
|
|
56
|
-
const started = fork(forkerModule, { execArgv: [], stdio: ["ignore", "ignore", "inherit", "ipc"] });
|
|
57
|
-
started.on("message", (message) => {
|
|
58
|
-
const response = message;
|
|
59
|
-
const waiting = inFlight.get(response.id);
|
|
60
|
-
if (waiting === undefined) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
settle(response.id);
|
|
64
|
-
if (response.failure !== undefined) {
|
|
65
|
-
waiting.reject(forkerFailure(response, response.failure));
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
waiting.resolve({ stdout: response.stdout, stderr: response.stderr, execMs: response.execMs });
|
|
69
|
-
});
|
|
70
|
-
started.on("exit", () => {
|
|
71
|
-
forker = undefined;
|
|
72
|
-
const orphaned = [...inFlight.values()];
|
|
73
|
-
inFlight.clear();
|
|
74
|
-
for (const waiting of orphaned) {
|
|
75
|
-
waiting.reject(new Error("the forker exited"));
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
started.on("error", () => {
|
|
79
|
-
forkerUnavailable = true;
|
|
80
|
-
});
|
|
81
|
-
started.unref();
|
|
82
|
-
started.channel?.unref();
|
|
83
|
-
forker = started;
|
|
84
|
-
return forker;
|
|
85
|
-
};
|
|
86
|
-
export const forkedExec = async (command, args, options = {}) => {
|
|
87
|
-
const { stdout, stderr } = await runForked(command, args, { ...options, maxBuffer: options.maxBuffer ?? MAX_GIT_OUTPUT });
|
|
88
|
-
return { stdout, stderr };
|
|
89
|
-
};
|
|
90
|
-
const BULK_SLOTS = Math.max(2, Math.floor(availableParallelism() / 4));
|
|
91
|
-
const UNBOUNDED = new Set(["push", "fetch", "pull", "clone", "ls-remote", "submodule"]);
|
|
92
|
-
const subcommandOf = (args) => {
|
|
93
|
-
for (let index = 0; index < args.length; index += 1) {
|
|
94
|
-
const arg = args[index];
|
|
95
|
-
if (arg === "-c" || arg === "-C") {
|
|
96
|
-
index += 1;
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
if (!arg.startsWith("-")) {
|
|
100
|
-
return arg;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return undefined;
|
|
104
|
-
};
|
|
105
|
-
let activeBulk = 0;
|
|
106
|
-
const waitingBulk = [];
|
|
107
|
-
const acquireBulk = () => {
|
|
108
|
-
if (activeBulk < BULK_SLOTS) {
|
|
109
|
-
activeBulk += 1;
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
return new Promise((resolve) => waitingBulk.push(resolve));
|
|
113
|
-
};
|
|
114
|
-
const releaseBulk = () => {
|
|
115
|
-
activeBulk -= 1;
|
|
116
|
-
const next = waitingBulk.shift();
|
|
117
|
-
if (next === undefined) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
activeBulk += 1;
|
|
121
|
-
next();
|
|
122
|
-
};
|
|
123
|
-
export const gitSpawnStats = () => ({
|
|
124
|
-
activeBulk,
|
|
125
|
-
queuedBulk: waitingBulk.length,
|
|
126
|
-
bulkSlots: BULK_SLOTS,
|
|
127
|
-
});
|
|
128
|
-
const runForked = async (command, args, options) => {
|
|
129
|
-
const resolved = options.env === undefined ? undefined : { ...process.env, ...options.env };
|
|
130
|
-
const limits = {
|
|
131
|
-
maxBuffer: options.maxBuffer,
|
|
132
|
-
...(options.timeout !== undefined ? { timeout: options.timeout } : {}),
|
|
133
|
-
...(options.cwd !== undefined ? { cwd: options.cwd } : {}),
|
|
134
|
-
};
|
|
135
|
-
const channel = residentForker();
|
|
136
|
-
if (channel === undefined) {
|
|
137
|
-
const from = process.hrtime.bigint();
|
|
138
|
-
try {
|
|
139
|
-
const output = await exec(command, [...args], { ...limits, ...(resolved !== undefined ? { env: resolved } : {}) });
|
|
140
|
-
return { ...output, execMs: Number(process.hrtime.bigint() - from) / 1e6 };
|
|
141
|
-
}
|
|
142
|
-
catch (error) {
|
|
143
|
-
if (typeof error === "object" && error !== null) {
|
|
144
|
-
Object.assign(error, { execMs: Number(process.hrtime.bigint() - from) / 1e6 });
|
|
145
|
-
}
|
|
146
|
-
throw error;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
const id = nextRequestId;
|
|
150
|
-
nextRequestId += 1;
|
|
151
|
-
const request = { id, command, args, ...limits, ...(resolved !== undefined ? { env: resolved } : {}) };
|
|
152
|
-
return await new Promise((resolve, reject) => {
|
|
153
|
-
inFlight.set(id, { resolve, reject });
|
|
154
|
-
channel.channel?.ref();
|
|
155
|
-
channel.send(request, (error) => {
|
|
156
|
-
if (error !== null) {
|
|
157
|
-
settle(id);
|
|
158
|
-
reject(error);
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
};
|
|
163
|
-
const runGitSlotted = async (command, args, env, bulk, unbounded) => {
|
|
164
|
-
const options = { maxBuffer: MAX_GIT_OUTPUT, ...(env !== undefined ? { env } : {}) };
|
|
165
|
-
if (!bulk || unbounded) {
|
|
166
|
-
return await runForked(command, args, options);
|
|
167
|
-
}
|
|
168
|
-
await acquireBulk();
|
|
169
|
-
try {
|
|
170
|
-
return await runForked(command, args, options);
|
|
171
|
-
}
|
|
172
|
-
finally {
|
|
173
|
-
releaseBulk();
|
|
174
|
-
}
|
|
175
|
-
};
|
|
176
|
-
let gitObserver;
|
|
177
|
-
export const observeGitCommands = (observer) => {
|
|
178
|
-
gitObserver = observer;
|
|
179
|
-
};
|
|
180
|
-
const settling = new Map();
|
|
181
|
-
const runningIn = new Map();
|
|
182
|
-
const runsBySubcommand = new Map();
|
|
183
|
-
export const gitRunCounts = () => Object.fromEntries(runsBySubcommand);
|
|
184
|
-
const gitRunnerVia = (argv, { bulk, globals, gated }) => async (dir, args, env) => {
|
|
185
|
-
const pending = gated ? settling.get(dir) : undefined;
|
|
186
|
-
if (pending !== undefined) {
|
|
187
|
-
await pending;
|
|
188
|
-
}
|
|
189
|
-
runningIn.set(dir, (runningIn.get(dir) ?? 0) + 1);
|
|
190
|
-
const subcommand = subcommandOf(args) ?? "?";
|
|
191
|
-
runsBySubcommand.set(subcommand, (runsBySubcommand.get(subcommand) ?? 0) + 1);
|
|
192
|
-
try {
|
|
193
|
-
return await runGit(argv, bulk, globals, dir, args, env);
|
|
194
|
-
}
|
|
195
|
-
finally {
|
|
196
|
-
const left = (runningIn.get(dir) ?? 1) - 1;
|
|
197
|
-
if (left === 0) {
|
|
198
|
-
runningIn.delete(dir);
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
runningIn.set(dir, left);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
const runGit = async (argv, bulk, globals, dir, args, env) => {
|
|
206
|
-
const [command, ...rest] = argv;
|
|
207
|
-
const unbounded = UNBOUNDED.has(subcommandOf(args) ?? "");
|
|
208
|
-
const from = process.hrtime.bigint();
|
|
209
|
-
let execMs = 0;
|
|
210
|
-
const observe = (attempts, failed) => {
|
|
211
|
-
gitObserver?.({
|
|
212
|
-
dir,
|
|
213
|
-
args,
|
|
214
|
-
ms: Number(process.hrtime.bigint() - from) / 1e6,
|
|
215
|
-
execMs,
|
|
216
|
-
attempts,
|
|
217
|
-
failed,
|
|
218
|
-
forked: forker !== undefined,
|
|
219
|
-
queueDepth: waitingBulk.length,
|
|
220
|
-
});
|
|
221
|
-
};
|
|
222
|
-
for (let attempt = 1;; attempt += 1) {
|
|
223
|
-
try {
|
|
224
|
-
const output = await runGitSlotted(command, [...rest, ...globals, "-C", dir, ...literalPathspecs(args)], env, bulk, unbounded);
|
|
225
|
-
execMs += output.execMs;
|
|
226
|
-
observe(attempt, false);
|
|
227
|
-
return { stdout: output.stdout, stderr: output.stderr };
|
|
228
|
-
}
|
|
229
|
-
catch (error) {
|
|
230
|
-
execMs += failedExecMs(error);
|
|
231
|
-
if (attempt >= RETRY_ATTEMPTS || !isLockContention(error)) {
|
|
232
|
-
observe(attempt, true);
|
|
233
|
-
throw error;
|
|
234
|
-
}
|
|
235
|
-
await new Promise((resolve) => setTimeout(resolve, attempt * attempt * 50));
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
};
|
|
239
|
-
export const defaultGit = gitRunnerVia(["git"], { bulk: false, globals: GIT_GLOBAL_ARGS, gated: true });
|
|
240
|
-
const nicedGit = gitRunnerVia(["nice", "-n", "10", "ionice", "-c", "2", "-n", "7", "git"], { bulk: true, globals: GIT_GLOBAL_ARGS, gated: true });
|
|
241
|
-
const plainBulkGit = gitRunnerVia(["git"], { bulk: true, globals: GIT_GLOBAL_ARGS, gated: true });
|
|
242
|
-
const settlingGit = gitRunnerVia(["git"], { bulk: false, globals: GIT_CONFIG_ARGS, gated: false });
|
|
243
|
-
const SETTLE_MARGIN_MS = 50;
|
|
244
|
-
export const settleIndex = async (dir) => {
|
|
245
|
-
await new Promise((resolve) => setTimeout(resolve, 1000 - (Date.now() % 1000) + SETTLE_MARGIN_MS));
|
|
246
|
-
if (runningIn.has(dir) || settling.has(dir)) {
|
|
247
|
-
return false;
|
|
248
|
-
}
|
|
249
|
-
const run = settlingGit(dir, ["status", "--porcelain", "-uno"]);
|
|
250
|
-
const done = run.then(() => settling.delete(dir), () => settling.delete(dir));
|
|
251
|
-
settling.set(dir, done);
|
|
252
|
-
await run;
|
|
253
|
-
return true;
|
|
254
|
-
};
|
|
255
|
-
export const politeGit = async (dir, args, env) => {
|
|
256
|
-
try {
|
|
257
|
-
return await nicedGit(dir, args, env);
|
|
258
|
-
}
|
|
259
|
-
catch (error) {
|
|
260
|
-
if (error.code === "ENOENT") {
|
|
261
|
-
return await plainBulkGit(dir, args, env);
|
|
262
|
-
}
|
|
263
|
-
throw error;
|
|
264
|
-
}
|
|
265
|
-
};
|
|
266
|
-
//# sourceMappingURL=exec.js.map
|
package/dist/exec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"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"}
|
package/dist/forker.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export interface ForkRequest {
|
|
2
|
-
readonly id: number;
|
|
3
|
-
readonly command: string;
|
|
4
|
-
readonly args: readonly string[];
|
|
5
|
-
readonly maxBuffer: number;
|
|
6
|
-
readonly timeout?: number;
|
|
7
|
-
readonly cwd?: string;
|
|
8
|
-
readonly env?: Readonly<Record<string, string | undefined>>;
|
|
9
|
-
}
|
|
10
|
-
export interface ForkResponse {
|
|
11
|
-
readonly id: number;
|
|
12
|
-
readonly stdout: string;
|
|
13
|
-
readonly stderr: string;
|
|
14
|
-
readonly execMs: number;
|
|
15
|
-
readonly failure?: {
|
|
16
|
-
readonly message: string;
|
|
17
|
-
readonly code?: number | string;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=forker.d.ts.map
|
package/dist/forker.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"forker.d.ts","sourceRoot":"","sources":["../src/forker.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAC/D;AAID,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACpF"}
|
package/dist/forker.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
|
-
const send = process.send?.bind(process);
|
|
3
|
-
if (send === undefined) {
|
|
4
|
-
throw new Error("the forker started without an IPC channel");
|
|
5
|
-
}
|
|
6
|
-
process.on("message", (request) => {
|
|
7
|
-
const from = process.hrtime.bigint();
|
|
8
|
-
execFile(request.command, [...request.args], {
|
|
9
|
-
maxBuffer: request.maxBuffer,
|
|
10
|
-
...(request.timeout !== undefined ? { timeout: request.timeout } : {}),
|
|
11
|
-
...(request.cwd !== undefined ? { cwd: request.cwd } : {}),
|
|
12
|
-
...(request.env !== undefined ? { env: request.env } : {}),
|
|
13
|
-
}, (error, stdout, stderr) => {
|
|
14
|
-
const response = {
|
|
15
|
-
id: request.id,
|
|
16
|
-
stdout,
|
|
17
|
-
stderr,
|
|
18
|
-
execMs: Number(process.hrtime.bigint() - from) / 1e6,
|
|
19
|
-
...(error === null
|
|
20
|
-
? {}
|
|
21
|
-
: {
|
|
22
|
-
failure: {
|
|
23
|
-
message: error.message,
|
|
24
|
-
...(error.code !== undefined && error.code !== null ? { code: error.code } : {}),
|
|
25
|
-
},
|
|
26
|
-
}),
|
|
27
|
-
};
|
|
28
|
-
send(response);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
process.on("disconnect", () => process.exit(0));
|
|
32
|
-
//# sourceMappingURL=forker.js.map
|
package/dist/forker.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"forker.js","sourceRoot":"","sources":["../src/forker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA6B9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;IACrB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AACjE,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAoB,EAAE,EAAE;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACrC,QAAQ,CACJ,OAAO,CAAC,OAAO,EACf,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,EACjB;QACI,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,EACD,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAiB;YAC3B,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,MAAM;YACN,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG;YAEpD,GAAG,CAAC,KAAK,KAAK,IAAI;gBACd,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACI,OAAO,EAAE;wBACL,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACnF;iBACJ,CAAC;SACX,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC,CACJ,CAAC;AACN,CAAC,CAAC,CAAC;AAGH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/git.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { type GitRunner } from "./exec.js";
|
|
2
|
-
export declare const gitInit: (dir: string, separateGitDir?: string, git?: GitRunner) => Promise<void>;
|
|
3
|
-
export interface GitCloneOptions {
|
|
4
|
-
readonly branch?: string;
|
|
5
|
-
readonly authHeader?: string;
|
|
6
|
-
readonly separateGitDir?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare const gitClone: (parentDir: string, name: string, cloneUrl: string, options?: GitCloneOptions, git?: GitRunner) => Promise<void>;
|
|
9
|
-
export interface GitStatus {
|
|
10
|
-
readonly branch: string;
|
|
11
|
-
readonly dirty: boolean;
|
|
12
|
-
readonly files: string[];
|
|
13
|
-
}
|
|
14
|
-
export declare const gitStatus: (dir: string, git?: GitRunner) => Promise<GitStatus>;
|
|
15
|
-
export declare const gitStageAll: (dir: string, git?: GitRunner) => Promise<void>;
|
|
16
|
-
export declare const gitCommitAll: (dir: string, message: string, author: {
|
|
17
|
-
readonly name: string;
|
|
18
|
-
readonly email: string;
|
|
19
|
-
}, git?: GitRunner) => Promise<boolean>;
|
|
20
|
-
export declare const gitCheckout: (dir: string, ref: string, git?: GitRunner) => Promise<void>;
|
|
21
|
-
export declare const gitHead: (dir: string, git?: GitRunner) => Promise<string>;
|
|
22
|
-
export declare const gitFullHead: (dir: string, git?: GitRunner) => Promise<string>;
|
|
23
|
-
export declare const gitListFiles: (dir: string, git?: GitRunner) => Promise<string[]>;
|
|
24
|
-
export type GitSyncResult = {
|
|
25
|
-
readonly status: "updated";
|
|
26
|
-
readonly behind: number;
|
|
27
|
-
readonly head: string;
|
|
28
|
-
} | {
|
|
29
|
-
readonly status: "current";
|
|
30
|
-
} | {
|
|
31
|
-
readonly status: "dirty";
|
|
32
|
-
readonly behind: number;
|
|
33
|
-
} | {
|
|
34
|
-
readonly status: "diverged";
|
|
35
|
-
readonly ahead: number;
|
|
36
|
-
readonly behind: number;
|
|
37
|
-
} | {
|
|
38
|
-
readonly status: "no-remote";
|
|
39
|
-
};
|
|
40
|
-
export declare const gitSync: (dir: string, git?: GitRunner) => Promise<GitSyncResult>;
|
|
41
|
-
//# sourceMappingURL=git.d.ts.map
|
package/dist/git.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAMvD,eAAO,MAAM,OAAO,QAAe,MAAM,mBAAmB,MAAM,QAAO,SAAS,KAAgB,OAAO,CAAC,IAAI,CAO7G,CAAC;AAEF,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACpC;AAID,eAAO,MAAM,QAAQ,cACN,MAAM,QACX,MAAM,YACF,MAAM,YACN,eAAe,QACpB,SAAS,KACf,OAAO,CAAC,IAAI,CAad,CAAC;AAQF,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,SAAS,QAAe,MAAM,QAAO,SAAS,KAAgB,OAAO,CAAC,SAAS,CAM3F,CAAC;AAIF,eAAO,MAAM,WAAW,QAAe,MAAM,QAAO,SAAS,KAAgB,OAAO,CAAC,IAAI,CAQxF,CAAC;AAIF,eAAO,MAAM,YAAY,QAChB,MAAM,WACF,MAAM,UACP;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,QACpD,SAAS,KACf,OAAO,CAAC,OAAO,CASjB,CAAC;AAGF,eAAO,MAAM,WAAW,QAAe,MAAM,OAAO,MAAM,QAAO,SAAS,KAAgB,OAAO,CAAC,IAAI,CAErG,CAAC;AAGF,eAAO,MAAM,OAAO,QAAe,MAAM,QAAO,SAAS,KAAgB,OAAO,CAAC,MAAM,CACnB,CAAC;AAIrE,eAAO,MAAM,WAAW,QAAe,MAAM,QAAO,SAAS,KAAgB,OAAO,CAAC,MAAM,CAA0D,CAAC;AAGtJ,eAAO,MAAM,YAAY,QAAe,MAAM,QAAO,SAAS,KAAgB,OAAO,CAAC,MAAM,EAAE,CAIxD,CAAC;AAEvC,MAAM,MAAM,aAAa,GACnB;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChF;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAIvC,eAAO,MAAM,OAAO,QAAe,MAAM,QAAO,SAAS,KAAgB,OAAO,CAAC,aAAa,CA2B7F,CAAC"}
|
package/dist/git.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { mkdir } from "node:fs/promises";
|
|
2
|
-
import { dirname } from "node:path";
|
|
3
|
-
import { defaultGit } from "./exec.js";
|
|
4
|
-
export const gitInit = async (dir, separateGitDir, git = defaultGit) => {
|
|
5
|
-
await mkdir(dir, { recursive: true });
|
|
6
|
-
if (separateGitDir !== undefined) {
|
|
7
|
-
await mkdir(dirname(separateGitDir), { recursive: true });
|
|
8
|
-
}
|
|
9
|
-
await git(dir, ["init", "-q", "--initial-branch=main", ...(separateGitDir !== undefined ? [`--separate-git-dir=${separateGitDir}`] : [])]);
|
|
10
|
-
};
|
|
11
|
-
export const gitClone = async (parentDir, name, cloneUrl, options, git = defaultGit) => {
|
|
12
|
-
if (options?.separateGitDir !== undefined) {
|
|
13
|
-
await mkdir(dirname(options.separateGitDir), { recursive: true });
|
|
14
|
-
}
|
|
15
|
-
await git(parentDir, [
|
|
16
|
-
...(options?.authHeader !== undefined ? ["-c", `http.extraheader=${options.authHeader}`] : []),
|
|
17
|
-
"clone",
|
|
18
|
-
...(options?.branch !== undefined ? ["--branch", options.branch] : []),
|
|
19
|
-
...(options?.separateGitDir !== undefined ? [`--separate-git-dir=${options.separateGitDir}`] : []),
|
|
20
|
-
cloneUrl,
|
|
21
|
-
name,
|
|
22
|
-
]);
|
|
23
|
-
};
|
|
24
|
-
const porcelainFiles = (stdout) => stdout
|
|
25
|
-
.split("\n")
|
|
26
|
-
.map((line) => line.trim())
|
|
27
|
-
.filter((line) => line !== "");
|
|
28
|
-
export const gitStatus = async (dir, git = defaultGit) => {
|
|
29
|
-
const [branchOut, statusOut] = await Promise.all([git(dir, ["rev-parse", "--abbrev-ref", "HEAD"]), git(dir, ["status", "--porcelain"])]);
|
|
30
|
-
const branch = branchOut.stdout.trim();
|
|
31
|
-
const files = porcelainFiles(statusOut.stdout);
|
|
32
|
-
return { branch, dirty: files.length > 0, files };
|
|
33
|
-
};
|
|
34
|
-
export const gitStageAll = async (dir, git = defaultGit) => {
|
|
35
|
-
try {
|
|
36
|
-
await git(dir, ["-c", "advice.addEmbeddedRepo=false", "add", "-A", "--ignore-errors"]);
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
if (error.code !== 1) {
|
|
40
|
-
throw error;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
export const gitCommitAll = async (dir, message, author, git = defaultGit) => {
|
|
45
|
-
await gitStageAll(dir, git);
|
|
46
|
-
if ((await git(dir, ["diff", "--cached", "--name-only", "-z"])).stdout === "") {
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
await git(dir, ["-c", `user.name=${author.name}`, "-c", `user.email=${author.email}`, "commit", "--no-verify", "-m", message]);
|
|
50
|
-
return true;
|
|
51
|
-
};
|
|
52
|
-
export const gitCheckout = async (dir, ref, git = defaultGit) => {
|
|
53
|
-
await git(dir, ["checkout", "--detach", "-q", ref]);
|
|
54
|
-
};
|
|
55
|
-
export const gitHead = async (dir, git = defaultGit) => (await git(dir, ["rev-parse", "--short", "HEAD"])).stdout.trim();
|
|
56
|
-
export const gitFullHead = async (dir, git = defaultGit) => (await git(dir, ["rev-parse", "HEAD"])).stdout.trim();
|
|
57
|
-
export const gitListFiles = async (dir, git = defaultGit) => (await git(dir, ["ls-files"])).stdout
|
|
58
|
-
.split("\n")
|
|
59
|
-
.map((line) => line.trim())
|
|
60
|
-
.filter((line) => line !== "");
|
|
61
|
-
export const gitSync = async (dir, git = defaultGit) => {
|
|
62
|
-
const remotes = (await git(dir, ["remote"])).stdout.split("\n").map((line) => line.trim());
|
|
63
|
-
if (!remotes.includes("origin")) {
|
|
64
|
-
return { status: "no-remote" };
|
|
65
|
-
}
|
|
66
|
-
await git(dir, ["fetch", "--quiet", "origin"]);
|
|
67
|
-
const upstream = await git(dir, ["rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"]).then((r) => r.stdout.trim(), () => "");
|
|
68
|
-
if (upstream === "") {
|
|
69
|
-
return { status: "no-remote" };
|
|
70
|
-
}
|
|
71
|
-
const [behind = 0, ahead = 0] = (await git(dir, ["rev-list", "--left-right", "--count", "@{u}...HEAD"])).stdout.trim().split(/\s+/).map(Number);
|
|
72
|
-
if (behind === 0) {
|
|
73
|
-
return { status: "current" };
|
|
74
|
-
}
|
|
75
|
-
if (porcelainFiles((await git(dir, ["status", "--porcelain"])).stdout).length > 0) {
|
|
76
|
-
return { status: "dirty", behind };
|
|
77
|
-
}
|
|
78
|
-
if (ahead > 0) {
|
|
79
|
-
return { status: "diverged", ahead, behind };
|
|
80
|
-
}
|
|
81
|
-
await git(dir, ["merge", "--ff-only", "--quiet", "@{u}"]);
|
|
82
|
-
return { status: "updated", behind, head: await gitHead(dir, git) };
|
|
83
|
-
};
|
|
84
|
-
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|