52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			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');
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| } |