Parcourir la source

added --run, allows to run haxe scripts directly (eg : haxe --run tools.haxelib.Main <args>)

Nicolas Cannasse il y a 12 ans
Parent
commit
48e5fd8c3a
3 fichiers modifiés avec 9 ajouts et 1 suppressions
  1. 2 0
      common.ml
  2. 1 1
      interp.ml
  3. 6 0
      main.ml

+ 2 - 0
common.ml

@@ -88,6 +88,7 @@ type context = {
 	(* config *)
 	version : int;
 	args : string list;
+	mutable sys_args : string list;
 	mutable display : bool;
 	mutable debug : bool;
 	mutable verbose : bool;
@@ -410,6 +411,7 @@ let create v args =
 	{
 		version = v;
 		args = args;
+		sys_args = args;
 		debug = false;
 		display = !display_default;
 		verbose = false;

+ 1 - 1
interp.ml

@@ -3267,7 +3267,7 @@ let load_prim ctx f n =
 
 let create com api =
 	let loader = obj hash [
-		"args",VArray (Array.of_list (List.map (fun s -> VString s) com.args));
+		"args",VArray (Array.of_list (List.map (fun s -> VString s) com.sys_args));
 		"loadprim",VFunction (Fun2 (fun a b -> (get_ctx()).do_loadprim a b));
 		"loadmodule",VFunction (Fun2 (fun a b -> assert false));
 	] in

+ 6 - 0
main.ml

@@ -470,6 +470,12 @@ let rec process_params create pl =
 			| Some _ ->
 				(* already connected : skip *)
 				loop acc l)
+		| "--run" :: cl :: args ->
+			let acc = (cl ^ ".main()") :: "--macro" :: acc in
+			let ctx = create (!each_params @ (List.rev acc)) in
+			ctx.com.sys_args <- args;
+			init ctx;
+			ctx.flush()
 		| arg :: l ->
 			match List.rev (ExtString.String.nsplit arg ".") with
 			| "hxml" :: _ when (match acc with "-cmd" :: _ -> false | _ -> true) -> loop acc (parse_hxml arg @ l)