aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/primops
diff options
context:
space:
mode:
authorMichal Sojka <michal.sojka@cvut.cz>2023-06-11 21:38:18 +0200
committerMichal Sojka <michal.sojka@cvut.cz>2023-06-13 21:53:03 +0200
commitc6d7c4f9ecb919cced435cf179d8ece5d25b5f06 (patch)
treefcaf95fbd0afdaafd03d867f53d42d838ed3d1a8 /src/libexpr/primops
parent8ec1ba02109eee7e8dfd89f3fbbf060497940469 (diff)
Document fromTOML, hasContext and getContext builtins
Until now, these functions were completely missing in the Nix manual. Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
Diffstat (limited to 'src/libexpr/primops')
-rw-r--r--src/libexpr/primops/context.cc28
-rw-r--r--src/libexpr/primops/fromTOML.cc16
2 files changed, 41 insertions, 3 deletions
diff --git a/src/libexpr/primops/context.cc b/src/libexpr/primops/context.cc
index 8ae68e570..8b3468009 100644
--- a/src/libexpr/primops/context.cc
+++ b/src/libexpr/primops/context.cc
@@ -28,7 +28,12 @@ static void prim_hasContext(EvalState & state, const PosIdx pos, Value * * args,
static RegisterPrimOp primop_hasContext({
.name = "__hasContext",
- .arity = 1,
+ .args = {"s"},
+ .doc = R"(
+ Return `true` if string *s* has a non-empty context. The
+ context can be obtained with
+ [`getContext`](#builtins-getContext).
+ )",
.fun = prim_hasContext
});
@@ -133,7 +138,26 @@ static void prim_getContext(EvalState & state, const PosIdx pos, Value * * args,
static RegisterPrimOp primop_getContext({
.name = "__getContext",
- .arity = 1,
+ .args = {"s"},
+ .doc = R"(
+ Return the string context of *s*.
+
+ The string context tracks references to derivations within a string.
+ It is represented as an attribute set of [store derivation](@docroot@/glossary.md#gloss-store-derivation) paths mapping to output names.
+
+ Using [string interpolation](@docroot@/language/string-interpolation.md) on a derivation will add that derivation to the string context.
+ For example,
+
+ ```nix
+ builtins.getContext "${derivation { name = "a"; builder = "b"; system = "c"; }}"
+ ```
+
+ evaluates to
+
+ ```
+ { "/nix/store/arhvjaf6zmlyn8vh8fgn55rpwnxq0n7l-a.drv" = { outputs = [ "out" ]; }; }
+ ```
+ )",
.fun = prim_getContext
});
diff --git a/src/libexpr/primops/fromTOML.cc b/src/libexpr/primops/fromTOML.cc
index 4e6fcdffa..2f4d4022e 100644
--- a/src/libexpr/primops/fromTOML.cc
+++ b/src/libexpr/primops/fromTOML.cc
@@ -92,7 +92,21 @@ static void prim_fromTOML(EvalState & state, const PosIdx pos, Value * * args, V
static RegisterPrimOp primop_fromTOML({
.name = "fromTOML",
- .arity = 1,
+ .args = {"e"},
+ .doc = R"(
+ Convert a TOML string to a Nix value. For example,
+
+ ```nix
+ builtins.fromTOML ''
+ x=1
+ s="a"
+ [table]
+ y=2
+ ''
+ ```
+
+ returns the value `{ s = "a"; table = { y = 2; }; x = 1; }`.
+ )",
.fun = prim_fromTOML
});