Resolve the repository from the invoking directory
A task included from the global mise config runs with the config root as its working directory - $HOME - rather than the directory the user invoked it from. Deriving the repository from the current directory therefore failed everywhere except a project-level include, which defeats the point of installing the task once and using it in every repository. mise passes the real directory as MISE_ORIGINAL_CWD, so enter it before resolving the repository, falling back to the current directory when the task is run directly rather than through mise.
This commit is contained in:
@@ -210,7 +210,19 @@ sandbox_profile_name() {
|
||||
printf '%s' "$mapped"
|
||||
}
|
||||
|
||||
# A task included from the global mise config runs with the config root as its
|
||||
# working directory ($HOME), not the directory the user invoked it from, so the
|
||||
# repository would otherwise be undiscoverable from anywhere.
|
||||
enter_invocation_directory() {
|
||||
local invoked_from="${MISE_ORIGINAL_CWD:-$PWD}"
|
||||
|
||||
cd "$invoked_from" ||
|
||||
die "Could not enter the invoking directory: $invoked_from"
|
||||
}
|
||||
|
||||
repository_context() {
|
||||
enter_invocation_directory
|
||||
|
||||
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null)" ||
|
||||
die "This command must be run inside a Git repository."
|
||||
|
||||
|
||||
Reference in New Issue
Block a user