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');
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
} |