Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slim register function arguments #1434

Merged
merged 1 commit into from
Jun 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 7 additions & 9 deletions lib/functoria/lib.ml
Original file line number Diff line number Diff line change
Expand Up @@ -58,22 +58,20 @@ module Config = struct
in
Key.Set.fold f all_keys skeys

let v ?(config_file = Fpath.v "config.ml") ?(keys = []) ?(packages = [])
?(init = []) ~configure_cmd ~pre_build_cmd ~lock_location ~build_cmd ~src
name jobs =
let packages = Key.pure @@ packages in
let v ?(config_file = Fpath.v "config.ml") ?(init = []) ~configure_cmd
~pre_build_cmd ~lock_location ~build_cmd ~src name jobs =
let jobs = Impl.abstract jobs in
let keys = Key.Set.(union (of_list keys) (get_if_context jobs)) in
let keys = get_if_context jobs in
{
config_file;
packages;
keys;
name;
init;
configure_cmd;
pre_build_cmd;
lock_location;
build_cmd;
packages = Key.pure [];
jobs;
src;
}
Expand Down Expand Up @@ -503,7 +501,7 @@ module Make (P : S) = struct
(Cli.eval ~name:P.name ~version:P.version ~configure ~query ~describe
~build ~clean ~help ~mname:P.name argv)

let register ?packages ?keys ?(init = default_init) ?(src = `Auto) name jobs =
let register ?(init = default_init) ?(src = `Auto) name jobs =
(* 1. Pre-parse the arguments set the log level, config file
and root directory. *)
let argv = Sys.argv in
Expand All @@ -520,8 +518,8 @@ module Make (P : S) = struct
in
let main_dev = P.create (init @ jobs) in
let c =
Config.v ~config_file ?keys ?packages ~init ~configure_cmd
~pre_build_cmd ~lock_location ~build_cmd ~src name main_dev
Config.v ~config_file ~init ~configure_cmd ~pre_build_cmd ~lock_location
~build_cmd ~src name main_dev
in
run_configure_with_argv argv args c
in
Expand Down
2 changes: 0 additions & 2 deletions lib/functoria/lib.mli
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,6 @@ module Make (P : S) : sig
(** Configuration builder: stage 1 *)

