diff --git a/tools/deploy/script.test.ts b/tools/deploy/script.test.ts index bc605f3d..ba16dd85 100644 --- a/tools/deploy/script.test.ts +++ b/tools/deploy/script.test.ts @@ -27,3 +27,15 @@ test('run identity', () => { ])); }); +test('run delta', () => { + const aq = new script.ActionQueue(); + const scr = new script.Script(` list(".").forEach(p => copy(p, {dir: "dest"}))`, 'expr'); + script.run(scr, "testsrc", aq); + expect(aq.describe(".")).toEqual(expect.arrayContaining([ + {src: 'testsrc/32.png', dst: "dest/32.png"}, + {src: 'testsrc/192-g-vsmogon.png', dst: "dest/192-g-vsmogon.png"}, + ])); +}); + + + diff --git a/tools/deploy/script.ts b/tools/deploy/script.ts index 00276422..b97437ee 100644 --- a/tools/deploy/script.ts +++ b/tools/deploy/script.ts @@ -85,10 +85,15 @@ function makeEnv(srcDir : string, queue: ActionQueue) { return result; }, - copy(src : pathlib.PathLike, dst : pathlib.PathLike) { - const srcp = pathlib.path(src); - const dstp = pathlib.path(dst); - queue.copy(pathlib.format(pathlib.join(srcDir, srcp)), pathlib.format(dstp)); + copy(srcp : pathlib.PathLike, dstp : string | pathlib.Delta /* todo deltalike */) { + const src = pathlib.format(pathlib.path(srcp)); + let dst : string; + if (typeof dstp === 'string') { + dst = dstp; + } else { + dst = pathlib.format(pathlib.path(srcp, dstp)); + } + queue.copy(nodePath.join(srcDir, src), dst); } } }