Files
fish-config/functions/mkcd.fish
T
rootiest 2e7f2d07e4 feat(navigation): add mkcd function
Creates a directory (including all missing parents) and immediately
cd's into it. Supports -h/--help, distinguishes new vs existing dirs
in feedback, and uses set_color for consistent colored output.
2026-05-27 15:30:08 -04:00

50 lines
1.6 KiB
Fish

# Copyright (C) 2026 Rootiest
# SPDX-License-Identifier: AGPL-3.0-or-later
function mkcd --description 'Create a directory (with parents) and cd into it'
set -l c_head (set_color --bold cyan)
set -l c_cmd (set_color --bold white)
set -l c_arg (set_color cyan)
set -l c_flag (set_color yellow)
set -l c_ok (set_color green)
set -l c_warn (set_color yellow)
set -l c_err (set_color red)
set -l c_dim (set_color brblack)
set -l c_rst (set_color normal)
if contains -- -h $argv; or contains -- --help $argv; or test (count $argv) -eq 0
echo "$c_head""Usage:$c_rst $c_cmd""mkcd$c_rst $c_arg""<dir>$c_rst"
echo
echo " Create $c_arg""<dir>$c_rst (including missing parents) and cd into it."
echo
echo "$c_head""Arguments:$c_rst"
echo " $c_arg""<dir>$c_rst Directory to create and enter"
echo
echo "$c_head""Flags:$c_rst"
echo " $c_flag-h$c_rst, $c_flag--help$c_rst Show this help message"
echo
echo "$c_head""Examples:$c_rst"
echo " $c_cmd""mkcd$c_rst $c_arg~/projects/myapp$c_rst"
echo " $c_cmd""mkcd$c_rst $c_arg~/projects/myapp$c_rst""$c_dim""; git init$c_rst"
return 0
end
set -l dir $argv[1]
set -l is_new 0
if not test -d $dir
set is_new 1
command mkdir -p $dir
or return $status
end
cd $dir
or return $status
if test $is_new -eq 1
echo "$c_ok""$c_rst Created and entered $c_arg$dir$c_rst"
else
echo "$c_warn""$c_rst $c_arg$dir$c_rst already exists — entered"
end
end