Browse Source

do nothing if already installed.

Nicolas Cannasse 19 years ago
parent
commit
f0f72a247e
1 changed files with 13 additions and 5 deletions
  1. 13 5
      std/tools/haxelib/Main.hx

+ 13 - 5
std/tools/haxelib/Main.hx

@@ -215,7 +215,8 @@ class Main {
 		var inf = site.infos(lib);
 		if( inf.curversion == null )
 			throw "This project has not yet released a version";
-		var version = if( args.length > argcur ) args[argcur++] else inf.curversion;
+		var reqversion = if( args.length > argcur ) args[argcur++] else null;
+		var version = if( reqversion != null ) reqversion else inf.curversion;
 		var found = false;
 		for( v in inf.versions )
 			if( v.name == version ) {
@@ -232,8 +233,13 @@ class Main {
 		safeDir(project);
 		project += "/";
 		var target = project+Datas.safe(version);
-		try neko.FileSystem.deleteDirectory(target) catch ( e : Dynamic ) { };
-		safeDir(target);
+		if( !safeDir(target) ) {
+			if( reqversion == null )
+				print(inf.name+" is up-to-date");
+			else
+				print("You already have "+inf.name+" version "+reqversion+" installed");
+			return;
+		}
 		target += "/";
 
 		// download to temporary file
@@ -312,8 +318,10 @@ class Main {
 		if( neko.FileSystem.exists(dir) ) {
 			if( !neko.FileSystem.isDirectory(dir) )
 				throw ("A file is preventing "+dir+" to be created");
-		} else
-			neko.FileSystem.createDirectory(dir);
+			return false;
+		}
+		neko.FileSystem.createDirectory(dir);
+		return true;
 	}
 
 	function getRepository( ?setup : Bool ) {