perf(stats): use compressed incremental snapshot transfers (#241)

This commit is contained in:
2026-09-10 23:57:20 -07:00
committed by GitHub
parent 614a8ca912
commit fb2d1a512b
17 changed files with 748 additions and 25 deletions
@@ -94,6 +94,23 @@ test('parseCliPrograms lowers sync options into app-owned CLI tokens', () => {
assert.deepEqual(removeTemp.invocations.syncCliTokens, ['--remove-temp', '/tmp/subminer-sync-x']);
});
test('parseCliPrograms forwards transfer cache keys with both sync temp helpers', () => {
const key = 'a'.repeat(64);
for (const helper of [['--make-temp'], ['--remove-temp', '/tmp/subminer-sync-x']]) {
const tokens = [...helper, '--transfer-cache', key];
const result = parseCliPrograms(['sync', ...tokens], 'subminer');
assert.equal(result.invocations.syncTriggered, true);
assert.deepEqual(result.invocations.syncCliTokens, tokens);
}
});
test('parseCliPrograms rejects sync --ui with --transfer-cache', () => {
assert.throws(
() => parseCliPrograms(['sync', '--ui', '--transfer-cache', 'a'.repeat(64)], 'subminer'),
{ message: 'Sync --ui cannot be combined with other sync options.' },
);
});
test('parseCliPrograms leaves sync validation to the app parser', () => {
// Invalid combinations are forwarded; the app's parseSyncCliTokens rejects them.
const invalid = parseCliPrograms(['sync', 'media-box', '--push', '--pull'], 'subminer');
+4
View File
@@ -360,6 +360,7 @@ export function parseCliPrograms(
.option('--json', 'Emit machine-readable NDJSON progress output')
.option('--make-temp', 'Create a sync temp directory and print its path (used over SSH)')
.option('--remove-temp <dir>', 'Remove a sync temp directory created by --make-temp')
.option('--transfer-cache <key>', 'Reuse/save a received snapshot with temp helpers (internal)')
.option('--ui', 'Open the SubMiner sync window')
.option('--log-level <level>', 'Log level')
.action((rawHost: string | undefined, options: Record<string, unknown>) => {
@@ -381,6 +382,7 @@ export function parseCliPrograms(
check ||
makeTemp ||
removeTemp ||
options.transferCache !== undefined ||
options.remoteCmd !== undefined ||
options.db !== undefined ||
options.json === true ||
@@ -402,6 +404,8 @@ export function parseCliPrograms(
if (merge) tokens.push('--merge', merge);
if (makeTemp) tokens.push('--make-temp');
if (removeTemp) tokens.push('--remove-temp', removeTemp);
if (typeof options.transferCache === 'string')
tokens.push('--transfer-cache', options.transferCache);
if (push) tokens.push('--push');
if (pull) tokens.push('--pull');
if (check) tokens.push('--check');