Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion e2e/tasks/test_task_ls_global
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,16 @@

echo "tasks.mylocal = { run = 'echo mylocal' }" >mise.toml
echo "tasks.myglobal = { run = 'echo myglobal' }" >~/.config/mise/config.toml
mkdir -p ~/.config/mise/tasks
cat <<'EOF' >~/.config/mise/tasks/myglobalfile
#!/usr/bin/env bash
echo myglobalfile
EOF
chmod +x ~/.config/mise/tasks/myglobalfile
Comment thread
greptile-apps[bot] marked this conversation as resolved.

assert "mise tasks" "myglobal
myglobalfile
mylocal"
assert "mise tasks --local" "mylocal"
assert "mise tasks --global" "myglobal"
assert "mise tasks --global" "myglobal
myglobalfile"
24 changes: 22 additions & 2 deletions src/config/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1663,6 +1663,11 @@ fn default_task_includes() -> Vec<String> {
]
}

fn is_global_task_include_path(path: &Path) -> bool {
path.starts_with(dirs::CONFIG.join("tasks"))
|| path.starts_with(dirs::SYSTEM_CONFIG.join("tasks"))
}

#[async_backtrace::framed]
pub async fn rebuild_shims_and_runtime_symlinks(
config: &Arc<Config>,
Expand Down Expand Up @@ -1840,6 +1845,9 @@ async fn load_local_tasks_with_context(
for include in includes {
let mut subdir_tasks =
load_tasks_includes(&config, &include, &subdir).await?;
if is_global_task_include_path(&include) {
mark_tasks_as_global(&mut subdir_tasks);
}
prefix_monorepo_task_names(&mut subdir_tasks, &subdir, &monorepo_root);
for task in subdir_tasks {
task_map.insert(task.name.clone(), task);
Expand Down Expand Up @@ -2290,7 +2298,11 @@ async fn load_file_tasks(
expand_task_include(&cf_root, &include)
};
for path in paths {
tasks.extend(load_tasks_includes(config, &path, &config_root).await?);
let mut loaded = load_tasks_includes(config, &path, &config_root).await?;
if is_global_task_include_path(&path) {
mark_tasks_as_global(&mut loaded);
}
tasks.extend(loaded);
}
}
Ok(tasks)
Expand Down Expand Up @@ -2353,7 +2365,11 @@ pub async fn load_tasks_in_dir(

let mut file_tasks = vec![];
for p in task_includes_for_dir(dir, config_files) {
file_tasks.extend(load_tasks_includes(config, &p, dir).await?);
let mut loaded = load_tasks_includes(config, &p, dir).await?;
if is_global_task_include_path(&p) {
mark_tasks_as_global(&mut loaded);
}
file_tasks.extend(loaded);
}

for include in git_includes {
Expand Down Expand Up @@ -2402,6 +2418,10 @@ async fn load_task_file(
Ok(out)
}

fn mark_tasks_as_global(tasks: &mut [Task]) {
tasks.iter_mut().for_each(|task| task.global = true);
}

#[cfg(test)]
#[cfg(unix)]
mod tests {
Expand Down
Loading