deploy: add basic hash support so we can Just Ship It

This commit is contained in:
Christopher Monsanto
2023-04-05 00:40:07 -04:00
parent 0bc74044c6
commit 9d3e9abebf
4 changed files with 34 additions and 4 deletions

View File

@@ -5,7 +5,8 @@ import vm from 'vm';
import * as pathlib from './path.js';
import * as spritedata from '@smogon/sprite-data';
import tar from 'tar-stream';
import crypto from 'crypto';
import b32encode from 'base32-encode';
type Op = {
type : 'Write',
@@ -240,6 +241,18 @@ function makeEnv2(srcDir : string, queue: ActionQueue) {
return fs.readFileSync(nodePath.join(srcDir, src), 'utf8');
},
hash(...srcps : pathlib.PathLike[]) : string {
let hash = crypto.createHash("sha256");
let srcs = srcps.map(srcp => pathlib.format(pathlib.path(srcp))).sort();
for (let src of srcs) {
let data = fs.readFileSync(nodePath.join(srcDir, src));
hash.update(data);
}
let buffer = hash.digest()
// Similar to esbuild?
return b32encode(buffer, 'RFC4648').slice(0, 8);
},
write(dstp : pathlib.PathLike, data : string) {
const dst = pathlib.format(pathlib.path(dstp));
queue.write(data, dst);