1 parent
1ba8c2cfa6
commit
f8d9478517
1 file changed
+85
@@ -161,6 +161,11 @@ sections:
|
|||||||
Read filter from the file rather than from a command line, like
|
Read filter from the file rather than from a command line, like
|
||||||
awk's -f option. You can also use '#' to make comments.
|
awk's -f option. You can also use '#' to make comments.
|
||||||
|
|
||||||
|
* `-Ldirectory` / `-L directory`:
|
||||||
|
|
||||||
|
Add `directory` to the search list for modules. See the section
|
||||||
|
on modules below.
|
||||||
|
|
||||||
* `-e` / `--exit-status`:
|
* `-e` / `--exit-status`:
|
||||||
|
|
||||||
Sets the exit status of jq to 0 if the last output values was
|
Sets the exit status of jq to 0 if the last output values was
|
||||||
@@ -2239,3 +2244,83 @@ sections:
|
|||||||
|
|
||||||
(.posts[] | select(.author == "stedolan") | .comments) |=
|
(.posts[] | select(.author == "stedolan") | .comments) |=
|
||||||
. + ["terrible."]
|
. + ["terrible."]
|
||||||
|
|
||||||
|
- title: Modules
|
||||||
|
body: |
|
||||||
|
|
||||||
|
jq has a library/module system. Modules are files whose names end
|
||||||
|
in `.jq`. Modules should start with a `module` directive.
|
||||||
|
Programs and modules must `import` their dependencies, if any.
|
||||||
|
|
||||||
|
A search path is used to search for modules. Each directory in
|
||||||
|
the search path is tested twice: once with a directory named "any"
|
||||||
|
added on the end, and once with the jq version number as a
|
||||||
|
directory added on the end.
|
||||||
|
|
||||||
|
For paths starting with "~/", the user's home directory is
|
||||||
|
substituted for "~".
|
||||||
|
|
||||||
|
For paths starting with "$ORIGIN/", the path of the directory of
|
||||||
|
the dependent is used. For main programs that's the path of the
|
||||||
|
jq executable's containing directory.
|
||||||
|
|
||||||
|
Modules may be organized into a hierarchy, with name components
|
||||||
|
separated by double-colons ("::"). For example: "foo::bar". Each
|
||||||
|
component in the name corresponds to a directory on the
|
||||||
|
filesystem. Consecutive components with the same name are not
|
||||||
|
allowed to avoid ambiguities (e.g., "foo::foo").
|
||||||
|
|
||||||
|
For example, a module named "foo::bar" would be searched for in
|
||||||
|
"foo/bar.jq" and "foo/bar/bar.jq" in the given search path. This
|
||||||
|
is intended to allow modules to be placed in a directory along
|
||||||
|
with, for example, version control files, README files, and so on,
|
||||||
|
but also to allow for single-file modules.
|
||||||
|
|
||||||
|
The search path used is as follows:
|
||||||
|
|
||||||
|
- the directory indicated in the search key of the `import`
|
||||||
|
directive metadata (see below)
|
||||||
|
- otherwise any directory(ies) listed in the `-L` command-line
|
||||||
|
argument
|
||||||
|
- otherwise any directory(ies) listed in the `$JQ_LIBRARY_PATH`
|
||||||
|
environment variable
|
||||||
|
|
||||||
|
For example, with `-L$HOME/.jq` A module `foo` can be found in
|
||||||
|
`$HOME/.jq/any/foo.jq`, `$HOME/.jq/1.4/foo.jq`,
|
||||||
|
`$HOME/.jq/any/foo/foo.jq`, and in `$HOME/.jq/foo/foo.jq`.
|
||||||
|
|
||||||
|
entries:
|
||||||
|
- title: "`module NAME {<metadata>};`"
|
||||||
|
body: |
|
||||||
|
|
||||||
|
Defines a module named `NAME` with the given metadata. If
|
||||||
|
given it must be the first thing in the module. Programs also
|
||||||
|
may use this directive.
|
||||||
|
|
||||||
|
The metadata must be a constant jq expression. It should be
|
||||||
|
an object with keys like "version", "repo", "URI", and so on.
|
||||||
|
At this time jq doesn't use this metadata, but it is made
|
||||||
|
available to users via the `modulemeta` builtin.
|
||||||
|
|
||||||
|
- title: "`import NAME {<metadata>};` `import NAME {<metadata>} as NAME;`"
|
||||||
|
body: |
|
||||||
|
|
||||||
|
Imports a module named `NAME`. If the second form is used
|
||||||
|
then the module's symbols are prefixed with "NAME::".
|
||||||
|
|
||||||
|
The metadata must be a constant jq expression. It should be
|
||||||
|
an object with keys like "version", "repo", "URI", and so on.
|
||||||
|
|
||||||
|
The "search" key in the metadata, if present, should have a
|
||||||
|
string value consisting of a single directory path to search.
|
||||||
|
|
||||||
|
- title: "`modulemeta`"
|
||||||
|
body: |
|
||||||
|
|
||||||
|
Takes a module name as input and outputs the module's
|
||||||
|
metadata, with the module's imports (including metadata) as
|
||||||
|
the "deps" key.
|
||||||
|
|
||||||
|
Programs can use this to query a module's metadata, which they
|
||||||
|
could then use to, for example, search for, download, and
|
||||||
|
install missing dependencies.
|
||||||
Reference in new issue
Block a user