val register :
?packages:package list ->
?keys:abstract_key list ->
?init:job impl list ->
?src:[ `Auto | `None | `Some of string ] ->
string ->
Expand Down
6 changes: 3 additions & 3 deletions lib/mirage/mirage.ml
Original file line number Diff line number Diff line change
Expand Up @@ -478,8 +478,8 @@ let ( ++ ) acc x =
| None, Some x -> Some [ x ]
| Some acc, Some x -> Some (acc @ [ x ])

let register ?(argv = default_argv) ?(reporter = default_reporter ())
?keys:extra_keys ?packages ?src name jobs =
let register ?(argv = default_argv) ?(reporter = default_reporter ()) ?src name
jobs =
if List.exists Functoria.Impl.app_has_no_arguments jobs then
invalid_arg
"Your configuration includes a job without arguments. Please add a \
Expand All @@ -489,6 +489,6 @@ let register ?(argv = default_argv) ?(reporter = default_reporter ())
let first = [ keys argv; backtrace; randomize_hashtables; gc_control ] in
let reporter = if reporter == no_reporter then None else Some reporter in
let init = Some first ++ reporter in
register ?keys:extra_keys ?packages ?init ?src name jobs
register ?init ?src name jobs

module Action = Functoria.Action
4 changes: 0 additions & 4 deletions lib/mirage/mirage.mli
Original file line number Diff line number Diff line change
Expand Up @@ -1069,17 +1069,13 @@ val app_info_with_opam_deps : (string * string) list -> info impl
val register :
?argv:argv impl ->
?reporter:reporter impl ->
?keys:Key.t list ->
?packages:Functoria.package list ->
?src:[ `Auto | `None | `Some of string ] ->
string ->
job impl list ->
unit
(** [register name jobs] registers the application named by [name] which will
executes the given [jobs].

@param packages The opam packages needed by this module.
@param keys The keys related to this module.
@param reporter
Configure logging. The default log reporter is {!default_reporter}. To
disable logging, use {!no_reporter}.
Expand Down
2 changes: 0 additions & 2 deletions test/f0/f0.mli
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
open Functoria.DSL

val register :
?packages:package list ->
?keys:abstract_key list ->
?init:job impl list ->
?src:[ `Auto | `None | `Some of string ] ->
string ->
Expand Down
5 changes: 2 additions & 3 deletions test/functoria/e2e/app/config.ml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
open Functoria
open E2e

let main = main "App.Make" (job @-> job)

let key =
let doc = Key.Arg.info ~doc:"How to say hello." [ "hello" ] in
Key.(create "hello" Arg.(opt string "Hello World!" doc))

let () = register ~keys:[ Key.v key ] "noop" [ main $ noop ]
let main = main ~keys:[ Key.v key ] "App.Make" (job @-> job)
let () = register "noop" [ main $ noop ]
2 changes: 0 additions & 2 deletions test/functoria/e2e/lib/e2e.mli
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
open Functoria.DSL

val register :
?packages:package list ->
?keys:abstract_key list ->
?init:job impl list ->
?src:[ `Auto | `None | `Some of string ] ->
string ->
Expand Down
5 changes: 2 additions & 3 deletions test/functoria/help/config.ml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
open F0
open Functoria

let main = Functoria.(main "App" job)

let key =
let doc = Key.Arg.info ~doc:"How to say hello." [ "hello" ] in
Key.(create "hello" Arg.(opt string "Hello World!" doc))

let () = register ~keys:[ Key.v key ] ~src:`None "noop" [ main ]
let main = Functoria.main ~keys:[ Key.v key ] "App" job
let () = register ~src:`None "noop" [ main ]
7 changes: 4 additions & 3 deletions test/functoria/query/config.ml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
open F0
open Functoria

let main = Functoria.(main ~extra_deps:[ dep (app_info ()) ] "App" job)

let key =
let doc = Key.Arg.info ~doc:"How to say hello." [ "hello" ] in
Key.(create "hello" Arg.(opt string "Hello World!" doc))

let () = register ~keys:[ Key.v key ] ~src:`None "noop" [ main ]
let main =
Functoria.main ~keys:[ Key.v key ] ~extra_deps:[ dep (app_info ()) ] "App" job

let () = register ~src:`None "noop" [ main ]
5 changes: 2 additions & 3 deletions test/mirage/help/config.ml
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
open Mirage

let main = main "App" (job @-> job)

let key =
let doc = Key.Arg.info ~doc:"How to say hello." [ "hello" ] in
Key.(create "hello" Arg.(opt string "Hello World!" doc))

let () = register ~keys:[ Key.v key ] "noop" [ main $ noop ]
let main = main ~keys:[ Key.v key ] "App" (job @-> job)
let () = register "noop" [ main $ noop ]
9 changes: 2 additions & 7 deletions test/mirage/job-no-device-behind-if/config.ml
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
open Mirage

let main = main "App" job

let key =
let doc = Key.Arg.info ~doc:"How to say hello." [ "hello" ] in
Key.(create "hello" Arg.(opt string "Hello World!" doc))

let () =
register
~keys:[ Key.v key ]
~src:`None "noop"
[ if_impl Key.is_solo5 main main ]
let main = main ~keys:[ Key.v key ] "App" job
let () = register ~src:`None "noop" [ if_impl Key.is_solo5 main main ]
5 changes: 2 additions & 3 deletions test/mirage/job-no-device/config.ml
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
open Mirage

let main = main "App" job

let key =
let doc = Key.Arg.info ~doc:"How to say hello." [ "hello" ] in
Key.(create "hello" Arg.(opt string "Hello World!" doc))

let () = register ~keys:[ Key.v key ] ~src:`None "noop" [ main ]
let main = main ~keys:[ Key.v key ] "App" job
let () = register ~src:`None "noop" [ main ]
5 changes: 2 additions & 3 deletions test/mirage/query/config.ml
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
open Mirage

let main = main "App" (job @-> job)

let key =
let doc = Key.Arg.info ~doc:"How to say hello." [ "hello" ] in
Key.(create "hello" Arg.(opt string "Hello World!" doc))

let () = register ~keys:[ Key.v key ] ~src:`None "noop" [ main $ noop ]
let main = main ~keys:[ Key.v key ] "App" (job @-> job)
let () = register ~src:`None "noop" [ main $ noop ]
6 changes: 2 additions & 4 deletions test/mirage/query/config_dash_in_name.ml
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
open Mirage

let main = main "App" (job @-> job)

let key =
let doc = Key.Arg.info ~doc:"How to say hello." [ "hello" ] in
Key.(create "hello" Arg.(opt string "Hello World!" doc))

let () =
register ~keys:[ Key.v key ] ~src:`None "noop-functor.v0" [ main $ noop ]
let main = main ~keys:[ Key.v key ] "App" (job @-> job)
let () = register ~src:`None "noop-functor.v0" [ main $ noop ]