From e7cb62181303eb61737fe06b5784cab41a58a53f Mon Sep 17 00:00:00 2001 From: Aleksandr Kuzmenko Date: Fri, 8 Nov 2019 14:53:23 +0300 Subject: [PATCH] Relief haxelib.json check for `haxelib path` (#485) --- appveyor.yml | 1 + ci.hxml | 4 +++- run.n | Bin 227787 -> 228210 bytes src/Package.hx | 9 +++++++++ src/haxelib/Data.hx | 24 ++++++++++++++++++++---- src/haxelib/client/Main.hx | 2 +- test/Prepare.hx | 16 +++++++++++++--- test/RunCi.hx | 1 + 8 files changed, 48 insertions(+), 9 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 46753b9be..7ec6d880b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -4,6 +4,7 @@ services: - mysql install: + - git submodule update --init --recursive - ps: Set-Service wuauserv -StartupType Manual - cinst haxe -y - cinst nssm -y diff --git a/ci.hxml b/ci.hxml index 42c091d47..56ba9f250 100644 --- a/ci.hxml +++ b/ci.hxml @@ -1,2 +1,4 @@ -cp test --x RunCi +-main RunCi +-neko bin/ci.n +-cmd neko bin/ci.n diff --git a/run.n b/run.n index 3293c6fffc68609cc4a7491cf4e465aba23a99ed..4e353fa89dad6dac5b248788327c4d9b9a80a7f7 100644 GIT binary patch delta 24723 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

Uv;*+O24gc{fXO;N_Y3A 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 rlK3 diff --git a/src/Package.hx b/src/Package.hx index 3fdd2d190..5f2e442b7 100644 --- a/src/Package.hx +++ b/src/Package.hx @@ -15,7 +15,16 @@ class Package { static function main() { checkVersion(); + switch Sys.systemName() { + case 'Windows': + zipWindows(); + case _: + var exitCode = Sys.command('zip', ['-r', outPath, 'src/haxelib', 'haxelib.json', 'run.n', 'README.md']); + Sys.exit(exitCode); + } + } + static function zipWindows() { var entries = new List(); function add(path:String, ?target:String) { diff --git a/src/haxelib/Data.hx b/src/haxelib/Data.hx index ee922f61c..b5d696bb8 100644 --- a/src/haxelib/Data.hx +++ b/src/haxelib/Data.hx @@ -58,6 +58,22 @@ typedef ProjectInfos = { var tags : List; } +@:enum abstract CheckLevel(Int) { + var NoCheck = 0; + var CheckSyntax = 1; + var CheckData = 2; + + @:from static inline function fromBool(check:Bool):CheckLevel { + return check ? CheckData : NoCheck; + } + + @:op(A > B) function gt(b:CheckLevel):Bool; + @:op(A >= B) function gte(b:CheckLevel):Bool; + @:op(A == B) function eq(b:CheckLevel):Bool; + @:op(A <= B) function lte(b:CheckLevel):Bool; + @:op(A < B) function lt(b:CheckLevel):Bool; +} + abstract DependencyVersion(String) to String from SemVer { inline function new(s:String) this = s; @@ -298,7 +314,7 @@ class Data { } - public static function readInfos( zip : List, check : Bool ) : Infos + public static function readInfos( zip : List, check : CheckLevel ) : Infos return readData(Reader.unzip(getJson(zip)).toString(), check); public static function checkClassPath( zip : List, infos : Infos ) { @@ -314,11 +330,11 @@ class Data { } } - public static function readData( jsondata: String, check : Bool ) : Infos { + public static function readData( jsondata: String, check : CheckLevel ) : Infos { var doc:Infos = try Json.parse(jsondata) catch ( e : Dynamic ) - if (check) + if (check >= CheckLevel.CheckSyntax) throw 'JSON parse error: $e'; else { name : ProjectName.DEFAULT, @@ -330,7 +346,7 @@ class Data { contributors: [], } - if (check) + if (check >= CheckLevel.CheckData) Validator.validate(doc); else { if (!doc.version.valid) diff --git a/src/haxelib/client/Main.hx b/src/haxelib/client/Main.hx index 997e33c25..09de2eb4b 100644 --- a/src/haxelib/client/Main.hx +++ b/src/haxelib/client/Main.hx @@ -1465,7 +1465,7 @@ class Main { throw "Library "+prj+" has two versions included : "+version+" and "+p.version; } var json = try File.getContent(vdir+"/"+Data.JSON) catch( e : Dynamic ) null; - var inf = Data.readData(json, json != null); + var inf = Data.readData(json, json != null ? CheckSyntax : NoCheck); l.add({ project : prj, version : version, dir : Path.addTrailingSlash(vdir), info: inf }); if( returnDependencies ) { for( d in inf.dependencies ) diff --git a/test/Prepare.hx b/test/Prepare.hx index cc12b5bae..f54278821 100644 --- a/test/Prepare.hx +++ b/test/Prepare.hx @@ -1,7 +1,6 @@ import sys.*; import sys.io.*; import haxe.io.*; -using StringTools; class Prepare { static function zipDir(dir:String, outPath:String):Void { @@ -38,6 +37,8 @@ class Prepare { } static function main():Void { + var system = Sys.systemName(); + var cwd = Sys.getCwd(); /* (re)package the dummy libraries */ @@ -45,8 +46,17 @@ class Prepare { for (item in FileSystem.readDirectory(libsPath)) { var path = Path.join([libsPath, item]); if (FileSystem.isDirectory(path)) { - trace('Preparing $item'); - zipDir(path, 'test/libraries/${item}.zip'); + switch system { + case 'Windows': + zipDir(path, 'test/libraries/${item}.zip'); + case _: + Sys.setCwd(path); + var exitCode = Sys.command('zip', ['-r', '../${item}.zip', '.']); + Sys.setCwd(cwd); + if(exitCode != 0) { + Sys.stderr().writeString('Failed to zip $item\n'); + } + } } } } diff --git a/test/RunCi.hx b/test/RunCi.hx index 078381638..5245aba70 100644 --- a/test/RunCi.hx +++ b/test/RunCi.hx @@ -198,6 +198,7 @@ Listen 2000 return; } catch (e:Dynamic) { trace(e); + trace(CallStack.toString(CallStack.exceptionStack())); Sys.sleep(5.0); } throw "cannot config database";