Add just_executable() function (#775)
The `just_executable()` function returns the absolute path of the currently running `just` executable.
This commit is contained in:
parent
6f42c8b737
commit
13e9f406c8
16
README.adoc
16
README.adoc
@ -622,6 +622,22 @@ script:
|
|||||||
./{{justfile_directory()}}/scripts/some_script
|
./{{justfile_directory()}}/scripts/some_script
|
||||||
```
|
```
|
||||||
|
|
||||||
|
==== Just Executable
|
||||||
|
|
||||||
|
- `just_executable()` - Absolute path to the just executable.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```make
|
||||||
|
executable:
|
||||||
|
@echo The executable is at: {{just_executable()}}
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
$ just
|
||||||
|
The executable is at: /bin/just
|
||||||
|
```
|
||||||
|
|
||||||
==== Dotenv Integration
|
==== Dotenv Integration
|
||||||
|
|
||||||
`just` will load environment variables from a file named `.env`. This file can be located in the same directory as your justfile or in a parent directory. These variables are environment variables, not `just` variables, and so must be accessed using `$VARIABLE_NAME` in recipes and backticks.
|
`just` will load environment variables from a file named `.env`. This file can be located in the same directory as your justfile or in a parent directory. These variables are environment variables, not `just` variables, and so must be accessed using `$VARIABLE_NAME` in recipes and backticks.
|
||||||
|
@ -18,6 +18,7 @@ lazy_static! {
|
|||||||
("invocation_directory", Nullary(invocation_directory)),
|
("invocation_directory", Nullary(invocation_directory)),
|
||||||
("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)),
|
||||||
|
("just_executable", Nullary(just_executable)),
|
||||||
]
|
]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect();
|
.collect();
|
||||||
@ -123,3 +124,15 @@ fn env_var_or_default(
|
|||||||
Ok(value) => Ok(value),
|
Ok(value) => Ok(value),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn just_executable(_context: &FunctionContext) -> Result<String, String> {
|
||||||
|
let exe_path =
|
||||||
|
std::env::current_exe().map_err(|e| format!("Error getting current executable: {}", e))?;
|
||||||
|
|
||||||
|
exe_path.to_str().map(str::to_owned).ok_or_else(|| {
|
||||||
|
format!(
|
||||||
|
"Executable path is not valid unicode: {}",
|
||||||
|
exe_path.to_string_lossy()
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -1203,6 +1203,18 @@ test! {
|
|||||||
status: EXIT_FAILURE,
|
status: EXIT_FAILURE,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test! {
|
||||||
|
name: test_just_executable_function,
|
||||||
|
justfile: "
|
||||||
|
a:
|
||||||
|
@printf 'Executable path is: %s\\n' '{{ just_executable() }}'
|
||||||
|
",
|
||||||
|
args: ("a"),
|
||||||
|
stdout: format!("Executable path is: {}\n", executable_path("just").to_str().unwrap()).as_str(),
|
||||||
|
stderr: "",
|
||||||
|
status: EXIT_SUCCESS,
|
||||||
|
}
|
||||||
|
|
||||||
test! {
|
test! {
|
||||||
name: infallable_command,
|
name: infallable_command,
|
||||||
justfile: r#"
|
justfile: r#"
|
||||||
|
Loading…
Reference in New Issue
Block a user