2025-01-15 19:42:35 +01:00

52 lines
1.2 KiB
Haxe

import sys.*;
import sys.io.*;
import haxe.io.*;
using StringTools;
class Prepare {
static function zipDir(dir:String, outPath:String):Void {
var entries = new List<haxe.zip.Entry>();
function add(path:String, target:String) {
if (!FileSystem.exists(path))
throw 'Invalid path: $path';
if (FileSystem.isDirectory(path)) {
for (item in FileSystem.readDirectory(path))
add(path + "/" + item, target == "" ? item : target + "/" + item);
} else {
var bytes = File.getBytes(path);
var entry:haxe.zip.Entry = {
fileName: target,
fileSize: bytes.length,
fileTime: FileSystem.stat(path).mtime,
compressed: false,
dataSize: 0,
data: bytes,
crc32: haxe.crypto.Crc32.make(bytes),
}
haxe.zip.Tools.compress(entry, 9);
entries.add(entry);
}
}
add(dir, "");
var out = File.write(outPath, true);
var writer = new haxe.zip.Writer(out);
writer.write(entries);
out.close();
}
static function main():Void {
/*
(re)package the dummy libraries
*/
var libsPath = "test/libraries";
for (item in FileSystem.readDirectory(libsPath)) {
var path = Path.join([libsPath, item]);
if (FileSystem.isDirectory(path)) {
zipDir(path, 'test/libraries/${item}.zip');
}
}
}
}