122 lines
4.4 KiB
Markdown
122 lines
4.4 KiB
Markdown
|
The Strings JSON Interchange Schema
|
||
|
===================================
|
||
|
|
||
|
Strings has two flags used to emit json.
|
||
|
* `--emit-json $FILE` Saves json to a file.
|
||
|
* `--emit-json-stdout` Prints json on stdout.
|
||
|
|
||
|
Top Level Structure
|
||
|
-------------------
|
||
|
|
||
|
The json outputted by strings is a single object which has 4 keys representing
|
||
|
the different types of Puppet code and extension functions Strings reads. The
|
||
|
value for each key is a list of json objects representing each puppet class,
|
||
|
function, etc.
|
||
|
Here is an example of the top level structure:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
|
||
|
"defined_types": [...],
|
||
|
|
||
|
"puppet_classes": [...],
|
||
|
|
||
|
"puppet_functions": [...],
|
||
|
|
||
|
"puppet_types": [...],
|
||
|
|
||
|
"puppet_providers": [...]
|
||
|
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Defined Types
|
||
|
-------------
|
||
|
|
||
|
Each defined type or puppet class object has the following properties and values:
|
||
|
|
||
|
* `name`: A string representing the name of the object.
|
||
|
* `file`: The file the object came from. A string.
|
||
|
* `line`: The line in the file the object came from. A number.
|
||
|
* `docstring`: A string. The docstring describing the object.
|
||
|
* `examples`: A list of strings representing the content of the examples in the
|
||
|
docstring.
|
||
|
* `signatures`: A list of function signatures which may be supported by the
|
||
|
object. Each function signature is a json object whose keys are the
|
||
|
parameter names, and whose values are the types those parameters may take.
|
||
|
This is extracted from the code itself.
|
||
|
* `parameters`: An object whose keys are the parameter names and whose values
|
||
|
are the parameter's types or null if it has no types. This is extracted from
|
||
|
the docstring.
|
||
|
|
||
|
|
||
|
Puppet Functions
|
||
|
----------------
|
||
|
|
||
|
Both puppet 4x and 3x functions are represented as json objects kept in the
|
||
|
`puppet_functions` list. Puppet 4x functions have every property that 3x
|
||
|
functions have, as well as a few extras.
|
||
|
|
||
|
Puppet 3x functions have:
|
||
|
|
||
|
* `name`: A string representing the name of the
|
||
|
* `file`: The file the object came from. A string.
|
||
|
* `line`: The line in the file the object came from. A number.
|
||
|
* `docstring`: A string. The docstring describing our object.
|
||
|
* `function_api_version`: the number 3.
|
||
|
* `documented_params`: A object whose keys are the parameters which were
|
||
|
* documented and whose values are the types they may take, or null.
|
||
|
* `examples`: A list of strings representing the content of the examples in the
|
||
|
docstring.
|
||
|
|
||
|
Puppet 4x functions have everything 3x functions do as well as:
|
||
|
|
||
|
* The `function_api_version` is the number 4, not 3 (surprise!).
|
||
|
* `signatures`: A list of function signatures which may be supported by the
|
||
|
object. Each function signature is a json object whose keys are the parameter
|
||
|
names, and whose values are the types those parameters may take. This is
|
||
|
extracted from the code itself.
|
||
|
|
||
|
Puppet Types
|
||
|
------------
|
||
|
|
||
|
Each puppet type object has the following properties and values:
|
||
|
|
||
|
* `name`: A string representing the name of the object
|
||
|
* `file`: The file the object came from. A string.
|
||
|
* `line`: The line in the file the object came from. A number.
|
||
|
* `docstring`: A string. The docstring describing our object.
|
||
|
* `examples`: A list of strings representing the content of the examples in the
|
||
|
docstring.
|
||
|
* `parameters`: A list of objects with the following shape:
|
||
|
* `allowed_vales`: a list of strings representing the allowed values.
|
||
|
* `default`: a string or null.
|
||
|
* `docstring`: The docstring.
|
||
|
* `name`: the parameter name.
|
||
|
* `properties`: A list of objects with a shape very similar to parameters but
|
||
|
also including:
|
||
|
* `namevar`: A boolean.
|
||
|
* `features`: A list of objects representing possible features. They have the
|
||
|
following shape:
|
||
|
* `docstring`: The description of the feature.
|
||
|
* `methods`: null or a list of the available methods as strings.
|
||
|
* `name`: The feature's name.
|
||
|
|
||
|
Puppet Providers
|
||
|
----------------
|
||
|
Each puppet provider object has the following properties and values:
|
||
|
|
||
|
* `name`: A string representing the name of the object
|
||
|
* `file`: The file the object came from. A string.
|
||
|
* `line`: The line in the file the object came from. A number.
|
||
|
* `docstring`: A string. The docstring describing the object.
|
||
|
* `examples`: A list of strings representing the content of the examples in the
|
||
|
docstring.
|
||
|
* `commands`: A list of the names of the commands available.
|
||
|
* `confines`: An object whose keys are the confine keys and whose values are
|
||
|
the confine values.
|
||
|
* `defaults`: Similar to above.
|
||
|
* `features`: A list of strings representing the features this provider
|
||
|
supports.
|
||
|
* `type_name`: The type this provider accompanies.
|