@viraatdas/rudder 3.1.24 → 3.2.1
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/checkout-sync.d.ts +21 -0
- package/dist/checkout-sync.js +137 -2
- package/dist/checkout-sync.js.map +1 -1
- package/dist/cloud.d.ts +1 -0
- package/dist/cloud.js +77 -9
- package/dist/cloud.js.map +1 -1
- package/dist/main.js +16 -2
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
package/dist/checkout-sync.d.ts
CHANGED
|
@@ -9,6 +9,27 @@ export interface CheckoutSyncReport {
|
|
|
9
9
|
dirty: boolean;
|
|
10
10
|
moved: boolean;
|
|
11
11
|
note: string;
|
|
12
|
+
work?: WorkReport;
|
|
13
|
+
}
|
|
14
|
+
export interface WorkReport {
|
|
15
|
+
sent?: {
|
|
16
|
+
head: string;
|
|
17
|
+
commits: number;
|
|
18
|
+
};
|
|
19
|
+
received?: {
|
|
20
|
+
from: string;
|
|
21
|
+
head: string;
|
|
22
|
+
outcome: "moved" | "have" | "diverged" | "failed";
|
|
23
|
+
note: string;
|
|
24
|
+
};
|
|
12
25
|
}
|
|
13
26
|
export declare function syncCheckout(root: string): Promise<CheckoutSyncReport>;
|
|
14
27
|
export declare function describeSync(where: string, report: CheckoutSyncReport): string;
|
|
28
|
+
/**
|
|
29
|
+
* Bundle this side's unpushed work into `outFile`. A working copy with edits
|
|
30
|
+
* is checkpointed first (`jj new`), so later edits here land in a CHILD of the
|
|
31
|
+
* sent change and the other side can still fast-forward to them next time.
|
|
32
|
+
*/
|
|
33
|
+
export declare function exportWork(root: string, outFile: string): Promise<WorkReport["sent"] | null>;
|
|
34
|
+
/** Take the other side's work from a bundle made by exportWork. */
|
|
35
|
+
export declare function importWork(root: string, bundle: string, head: string, from: string): Promise<NonNullable<WorkReport["received"]>>;
|
package/dist/checkout-sync.js
CHANGED
|
@@ -4,10 +4,19 @@
|
|
|
4
4
|
// uncommitted, nothing unpushed). Anything else is reported, never forced.
|
|
5
5
|
//
|
|
6
6
|
// `rudder cloud sync` runs this here and asks the home machine to run the same
|
|
7
|
-
// code (`rudder __sync-checkout
|
|
7
|
+
// code (`rudder __sync-checkout`) in its clone of the repo.
|
|
8
|
+
//
|
|
9
|
+
// Work GitHub does not have yet (the jj working copy and unpushed changes below
|
|
10
|
+
// it) travels between the two machines directly, as a git bundle through the
|
|
11
|
+
// control plane, never through GitHub: jj tracks every file that is not
|
|
12
|
+
// gitignored, so a pushed work-in-progress branch could carry a stray secret.
|
|
13
|
+
// The receiving side moves onto the incoming work only when that loses
|
|
14
|
+
// nothing (it has no work of its own, or its work is already in the incoming
|
|
15
|
+
// history); otherwise both stay, the incoming one at bookmark rudder-sync/<from>.
|
|
8
16
|
import fs from "node:fs";
|
|
9
17
|
import path from "node:path";
|
|
10
18
|
import { runCommand } from "./util.js";
|
|
19
|
+
import { ensureJj } from "./jj.js";
|
|
11
20
|
async function run(cwd, command, args) {
|
|
12
21
|
return await runCommand(command, args, { cwd, allowFailure: true });
|
|
13
22
|
}
|
|
@@ -107,6 +116,132 @@ async function syncJj(root, report) {
|
|
|
107
116
|
}
|
|
108
117
|
export function describeSync(where, report) {
|
|
109
118
|
const fetch = report.fetched ? "" : ` (fetch failed: ${report.fetchError ?? "unknown error"})`;
|
|
110
|
-
|
|
119
|
+
const lines = [`${where}: ${report.note}${fetch}`];
|
|
120
|
+
if (report.work?.received) {
|
|
121
|
+
lines.push(` received: ${report.work.received.note}`);
|
|
122
|
+
}
|
|
123
|
+
if (report.work?.sent) {
|
|
124
|
+
lines.push(` sent: ${report.work.sent.commits} change(s) not on GitHub yet`);
|
|
125
|
+
}
|
|
126
|
+
return lines.join("\n");
|
|
127
|
+
}
|
|
128
|
+
const OUT_REF = "refs/rudder-sync/out";
|
|
129
|
+
const SIDE_RE = /^[a-z][a-z0-9-]{0,30}$/;
|
|
130
|
+
async function trunkCommit(root) {
|
|
131
|
+
const branch = await defaultBranch(root);
|
|
132
|
+
const sha = await run(root, "git", ["rev-parse", "--verify", "--quiet", `refs/remotes/origin/${branch}`]);
|
|
133
|
+
return { branch, sha: sha.code === 0 ? sha.stdout.trim() : null };
|
|
134
|
+
}
|
|
135
|
+
async function jjOne(root, revset) {
|
|
136
|
+
const out = await run(root, "jj", ["--ignore-working-copy", "log", "-r", revset, "--no-graph", "-T", 'commit_id ++ "\\n"']);
|
|
137
|
+
return out.code === 0 ? out.stdout.trim().split("\n")[0]?.trim() ?? "" : "";
|
|
138
|
+
}
|
|
139
|
+
// Does this side hold work GitHub lacks? Returns its head: the working copy when
|
|
140
|
+
// it has edits, else the newest unpushed change below it.
|
|
141
|
+
async function workHead(root, trunk) {
|
|
142
|
+
await run(root, "jj", ["status"]);
|
|
143
|
+
const empty = (await run(root, "jj", ["--ignore-working-copy", "log", "-r", "@", "--no-graph", "-T", 'if(empty, "1", "0")'])).stdout.trim() === "1";
|
|
144
|
+
if (!empty) {
|
|
145
|
+
return { head: await jjOne(root, "@"), empty };
|
|
146
|
+
}
|
|
147
|
+
const unpushed = await jjOne(root, `(::@- ~ ::${trunk}) ~ empty()`);
|
|
148
|
+
return unpushed ? { head: await jjOne(root, "@-"), empty } : null;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Bundle this side's unpushed work into `outFile`. A working copy with edits
|
|
152
|
+
* is checkpointed first (`jj new`), so later edits here land in a CHILD of the
|
|
153
|
+
* sent change and the other side can still fast-forward to them next time.
|
|
154
|
+
*/
|
|
155
|
+
export async function exportWork(root, outFile) {
|
|
156
|
+
if (!fs.existsSync(path.join(root, ".jj"))) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
const { branch, sha } = await trunkCommit(root);
|
|
160
|
+
const work = await workHead(root, `${branch}@origin`);
|
|
161
|
+
if (!work?.head) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
if (!work.empty) {
|
|
165
|
+
await run(root, "jj", ["new"]);
|
|
166
|
+
}
|
|
167
|
+
await run(root, "git", ["update-ref", OUT_REF, work.head]);
|
|
168
|
+
try {
|
|
169
|
+
const args = ["bundle", "create", outFile, OUT_REF, ...(sha ? ["--not", sha] : [])];
|
|
170
|
+
const bundled = await run(root, "git", args);
|
|
171
|
+
if (bundled.code !== 0) {
|
|
172
|
+
throw new Error(`git bundle failed: ${(bundled.stderr || bundled.stdout).trim().split("\n").pop()}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
finally {
|
|
176
|
+
await run(root, "git", ["update-ref", "-d", OUT_REF]);
|
|
177
|
+
}
|
|
178
|
+
const counted = await run(root, "git", ["rev-list", "--count", work.head, ...(sha ? ["--not", sha] : [])]);
|
|
179
|
+
return { head: work.head, commits: Number(counted.stdout.trim()) || 0 };
|
|
180
|
+
}
|
|
181
|
+
// Every file the working copy changed reads the same in `head`.
|
|
182
|
+
async function editsContainedIn(root, head) {
|
|
183
|
+
const listed = await run(root, "jj", ["--ignore-working-copy", "diff", "-r", "@", "--name-only"]);
|
|
184
|
+
const files = listed.stdout.split("\n").map((line) => line.trim()).filter(Boolean);
|
|
185
|
+
if (listed.code !== 0 || files.length > 200) {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
for (const file of files) {
|
|
189
|
+
const fileset = `root-file:${JSON.stringify(file)}`;
|
|
190
|
+
const here = await run(root, "jj", ["--ignore-working-copy", "file", "show", "-r", "@", fileset]);
|
|
191
|
+
const there = await run(root, "jj", ["--ignore-working-copy", "file", "show", "-r", head, fileset]);
|
|
192
|
+
if ((here.code === 0) !== (there.code === 0) || here.stdout !== there.stdout) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
/** Take the other side's work from a bundle made by exportWork. */
|
|
199
|
+
export async function importWork(root, bundle, head, from) {
|
|
200
|
+
const report = (outcome, note) => ({ from, head, outcome, note });
|
|
201
|
+
if (!SIDE_RE.test(from) || !/^[0-9a-f]{40}$/.test(head)) {
|
|
202
|
+
return report("failed", "bad sync request");
|
|
203
|
+
}
|
|
204
|
+
if (!fs.existsSync(path.join(root, ".jj"))) {
|
|
205
|
+
// Plain colocate: Rudder's ignore entries would be an edit of this side's own.
|
|
206
|
+
ensureJj();
|
|
207
|
+
await run(root, "jj", ["git", "init", "--colocate"]);
|
|
208
|
+
}
|
|
209
|
+
const bookmark = `rudder-sync/${from}`;
|
|
210
|
+
const fetched = await run(root, "git", ["fetch", "-q", bundle, `+${OUT_REF}:refs/heads/${bookmark}`]);
|
|
211
|
+
if (fetched.code !== 0) {
|
|
212
|
+
return report("failed", `could not read the work from ${from}: ${(fetched.stderr || fetched.stdout).trim().split("\n").pop()}`);
|
|
213
|
+
}
|
|
214
|
+
await run(root, "jj", ["git", "import"]);
|
|
215
|
+
const { branch } = await trunkCommit(root);
|
|
216
|
+
const trunk = `${branch}@origin`;
|
|
217
|
+
const drop = async () => {
|
|
218
|
+
await run(root, "jj", ["bookmark", "delete", bookmark]);
|
|
219
|
+
};
|
|
220
|
+
if (await jjOne(root, `${head} & ::${trunk}`)) {
|
|
221
|
+
await drop();
|
|
222
|
+
return report("have", "already on GitHub");
|
|
223
|
+
}
|
|
224
|
+
const mine = await workHead(root, trunk);
|
|
225
|
+
if (await jjOne(root, `${head} & ::@`)) {
|
|
226
|
+
await drop();
|
|
227
|
+
return report("have", "already here");
|
|
228
|
+
}
|
|
229
|
+
// The working copy's own edits count as work only when the incoming history
|
|
230
|
+
// lacks them (Rudder writing its .gitignore entries into a fresh clone does not).
|
|
231
|
+
const at = await jjOne(root, "@");
|
|
232
|
+
const parentHeld = !(await jjOne(root, `(::@- ~ ::${trunk}) ~ empty()`)) || !!(await jjOne(root, `@- & ::${head}`));
|
|
233
|
+
const subsumed = !!mine && !mine.empty && parentHeld && (await editsContainedIn(root, head));
|
|
234
|
+
if (!mine || subsumed || (await jjOne(root, `${mine.head} & ::${head}`))) {
|
|
235
|
+
const moved = await run(root, "jj", ["new", head]);
|
|
236
|
+
if (moved.code !== 0) {
|
|
237
|
+
return report("failed", `could not move onto it: ${(moved.stderr || moved.stdout).trim().split("\n").pop()}`);
|
|
238
|
+
}
|
|
239
|
+
if (subsumed) {
|
|
240
|
+
await run(root, "jj", ["abandon", at]);
|
|
241
|
+
}
|
|
242
|
+
await drop();
|
|
243
|
+
return report("moved", `picked up the work from ${from}`);
|
|
244
|
+
}
|
|
245
|
+
return report("diverged", `both sides have their own edits; kept both. ${from === "cloud" ? "The cloud's" : `The ${from}'s`} version is bookmark ${bookmark} (\`jj new ${bookmark}\` to switch to it, \`jj diff --from @ --to ${bookmark}\` to compare)`);
|
|
111
246
|
}
|
|
112
247
|
//# sourceMappingURL=checkout-sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-sync.js","sourceRoot":"","sources":["../src/checkout-sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkout-sync.js","sourceRoot":"","sources":["../src/checkout-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/cloud.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ type CloudClient = {
|
|
|
19
19
|
method: string;
|
|
20
20
|
body?: JsonValue;
|
|
21
21
|
}): Promise<T>;
|
|
22
|
+
download(pathname: string): Promise<Buffer>;
|
|
22
23
|
};
|
|
23
24
|
export declare function runCloudCommand(command: string, args: string[], options?: CloudCommandOptions): Promise<void>;
|
|
24
25
|
/**
|
package/dist/cloud.js
CHANGED
|
@@ -9,7 +9,7 @@ import { currentBranch, currentCommit, findRepoRoot } from "./git.js";
|
|
|
9
9
|
import { applyDefaultDecisions, buildFreshHandoffPrompt, cloudWorkspaceAbsolutePath, findMigrationCandidates, formatCandidateReason, migrationSummary, summaryAsJson, } from "./migration.js";
|
|
10
10
|
import { buildMoveBundle, findMoveCandidates, markRunsMovedHome } from "./move-home.js";
|
|
11
11
|
import { cloudAuthPath } from "./state.js";
|
|
12
|
-
import { describeSync, syncCheckout } from "./checkout-sync.js";
|
|
12
|
+
import { describeSync, exportWork, importWork, syncCheckout } from "./checkout-sync.js";
|
|
13
13
|
import { ensureDir, commandExists, expandHome, isTty, newRunId, nowIso, pathExists, promptConfirm, promptText, promptSelect, promptSecret, readJson, runCommand, shortenHome, shellQuote, writeJson, } from "./util.js";
|
|
14
14
|
const DEFAULT_LOGIN_INTERVAL_MS = 2000;
|
|
15
15
|
const DEFAULT_LOGIN_TIMEOUT_MS = 5 * 60 * 1000;
|
|
@@ -1137,6 +1137,14 @@ async function cloudClient(options) {
|
|
|
1137
1137
|
}
|
|
1138
1138
|
return parsed;
|
|
1139
1139
|
},
|
|
1140
|
+
async download(pathname) {
|
|
1141
|
+
const response = await fetch(new URL(pathname, `${baseUrl}/`).toString(), { headers: token ? { Authorization: `Bearer ${token}` } : {} });
|
|
1142
|
+
if (!response.ok) {
|
|
1143
|
+
const text = await response.text();
|
|
1144
|
+
throw new Error(`Rudder Cloud request failed: ${responseErrorMessage(text ? parseJson(text) : null) || `${response.status} ${response.statusText}`}`);
|
|
1145
|
+
}
|
|
1146
|
+
return Buffer.from(await response.arrayBuffer());
|
|
1147
|
+
},
|
|
1140
1148
|
};
|
|
1141
1149
|
}
|
|
1142
1150
|
function normalizeCloudUrl(raw) {
|
|
@@ -4148,13 +4156,25 @@ async function reportCredentialParity(client, { problemsOnly }) {
|
|
|
4148
4156
|
async function cloudSync(args, options) {
|
|
4149
4157
|
const client = await cloudClient({ requireToken: true });
|
|
4150
4158
|
const all = args.includes("--all");
|
|
4151
|
-
const
|
|
4159
|
+
const named = args.find((arg) => !arg.startsWith("-"));
|
|
4160
|
+
const root = named ? await localCheckoutFor(client, named, options) : findRepoRoot();
|
|
4152
4161
|
const slug = await githubSlugFromOrigin(root);
|
|
4153
4162
|
const lines = [];
|
|
4154
4163
|
let local = null;
|
|
4164
|
+
let work;
|
|
4165
|
+
const scratch = await fsp.mkdtemp(path.join(os.tmpdir(), "rudder-sync-"));
|
|
4155
4166
|
if (slug) {
|
|
4156
4167
|
local = await syncCheckout(root);
|
|
4157
|
-
lines.push(
|
|
4168
|
+
lines.push("");
|
|
4169
|
+
// This laptop's work GitHub lacks goes to the cloud machine directly.
|
|
4170
|
+
const sent = await exportWork(root, path.join(scratch, "out.bundle")).catch((error) => {
|
|
4171
|
+
lines.push(`work: could not bundle this laptop's work (${error instanceof Error ? error.message : String(error)})`);
|
|
4172
|
+
return null;
|
|
4173
|
+
});
|
|
4174
|
+
if (sent) {
|
|
4175
|
+
local.work = { sent };
|
|
4176
|
+
work = { bundle: (await fsp.readFile(path.join(scratch, "out.bundle"))).toString("base64"), head: sent.head };
|
|
4177
|
+
}
|
|
4158
4178
|
}
|
|
4159
4179
|
else if (!all) {
|
|
4160
4180
|
throw new Error("This repo has no GitHub origin, so there is nothing on the home machine to sync it with. `rudder cloud sync --all` syncs every repo there.");
|
|
@@ -4167,9 +4187,29 @@ async function cloudSync(args, options) {
|
|
|
4167
4187
|
}
|
|
4168
4188
|
const cloud = await client.request("/api/rudder/home/sync", {
|
|
4169
4189
|
method: "POST",
|
|
4170
|
-
body: all || !slug ? {} : { repos: [slug] },
|
|
4171
|
-
});
|
|
4190
|
+
body: all || !slug ? {} : { repos: [slug], ...(work ? { work } : {}) },
|
|
4191
|
+
}).finally(() => fsp.rm(scratch, { recursive: true, force: true }).catch(() => undefined));
|
|
4172
4192
|
const results = cloud.results ?? [];
|
|
4193
|
+
// And the cloud's work comes back here.
|
|
4194
|
+
const mine = slug ? results.find((result) => result.repo.toLowerCase() === slug.toLowerCase()) : undefined;
|
|
4195
|
+
const incoming = mine?.report?.work?.sent;
|
|
4196
|
+
if (local && incoming?.download) {
|
|
4197
|
+
const dir = await fsp.mkdtemp(path.join(os.tmpdir(), "rudder-sync-in-"));
|
|
4198
|
+
try {
|
|
4199
|
+
const file = path.join(dir, "in.bundle");
|
|
4200
|
+
await fsp.writeFile(file, await client.download(incoming.download));
|
|
4201
|
+
local.work = { ...local.work, received: await importWork(root, file, incoming.head, "cloud") };
|
|
4202
|
+
}
|
|
4203
|
+
catch (error) {
|
|
4204
|
+
local.work = { ...local.work, received: { from: "cloud", head: incoming.head, outcome: "failed", note: `could not take the cloud's work (${error instanceof Error ? error.message : String(error)})` } };
|
|
4205
|
+
}
|
|
4206
|
+
finally {
|
|
4207
|
+
await fsp.rm(dir, { recursive: true, force: true }).catch(() => undefined);
|
|
4208
|
+
}
|
|
4209
|
+
}
|
|
4210
|
+
if (local) {
|
|
4211
|
+
lines[0] = describeSync(`this laptop (${slug})`, local);
|
|
4212
|
+
}
|
|
4173
4213
|
if (options.json) {
|
|
4174
4214
|
printJson({ local, cloud: results });
|
|
4175
4215
|
return;
|
|
@@ -4196,11 +4236,39 @@ async function cloudSync(args, options) {
|
|
|
4196
4236
|
lines.push(`${running.length} agent(s) still running on this laptop: ${running.slice(0, 4).map((run) => `"${(run.taskSummary || run.task).slice(0, 50)}"`).join(", ")}${running.length > 4 ? ", ..." : ""}. They stop when the laptop sleeps; \`/sync move\` (or H) moves them to the cloud machine.`);
|
|
4197
4237
|
}
|
|
4198
4238
|
}
|
|
4199
|
-
|
|
4200
|
-
|
|
4201
|
-
|
|
4239
|
+
console.log(lines.filter(Boolean).join("\n"));
|
|
4240
|
+
}
|
|
4241
|
+
// `rudder cloud sync <name>`: the laptop's clone of a repo open on the cloud
|
|
4242
|
+
// machine, cloned from GitHub into ~/code/<name> the first time.
|
|
4243
|
+
async function localCheckoutFor(client, name, options) {
|
|
4244
|
+
const view = await client.request("/api/rudder/home", { method: "GET" });
|
|
4245
|
+
const wanted = name.replace(/\.git$/, "").toLowerCase();
|
|
4246
|
+
const slug = (view.projects ?? []).map((project) => project.repo ?? "").find((repo) => repo.toLowerCase() === wanted || repo.split("/").pop()?.toLowerCase() === wanted);
|
|
4247
|
+
if (!slug) {
|
|
4248
|
+
throw new Error(`${name} is not open on the cloud machine.`);
|
|
4202
4249
|
}
|
|
4203
|
-
|
|
4250
|
+
const dir = path.join(os.homedir(), "code", slug.split("/").pop());
|
|
4251
|
+
if (await pathExists(path.join(dir, ".git"))) {
|
|
4252
|
+
const existing = await githubSlugFromOrigin(dir);
|
|
4253
|
+
if (existing?.toLowerCase() !== slug.toLowerCase()) {
|
|
4254
|
+
throw new Error(`${shortenHome(dir)} already exists and is not a clone of ${slug}.`);
|
|
4255
|
+
}
|
|
4256
|
+
return dir;
|
|
4257
|
+
}
|
|
4258
|
+
if (await pathExists(dir)) {
|
|
4259
|
+
throw new Error(`${shortenHome(dir)} already exists and is not a git checkout.`);
|
|
4260
|
+
}
|
|
4261
|
+
if (!options.json) {
|
|
4262
|
+
process.stderr.write(`Cloning ${slug} into ${shortenHome(dir)}...\n`);
|
|
4263
|
+
}
|
|
4264
|
+
await fsp.mkdir(path.dirname(dir), { recursive: true });
|
|
4265
|
+
const cloned = commandExists("gh")
|
|
4266
|
+
? await runCommand("gh", ["repo", "clone", slug, dir], { allowFailure: true })
|
|
4267
|
+
: await runCommand("git", ["clone", `https://github.com/${slug}.git`, dir], { allowFailure: true });
|
|
4268
|
+
if (cloned.code !== 0) {
|
|
4269
|
+
throw new Error(`could not clone ${slug}: ${(cloned.stderr || cloned.stdout).trim().split("\n").pop()}`);
|
|
4270
|
+
}
|
|
4271
|
+
return dir;
|
|
4204
4272
|
}
|
|
4205
4273
|
function describeCloudAgents(repo, agents) {
|
|
4206
4274
|
const live = agents.filter((agent) => !["merged", "stopped", "deleted"].includes(String(agent.status)));
|