diff options
-rw-r--r-- | context_mirror_bot.ml | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/context_mirror_bot.ml b/context_mirror_bot.ml index 9c0fc97..62ef5e0 100644 --- a/context_mirror_bot.ml +++ b/context_mirror_bot.ml @@ -668,12 +668,6 @@ let handle_zipball = function * job dispatch *****************************************************************************) -type job = { - mutable kind : job_kind; -} -and job_kind = Action of action | Nop -and action = string * (unit -> unit) - let usage = Printf.sprintf "Usage: %s [ --check | --status | --update ] " Sys.argv.(0) @@ -798,8 +792,8 @@ let run_push () = let run_files () = Git.install_files () let dispatch_job = function - | Nop -> print_endline usage - | Action (descr, act) -> + | None -> print_endline usage + | Some (descr, act) -> begin log_info (Printf.sprintf "started in %s mode at %s." @@ -813,20 +807,20 @@ let dispatch_job = function *****************************************************************************) let parse_argv () = - let j : job = { kind = Nop; } in + let job = ref None in Arg.parse [ - ("--check", Arg.Unit (fun () -> j.kind <- Action ("status" , run_status ); ()), "check source timestamps"); - ("--status", Arg.Unit (fun () -> j.kind <- Action ("check" , run_check ); ()), "print status of local repo"); - ("--update", Arg.Unit (fun () -> j.kind <- Action ("update" , run_update ); ()), "update from sources"); - ("--sync", Arg.Unit (fun () -> j.kind <- Action ("sync" , run_sync ); ()), "sync local repo"); - ("--prepare", Arg.Unit (fun () -> j.kind <- Action ("prepare" , run_prepare ); ()), "prepare local repository"); - ("--download", Arg.Unit (fun () -> j.kind <- Action ("download", run_download); ()), "download source packages"); - ("--clean", Arg.Unit (fun () -> j.kind <- Action ("cleanup" , run_cleanup ); ()), "remove leftover files"); - ("--push", Arg.Unit (fun () -> j.kind <- Action ("push" , run_push ); ()), "push to mirror"); - ("--files", Arg.Unit (fun () -> j.kind <- Action ("files" , run_files ); ()), "install config and wrapper files"); + ("--check", Arg.Unit (fun () -> job := Some ("status" , run_status ); ()), "check source timestamps"); + ("--status", Arg.Unit (fun () -> job := Some ("check" , run_check ); ()), "print status of local repo"); + ("--update", Arg.Unit (fun () -> job := Some ("update" , run_update ); ()), "update from sources"); + ("--sync", Arg.Unit (fun () -> job := Some ("sync" , run_sync ); ()), "sync local repo"); + ("--prepare", Arg.Unit (fun () -> job := Some ("prepare" , run_prepare ); ()), "prepare local repository"); + ("--download", Arg.Unit (fun () -> job := Some ("download", run_download); ()), "download source packages"); + ("--clean", Arg.Unit (fun () -> job := Some ("cleanup" , run_cleanup ); ()), "remove leftover files"); + ("--push", Arg.Unit (fun () -> job := Some ("push" , run_push ); ()), "push to mirror"); + ("--files", Arg.Unit (fun () -> job := Some ("files" , run_files ); ()), "install config and wrapper files"); ("--verbose", Arg.Unit (fun () -> set_verbosity 1; ()), "enable verbose output"); ] (fun a -> print_endline ("unexpected argument: "^a); exit 0) usage; - j + !job (****************************************************************************** * main @@ -835,7 +829,7 @@ let parse_argv () = let () = let job = parse_argv () in Git.set_path repo_dir; - dispatch_job job.kind; + dispatch_job job; log_info (Printf.sprintf "mirror bot finished in %.2f s." (Unix.gettimeofday () -. t_start)); |