Skip to content

Commit ce734b3

Browse files
authored
Merge pull request #6709 from kit-ty-kate/auto-answer
Add support for the OPAMAUTOANSWER environment variable (for internal use only)
2 parents e8d390d + 4e8d3cb commit ce734b3

16 files changed

+77
-29
lines changed

master_changes.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ users)
1515
* Bump the version number to `2.5.0~alpha1~dev` [#6584 @kit-ty-kate]
1616

1717
## Global CLI
18+
* Add cli version 2.5 [#6709 @kit-ty-kate]
19+
* Add mechanism for the `OPAMAUTOANSWER` environment variable (for internal use only) [#6709 @kit-ty-kate]
1820

1921
## Plugins
2022

@@ -190,6 +192,7 @@ users)
190192

191193
# API updates
192194
## opam-client
195+
* `OpamClientConfig.opam_init`: now takes an optional `auto_answer` argument [#6709 @kit-ty-kate]
193196

194197
## opam-repository
195198
* `OpamLocal.rsync_*`: Change the return type from `OpamFilename.*` to `unit` [#6658 @kit-ty-kate]
@@ -209,7 +212,10 @@ users)
209212
* `OpamVariable.variable_contents_equal`: was added [#6644 @kit-ty-kate]
210213

211214
## opam-core
215+
* `OpamConsole.confirm`: now takes an optional `name` argument [#6709 @kit-ty-kate]
212216
* `OpamConsole.log`: does not keep log messages before initialization if the code is ran through a library [#6487 @kit-ty-kate]
217+
* `OpamCoreConfig.auto_answer`: field and arguments were added [#6709 @kit-ty-kate]
218+
* `OpamCoreConfig.{answer,anwser_is,answer_is_yes}`: now take a `name` labeled argument [#6709 @kit-ty-kate]
213219
* `OpamCoreConfig.in_opam`: was added [#6487 @kit-ty-kate]
214220
* `OpamSystem.cpu_count`: now uses a C binding instead of system utilities to get the number of cores of the current machine [#6634 @kit-ty-kate]
215221
* `OpamSystem.is_reg_dir`: is now exposed, which returns `true` only if its parameter is a directory, exists and is not a symlink. It returns `false` otherwise [#6450 @kit-ty-kate]
@@ -221,6 +227,7 @@ users)
221227
* `OpamCompat.String.{starts_with,ends_with,for_all,fold_left}`: were added [#6442 @kit-ty-kate]
222228
* `OpamHash.check_string`: was added [#6661 @kit-ty-kate]
223229
* `OpamHash.equal_kind`: was added [#6644 @kit-ty-kate]
230+
* `OpamStd.Config.auto_answer`: was added [#6709 @kit-ty-kate]
224231
* `OpamStd.List.fold_left_map`: was moved to `OpamCompat.List.fold_left_map` [#6442 @kit-ty-kate]
225232
* `OpamStd.List.{cons,find_opt,filter_map}`: were removed. Use `Stdlib.List` instead. [#6442 @kit-ty-kate]
226233
* `OpamStd.List.mem`: was added, having as argument the equality function [#6644 @kit-ty-kate]

src/client/opamArg.ml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ let environment_variables =
8787
let open OpamStd.Config in
8888
let core =
8989
let open OpamCoreConfig.E in [
90+
"AUTOANSWER", cli_from cli2_5, (fun v -> AUTOANSWER (auto_answer v)),
91+
"internal use only.";
9092
"COLOR", cli_original, (fun v -> COLOR (env_when v)),
9193
"when set to $(i,always) or $(i,never), sets a default value for the \
9294
`--color' option.";

src/client/opamArg.mli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ val cli2_1: OpamCLIVersion.t
2626
val cli2_2: OpamCLIVersion.t
2727
val cli2_3: OpamCLIVersion.t
2828
val cli2_4: OpamCLIVersion.t
29+
val cli2_5: OpamCLIVersion.t
2930

3031
(* [cli_from ?platform ?experimental since] validity flag since [since], and no
3132
removal version. If [experimental] is true, it is marked as is (warning and

src/client/opamArgTools.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ let cli2_1 = OpamCLIVersion.of_string "2.1"
1717
let cli2_2 = OpamCLIVersion.of_string "2.2"
1818
let cli2_3 = OpamCLIVersion.of_string "2.3"
1919
let cli2_4 = OpamCLIVersion.of_string "2.4"
20+
let cli2_5 = OpamCLIVersion.of_string "2.5"
2021

2122
type subplatform = [ `windows | `unix ]
2223
type platform = [ `all | subplatform ]

src/client/opamArgTools.mli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ val cli2_1: OpamCLIVersion.t
3030
val cli2_2: OpamCLIVersion.t
3131
val cli2_3: OpamCLIVersion.t
3232
val cli2_4: OpamCLIVersion.t
33+
val cli2_5: OpamCLIVersion.t
3334

3435
val mk_flag:
3536
cli:OpamCLIVersion.Sourced.t -> validity -> section:string -> string list ->

src/client/opamCLIVersion.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
type t = int * int
1212

13-
let supported_versions = [(2, 0); (2, 1); (2,2); (2,3); (2,4)]
13+
let supported_versions = [(2, 0); (2, 1); (2,2); (2,3); (2,4); (2,5)]
1414

1515
let is_supported v =
1616
OpamStd.List.mem (OpamCompat.Pair.equal Int.equal Int.equal)

src/client/opamClientConfig.mli

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ type 'a options_fun =
8181
?assume_depexts:bool ->
8282
?cli:OpamCLIVersion.t ->
8383
?scrubbed_environment_variables:string list ->
84-
?verbose_on:OpamTypes.name_set ->
84+
?verbose_on:OpamTypes.name_set ->
8585
'a
8686
(* constraint 'a = 'b -> 'c *)
8787

@@ -153,6 +153,7 @@ val opam_init:
153153
?retries:int ->
154154
?force_checksums:bool option ->
155155
?repo_tarring:bool ->
156+
?auto_answer:(string * OpamStd.Config.answer) list ->
156157
?debug_level:int ->
157158
?debug_sections:OpamStd.Config.sections ->
158159
?verbose_level:OpamStd.Config.level ->

src/client/opamSolution.ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,7 +1091,7 @@ let dry_run state solution =
10911091
(* Ask confirmation whenever the packages to modify are not exactly
10921092
the packages in the user request *)
10931093
let confirmation ?ask requested solution =
1094-
OpamCoreConfig.answer_is_yes () ||
1094+
OpamCoreConfig.answer_is_yes ~name:None () ||
10951095
ask = Some false ||
10961096
let solution_packages =
10971097
OpamPackage.names_of_packages (OpamSolver.all_packages solution)
@@ -1319,7 +1319,7 @@ let install_sys_packages_t ~propagate_st ~map_sysmap ~confirm env config
13191319
"You can retry with '--assume-depexts' to skip this check, or run 'opam \
13201320
option depext=false' to permanently disable handling of system \
13211321
packages.\n%s"
1322-
(if OpamStd.Sys.tty_in || OpamCoreConfig.answer_is `unsafe_yes then ""
1322+
(if OpamStd.Sys.tty_in || OpamCoreConfig.answer_is ~name:None `unsafe_yes then ""
13231323
else "Running the system package manager non-interactively requires \
13241324
'--confirm-level=unsafe-yes'.\n")
13251325
and give_up () =

src/core/opamConsole.ml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -786,19 +786,19 @@ let pause fmt =
786786
else
787787
Printf.ifprintf () fmt
788788

789-
let confirm ?(require_unsafe_yes=false) ?(default=true) fmt =
789+
let confirm ?(require_unsafe_yes=false) ?(default=true) ?name fmt =
790790
Printf.ksprintf (fun s ->
791791
if OpamCoreConfig.(!r.safe_mode) then false else
792792
let prompt =
793793
Printf.ksprintf OpamStd.Format.reformat "%s [%s/%s] " s
794794
(colorise `blue (if default then "Y" else "y"))
795795
(colorise `blue (if default then "n" else "N"))
796796
in
797-
if OpamCoreConfig.answer_is `unsafe_yes ||
798-
not require_unsafe_yes && OpamCoreConfig.answer_is_yes ()
797+
if OpamCoreConfig.answer_is ~name `unsafe_yes ||
798+
not require_unsafe_yes && OpamCoreConfig.answer_is_yes ~name ()
799799
then
800800
(formatted_msg "%sy\n" prompt; true)
801-
else if OpamCoreConfig.answer_is `all_no ||
801+
else if OpamCoreConfig.answer_is ~name `all_no ||
802802
OpamStd.Sys.(not tty_in)
803803
then
804804
(formatted_msg "%sn\n" prompt; false)
@@ -814,7 +814,7 @@ let confirm ?(require_unsafe_yes=false) ?(default=true) fmt =
814814
let read fmt =
815815
Printf.ksprintf (fun s ->
816816
formatted_msg "%s " s;
817-
if OpamCoreConfig.(answer_is `ask && not !r.safe_mode) then (
817+
if OpamCoreConfig.(answer_is ~name:None `ask && not !r.safe_mode) then (
818818
try match read_line () with
819819
| "" -> None
820820
| s -> Some s
@@ -983,7 +983,7 @@ let menu ?default ?unsafe_yes ?yes ~no ~options fmt =
983983
let default_s = OpamStd.(List.assoc Compare.equal default options_nums) in
984984
let no_s = OpamStd.(List.assoc Compare.equal no options_nums) in
985985
if OpamCoreConfig.(!r.safe_mode) then no else
986-
match OpamCoreConfig.answer(), unsafe_yes, yes with
986+
match OpamCoreConfig.answer ~name:None (), unsafe_yes, yes with
987987
| `unsafe_yes, Some a, _ -> print_string prompt; select a
988988
| #OpamStd.Config.yes_answer, _, Some a -> print_string prompt; select a
989989
| `all_no, _, _ -> print_string prompt; select no

src/core/opamConsole.mli

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ val pause: ('a, unit, string, unit) format4 -> 'a
125125
prompt and wait user input if it is set [`all_yes] (interactive). Its
126126
default is false. *)
127127
val confirm:
128-
?require_unsafe_yes:bool -> ?default:bool ->
128+
?require_unsafe_yes:bool -> ?default:bool -> ?name:string ->
129129
('a, unit, string, bool) format4 -> 'a
130130

131131
(** Prompts the user with multiple numbered choices [(answer, message)].

0 commit comments

Comments
 (0)