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.
 | 
						|
 | 
						|
 |