Skip to content

Commit ba04303

Browse files
dbanckkmoe
authored andcommitted
Add website docs for metadata functions -json command (hashicorp#32701)
* Add metadata functions doc to internals * Add metadata functions to internals nav * Review feedback * Renamed the doc * Fixed small typos * Update page title
1 parent 84af8d1 commit ba04303

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

website/data/internals-nav-data.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@
4444
"title": "Provider Metadata",
4545
"path": "provider-meta"
4646
},
47+
{
48+
"title": "Functions Metadata",
49+
"path": "functions-meta"
50+
},
4751
{
4852
"title": "Machine Readable UI",
4953
"path": "machine-readable-ui",
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
---
2+
page_title: Functions Metadata
3+
description: >-
4+
The `terraform metadata functions` command prints signatures for all the
5+
functions available in the current Terraform version.
6+
---
7+
8+
# Functions Metadata
9+
10+
The `terraform metadata functions` command is used to print signatures for the functions available in the current Terraform version.
11+
12+
-> `terraform metadata functions` requires **Terraform v1.4 or later**.
13+
14+
## Usage
15+
16+
Usage: `terraform metadata functions [options]`
17+
18+
The following flags are available:
19+
20+
- `-json` - Displays the function signatures in a machine-readable, JSON format.
21+
22+
Please note that, at this time, the `-json` flag is a _required_ option. In future releases, this command will be extended to allow for additional options.
23+
24+
The output includes a `format_version` key, which as of Terraform 1.4.0 has
25+
value `"1.0"`. The semantics of this version are:
26+
27+
- We will increment the minor version, e.g. `"1.1"`, for backward-compatible
28+
changes or additions. Ignore any object properties with unrecognized names to
29+
remain forward-compatible with future minor versions.
30+
- We will increment the major version, e.g. `"2.0"`, for changes that are not
31+
backward-compatible. Reject any input which reports an unsupported major
32+
version.
33+
34+
We will introduce new major versions only within the bounds of
35+
[the Terraform 1.0 Compatibility Promises](/language/v1-compatibility-promises).
36+
37+
## Format Summary
38+
39+
The following sections describe the JSON output format by example, using a pseudo-JSON notation.
40+
Important elements are described with comments, which are prefixed with `//`.
41+
To avoid excessive repetition, we've split the complete format into several discrete sub-objects, described under separate headers. References wrapped in angle brackets (like `<block-representation>`) are placeholders which, in the real output, would be replaced by an instance of the specified sub-object.
42+
43+
The JSON output format consists of the following objects and sub-objects:
44+
45+
- [Function Signature Representation](#function-signature-representation) - the top-level object returned by `terraform metadata functions -json`
46+
- [Parameter Representation](#parameter-representation) - a sub-object of signatures that describes their parameters
47+
48+
## Function Signature Representation
49+
50+
```javascript
51+
{
52+
"format_version": "1.0",
53+
54+
// "function_signatures" describes the signatures for all
55+
// available functions.
56+
"function_signatures": {
57+
// keys in this map are the function names, such as "abs"
58+
"example_function": {
59+
// "description" is an English-language description of
60+
// the purpose and usage of the function in Markdown.
61+
"description": "string",
62+
63+
// "return_type" is a representation of a type specification
64+
// that the function returns.
65+
"return_type": "string",
66+
67+
// "parameters" is an optional list of the positional parameters
68+
// that the function accepts.
69+
"parameters": [
70+
<parameter-representation>,
71+
72+
],
73+
74+
// "variadic_parameter" is an optional representation of the
75+
// additional arguments that the function accepts after those
76+
// matching with the fixed parameters.
77+
"variadic_parameter": <parameter-representation>
78+
},
79+
"example_function_two": { … }
80+
}
81+
}
82+
```
83+
84+
## Parameter Representation
85+
86+
A parameter representation describes a parameter to a function.
87+
88+
```javascript
89+
{
90+
// "name" is the internal name of the parameter
91+
"name": "string",
92+
93+
// "description" is an optional English-language description of
94+
// the purpose and usage of the parameter in Markdown.
95+
"description": "string",
96+
97+
// "type" is a representation of a type specification
98+
// that the parameter's value must conform to.
99+
"type": "string"
100+
}
101+
```

0 commit comments

Comments
 (0)