mirror of
https://github.com/smogon/sprites.git
synced 2026-08-20 00:34:22 -05:00
deploy: add basic hash support so we can Just Ship It
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user