Add a -p/--for-release-of-packages command line argument

`-p pkgs` is the equivalent of `--root . --only-packages pkgs`
This commit is contained in:
Jeremie Dimino 2017-04-04 16:56:14 +01:00 committed by Jérémie Dimino
parent eb68c98f01
commit 72550dc3e0
3 changed files with 39 additions and 8 deletions

View File

@ -110,7 +110,6 @@ let help_secs =
let common =
let make
concurrency
only_packages
debug_rules
debug_actions
debug_dep_path
@ -118,7 +117,7 @@ let common =
dev_mode
verbose
workspace_file
root
(root, only_packages)
=
let root, to_cwd =
match root with
@ -213,9 +212,38 @@ let common =
targets given on the command line. It is only intended
for scripts.|})
in
let for_release = "for-release-of-packages" in
let frop =
Arg.(value
& opt (some string) None
& info ["p"; for_release] ~docs ~docv:"PACKAGES"
~doc:{|Shorthand for $(b,--root . --only-packages PACKAGE).|})
in
let root_and_only_packages =
let merge root only_packages release =
match release, root, only_packages with
| Some _, Some _, _ ->
`Error (true,
sprintf
"Cannot use %s and --root simultaneously"
for_release)
| Some _, _, Some _ ->
`Error (true,
sprintf
"Cannot use %s and --only-packages simultaneously"
for_release)
| Some pkgs, None, None ->
`Ok (Some ".", Some pkgs)
| None, _, _ ->
`Ok (root, only_packages)
in
Term.(ret (const merge
$ root
$ only_packages
$ frop))
in
Term.(const make
$ concurrency
$ only_packages
$ drules
$ dactions
$ ddep_path
@ -223,7 +251,7 @@ let common =
$ dev
$ verbose
$ workspace_file
$ root
$ root_and_only_packages
)
let installed_libraries =

View File

@ -1178,9 +1178,12 @@ You should set the =build:= field of your =<package>.opam= file as
follows:
#+begin_src
build: [["jbuilder" "build" "--only-packages" "<package>" "--root" "." "-j" jobs "@install"]]
build: [["jbuilder" "build" "-p" "<package>" "-j" jobs]]
#+end_src
=-p pkg= is a shorthand for =--root . --only-packages pkg=. =-p= is
the short version of =--for-release-of-packages=.
This has the following effects:
- it tells jbuilder to build everything that is installable and to
ignore packages other than =<package>= defined in your project

View File

@ -24,7 +24,7 @@ let setup ?(log=Log.no_log) ?filter_out_optional_stanzas_with_missing_deps
String_set.iter set ~f:(fun pkg ->
if not (String_map.mem pkg conf.packages) then
die "@{<error>Error@}: I don't know about package %s \
(passed through --only-packages)%s"
(passed through --only-packages/--release)%s"
pkg (hint pkg (String_map.keys conf.packages))));
let workspace =
match workspace with