summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/startup.ml45
-rw-r--r--src/startup.mli7
-rw-r--r--src/vyconfd.ml45
3 files changed, 55 insertions, 42 deletions
diff --git a/src/startup.ml b/src/startup.ml
new file mode 100644
index 0000000..d4b5ef2
--- /dev/null
+++ b/src/startup.ml
@@ -0,0 +1,45 @@
+(** Various "housekeeping" functions *)
+
+(** Log msg as fatal and exit immediately *)
+let panic msg =
+ Lwt_log.fatal msg |> Lwt.ignore_result;
+ exit 1
+
+(** Setup the default logger *)
+let setup_logger daemonize log_file template =
+ (**
+ If log file is specified, log to the file whether we are a daemon or not
+ If we are a daemon and log file is not specified, log to syslog
+ If we are not a daemon and log file is not specified, log to stderr
+ *)
+ match log_file with
+ | None ->
+ if daemonize then
+ begin
+ Lwt_log.default := Lwt_log.syslog ~template:template ~facility:`Daemon ();
+ Lwt.return_unit
+ end
+ else
+ begin
+ Lwt_log.default := Lwt_log.channel ~template:template ~close_mode:`Keep ~channel:Lwt_io.stderr ();
+ Lwt.return_unit
+ end
+ | Some file ->
+ let%lwt l = Lwt_log.file ~template:template ~mode:`Append ~file_name:file () in
+ Lwt_log.default := l; Lwt.return_unit
+
+(** Load the config file or panic if it fails *)
+let load_config path =
+ let result = Vyconf_config.load path in
+ match result with
+ | Ok cfg -> cfg
+ | Error err ->
+ panic (Printf.sprintf "Could not load the configuration file %s" err)
+
+(** Check if appliance directories exist and panic if they don't *)
+let check_dirs dirs =
+ let res = Directories.test dirs in
+ match res with
+ | Ok _ -> ()
+ | Error err -> panic err
+
diff --git a/src/startup.mli b/src/startup.mli
new file mode 100644
index 0000000..329024e
--- /dev/null
+++ b/src/startup.mli
@@ -0,0 +1,7 @@
+val panic : string -> 'a
+
+val setup_logger : bool -> string option -> Lwt_log.template -> unit Lwt.t
+
+val load_config : string -> Vyconf_config.t
+
+val check_dirs : Directories.t -> unit
diff --git a/src/vyconfd.ml b/src/vyconfd.ml
index b5adb47..c2270dd 100644
--- a/src/vyconfd.ml
+++ b/src/vyconfd.ml
@@ -24,54 +24,15 @@ let args = [
]
let usage = "Usage: " ^ Sys.argv.(0) ^ " [options]"
-let panic msg =
- Lwt_log.fatal msg |> Lwt.ignore_result;
- exit 1
-
-let load_config path =
- let result = Vyconf_config.load path in
- match result with
- | Ok cfg -> cfg
- | Error err ->
- panic (Printf.sprintf "Could not load the configuration file %s" err)
-
-let check_dirs dirs =
- let res = Directories.test dirs in
- match res with
- | Ok _ -> ()
- | Error err -> panic err
-
-let setup_logger daemonize log_file template =
- (*
- If log file is specified, log to the file whether we are a daemon or not
- If we are a daemon and log file is not specified, log to syslog
- If we are not a daemon and log file is not specified, log to stderr
- *)
- match log_file with
- | None ->
- if daemonize then
- begin
- Lwt_log.default := Lwt_log.syslog ~template:template ~facility:`Daemon ();
- Lwt.return_unit
- end
- else
- begin
- Lwt_log.default := Lwt_log.channel ~template:template ~close_mode:`Keep ~channel:Lwt_io.stderr ();
- Lwt.return_unit
- end
- | Some file ->
- let%lwt l = Lwt_log.file ~template:template ~mode:`Append ~file_name:file () in
- Lwt_log.default := l; Lwt.return_unit
-
let main_loop config () =
- let%lwt () = setup_logger !daemonize !log_file !log_template in
+ let%lwt () = Startup.setup_logger !daemonize !log_file !log_template in
let%lwt () = Lwt_log.notice @@ Printf.sprintf "Starting VyConf for %s" config.app_name in
Lwt.return_unit
let () =
let () = Arg.parse args (fun f -> ()) usage in
- let config = load_config !config_file in
+ let config = Startup.load_config !config_file in
let dirs = Directories.make config in
- check_dirs dirs;
+ Startup.check_dirs dirs;
Lwt_main.run @@ main_loop config ()