Add error() function (#1118)
This commit is contained in:
parent
a3f61a19ff
commit
7299353977
26
README.md
26
README.md
@ -1012,6 +1012,10 @@ These functions can fail, for example if a path does not have an extension, whic
|
|||||||
|
|
||||||
- `path_exists(path)` - Returns `true` if the path points at an existing entity and `false` otherwise. Traverses symbolic links, and returns `false` if the path is inaccessible or points to a broken symlink.
|
- `path_exists(path)` - Returns `true` if the path points at an existing entity and `false` otherwise. Traverses symbolic links, and returns `false` if the path is inaccessible or points to a broken symlink.
|
||||||
|
|
||||||
|
##### Error Reporting
|
||||||
|
|
||||||
|
- `error(message)` - Abort execution and report error `message` to user.
|
||||||
|
|
||||||
### Command Evaluation Using Backticks
|
### Command Evaluation Using Backticks
|
||||||
|
|
||||||
Backticks can be used to store the result of commands:
|
Backticks can be used to store the result of commands:
|
||||||
@ -1118,6 +1122,28 @@ $ just bar
|
|||||||
abc
|
abc
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Stopping execution with error
|
||||||
|
|
||||||
|
Execution can be halted with the `error` function. For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
foo := if "hello" == "goodbye" {
|
||||||
|
"xyz"
|
||||||
|
} else if "a" == "b" {
|
||||||
|
"abc"
|
||||||
|
} else {
|
||||||
|
error("123")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Which produce the following error when run:
|
||||||
|
|
||||||
|
```
|
||||||
|
error: Call to function `error` failed: 123
|
||||||
|
|
|
||||||
|
16 | error("123")
|
||||||
|
```
|
||||||
|
|
||||||
### Setting Variables from the Command Line
|
### Setting Variables from the Command Line
|
||||||
|
|
||||||
Variables can be overridden from the command line.
|
Variables can be overridden from the command line.
|
||||||
|
@ -19,6 +19,7 @@ lazy_static! {
|
|||||||
("clean", Unary(clean)),
|
("clean", Unary(clean)),
|
||||||
("env_var", Unary(env_var)),
|
("env_var", Unary(env_var)),
|
||||||
("env_var_or_default", Binary(env_var_or_default)),
|
("env_var_or_default", Binary(env_var_or_default)),
|
||||||
|
("error", Unary(error)),
|
||||||
("extension", Unary(extension)),
|
("extension", Unary(extension)),
|
||||||
("file_name", Unary(file_name)),
|
("file_name", Unary(file_name)),
|
||||||
("file_stem", Unary(file_stem)),
|
("file_stem", Unary(file_stem)),
|
||||||
@ -117,6 +118,10 @@ fn env_var_or_default(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn error(_context: &FunctionContext, message: &str) -> Result<String, String> {
|
||||||
|
Err(message.to_owned())
|
||||||
|
}
|
||||||
|
|
||||||
fn extension(_context: &FunctionContext, path: &str) -> Result<String, String> {
|
fn extension(_context: &FunctionContext, path: &str) -> Result<String, String> {
|
||||||
Utf8Path::new(path)
|
Utf8Path::new(path)
|
||||||
.extension()
|
.extension()
|
||||||
|
@ -404,6 +404,16 @@ fn test_path_exists_filepath_doesnt_exist() {
|
|||||||
.run();
|
.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn error_errors_with_message() {
|
||||||
|
Test::new()
|
||||||
|
.justfile("x := error ('Thing Not Supported')")
|
||||||
|
.args(&["--evaluate"])
|
||||||
|
.status(1)
|
||||||
|
.stderr("error: Call to function `error` failed: Thing Not Supported\n |\n1 | x := error ('Thing Not Supported')\n | ^^^^^\n")
|
||||||
|
.run();
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_absolute_path_resolves() {
|
fn test_absolute_path_resolves() {
|
||||||
let test_object = Test::new()
|
let test_object = Test::new()
|
||||||
|
Loading…
Reference in New Issue
Block a user