@@ -1717,7 +1717,7 @@ type anon_fun = rev_args:string list -> unit
17171717val parse_exn :
17181718 usage:string ->
17191719 argv:string array ->
1720- start:int ->
1720+ ? start:int ->
17211721 ?finish:int ->
17221722 (key * spec * doc) list ->
17231723 anon_fun -> unit
@@ -1825,7 +1825,7 @@ end = struct
18251825 raise (Bad (Ext_buffer.contents b))
18261826
18271827
1828- let parse_exn ~usage ~argv ~ start ?(finish=Array.length argv) (speclist : t) anonfun =
1828+ let parse_exn ~usage ~argv ?( start=1) ?(finish=Array.length argv) (speclist : t) anonfun =
18291829 let current = ref start in
18301830 let rev_list = ref [] in
18311831 while !current < finish do
@@ -16979,14 +16979,14 @@ let () =
1697916979
1698016980 | argv ->
1698116981 begin
16982- match Ext_array.find_and_split argv Ext_string.equal separator with
16983- | `No_split
16984- ->
16982+ let i = Ext_array.rfind_with_index
16983+ argv Ext_string.equal separator in
16984+ if i < 0 then
1698516985 begin
1698616986 Bsb_arg.parse_exn
1698716987 ~usage
1698816988 ~argv
16989- ~start:1
16989+
1699016990 bsb_main_flags
1699116991 handle_anonymous_arg
1699216992 ;
@@ -17027,14 +17027,18 @@ let () =
1702717027 install_target config_opt
1702817028 end)
1702917029 end
17030- | `Split (bsb_args,ninja_args)
17031- -> (* -make-world all dependencies fall into this category *)
17030+ else
17031+ (* -make-world all dependencies fall into this category *)
1703217032 begin
1703317033 Bsb_arg.parse_exn
1703417034 ~usage
17035- ~argv:bsb_args
17036- ~start:1
17035+ ~argv:argv
17036+ ~finish:i
1703717037 bsb_main_flags handle_anonymous_arg ;
17038+ let ninja_args = Array.sub argv (i + 1) (Array.length argv - i - 1) in
17039+ match ninja_args with
17040+ | [|"-h"|] -> ninja_command_exit ninja_args
17041+ | _ ->
1703817042 let config_opt =
1703917043 (Bsb_ninja_regen.regenerate_ninja
1704017044 ~toplevel_package_specs:None
0 commit comments