Skip to content

Commit a76d3b7

Browse files
committed
fix: better db location logic
1 parent 07b300e commit a76d3b7

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

packages/SwingSet/bin/rekernelize.js

+37-3
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,58 @@ import 'node-lmdb';
66
import '@agoric/babel-standalone';
77
import '@agoric/install-ses';
88

9+
import fs from 'fs';
910
import path from 'path';
1011
import process from 'process';
1112

1213
import bundleSource from '@agoric/bundle-source';
1314
import { openLMDBSwingStore } from '@agoric/swing-store-lmdb';
1415

16+
function fail(message) {
17+
console.error(message);
18+
process.exit(1);
19+
}
20+
21+
function dirContains(dirpath, suffix) {
22+
try {
23+
const files = fs.readdirSync(dirpath);
24+
for (const file of files) {
25+
if (file.endsWith(suffix)) {
26+
return true;
27+
}
28+
}
29+
return false;
30+
} catch (e) {
31+
return false;
32+
}
33+
}
34+
1535
async function main() {
1636
const argv = process.argv.slice(2);
1737

1838
let dbDir = '.';
1939
if (argv.length > 1) {
20-
console.error('usage: rekernelize [DBDIR]');
21-
process.exit(1);
40+
fail('usage: rekernelize [DBDIR_OR_FILE]');
2241
} else if (argv[0]) {
2342
dbDir = argv[0];
2443
}
2544

26-
const kernelStateDBDir = path.join(dbDir, 'swingset-kernel-state');
45+
let kernelStateDBDir;
46+
const dbSuffix = '.mdb';
47+
if (dbDir.endsWith(dbSuffix)) {
48+
kernelStateDBDir = path.dirname(dbDir);
49+
} else if (dirContains(dbDir, dbSuffix)) {
50+
kernelStateDBDir = dbDir;
51+
} else {
52+
kernelStateDBDir = path.join(dbDir, 'swingset-kernel-state');
53+
if (!dirContains(kernelStateDBDir, dbSuffix)) {
54+
kernelStateDBDir = null;
55+
}
56+
}
57+
if (!kernelStateDBDir) {
58+
fail(`can't find a database at ${dbDir}`);
59+
}
60+
2761
const swingStore = openLMDBSwingStore(kernelStateDBDir);
2862
const kvStore = swingStore.kvStore;
2963
assert(kvStore.get('initialized'), 'kernel store not initialized');

0 commit comments

Comments
 (0)