92 lines
1.4 KiB
Markdown
92 lines
1.4 KiB
Markdown
|
|
## Macros
|
|
|
|
To avoid headache, Cutekit extends JSON through simple macros, this is what we call **Jexpr**.
|
|
|
|
|
|
### `@latest`
|
|
|
|
Find the latest version of a command in the path.
|
|
|
|
```json
|
|
"cc": {
|
|
"cmd": ["@latest", "clang"], // clang-14
|
|
/* ... */
|
|
```
|
|
|
|
|
|
### `@uname`
|
|
|
|
Query the system for information about the current operating system.
|
|
|
|
|
|
```json
|
|
"cc": {
|
|
"cmd": ["@uname", "machine"], // "x86_64"
|
|
/* ... */
|
|
```
|
|
|
|
The `@uname` commands has 1 argument that may be:
|
|
- `node`: to get the current machine hostname.
|
|
- `machine`: to get the current machine running architecture
|
|
- `aarch64` is renamed to `arm64`
|
|
- `AMD64` is renamed to `x86_64`
|
|
- `system`: to get the current machine running operating system:
|
|
- `Linux`
|
|
- `Windows`
|
|
- `release`: to get the current machine operating system's version
|
|
- `version`: to get more information about the host operating system.
|
|
|
|
### `@include`
|
|
|
|
Include a manifest file.
|
|
|
|
### `@read`
|
|
|
|
Read a Json file and output its value.
|
|
|
|
### `@join`
|
|
|
|
Join two objects
|
|
|
|
Example:
|
|
|
|
```json
|
|
["@join", {"a": 1}, {"b": 2}] // {"a": 1, "b": 2}
|
|
```
|
|
|
|
### `@concat`
|
|
|
|
Concatenate strings
|
|
|
|
Example:
|
|
|
|
```json
|
|
["@concat", "a", "b", "c"] // "abc"
|
|
```
|
|
|
|
### `@exec`
|
|
|
|
Execute a command and return the output
|
|
|
|
Example:
|
|
|
|
```json
|
|
["@exec", "uname", "-m"] // "x86_64"
|
|
```
|
|
|
|
### `@eval`
|
|
|
|
Execute python code and return the output
|
|
|
|
Example:
|
|
|
|
```json
|
|
"32limit": ["@eval", "2**32"]
|
|
```
|
|
|
|
### `@abspath`
|
|
|
|
Returns the absolute path of a path.
|
|
|
|
|