Skip to content

Commit ce4215d

Browse files
committed
feat(nushell): add shell aliases and helper functions
1 parent 14f7e83 commit ce4215d

1 file changed

Lines changed: 178 additions & 0 deletions

File tree

‎home/.chezmoitemplates/nushell/config.nu‎

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ alias la = eza -la --icons --git --group-directories-first
2323
alias cat = bat --paging=never
2424
alias k = kubectl
2525
alias code = code-insiders
26+
alias g = git
2627

2728
def --env cd-dev [] { cd ~/Developer }
2829
def --env cd-down [] { cd ~/Downloads }
@@ -49,6 +50,7 @@ alias gco = git checkout
4950
alias gcb = git checkout -b
5051
alias gcl = git clone
5152
alias gc = git commit
53+
alias gcm = git commit -m
5254
alias gca = git commit --amend
5355
alias gcan = git commit --amend --no-edit
5456
alias gf = git fetch
@@ -67,6 +69,86 @@ alias gsta = git stash
6769
alias gstp = git stash pop
6870
alias glo = git log --oneline --decorate --color
6971

72+
# Additional read-only and common Git shortcuts from Oh My Zsh's git plugin
73+
# and Fish's plugin-git. Destructive plugin aliases are intentionally omitted.
74+
alias gapa = git add --patch
75+
alias gau = git add --update
76+
alias gav = git add --verbose
77+
alias gba = git branch --all
78+
alias gbl = git blame -w
79+
alias gbs = git bisect
80+
alias gbsb = git bisect bad
81+
alias gbsg = git bisect good
82+
alias gbsr = git bisect reset
83+
alias gbss = git bisect start
84+
alias gcmsg = git commit --message
85+
alias gcam = git commit --all --message
86+
alias gcf = git config --list
87+
alias gcp = git cherry-pick
88+
alias gcpa = git cherry-pick --abort
89+
alias gcpc = git cherry-pick --continue
90+
alias gd = git diff
91+
alias gdca = git diff --cached
92+
alias gdw = git diff --word-diff
93+
alias gfo = git fetch origin
94+
alias glg = git log --stat
95+
alias glgg = git log --graph
96+
alias glgga = git log --graph --decorate --all
97+
alias glog = git log --oneline --decorate --graph
98+
alias gloga = git log --oneline --decorate --graph --all
99+
alias gm = git merge
100+
alias gma = git merge --abort
101+
alias gmff = git merge --ff-only
102+
alias gpr = git pull --rebase
103+
alias gpra = git pull --rebase --autostash
104+
alias gpv = git push --verbose
105+
alias grb = git rebase
106+
alias grba = git rebase --abort
107+
alias grbc = git rebase --continue
108+
alias grbi = git rebase --interactive
109+
alias grbs = git rebase --skip
110+
alias grev = git revert
111+
alias grmv = git remote rename
112+
alias grrm = git remote remove
113+
alias grset = git remote set-url
114+
alias grup = git remote update
115+
alias grv = git remote --verbose
116+
alias grst = git restore --staged
117+
alias gsb = git status --short --branch
118+
alias gsh = git show
119+
alias gstd = git stash drop
120+
alias gstl = git stash list
121+
alias gsts = git stash show --patch
122+
alias gstall = git stash --all
123+
alias gsu = git submodule update
124+
alias gsur = git submodule update --recursive
125+
alias gsuri = git submodule update --recursive --init
126+
alias gsw = git switch
127+
alias gswc = git switch --create
128+
alias gtv = git tag
129+
alias gwt = git worktree
130+
alias gwta = git worktree add
131+
alias gwtls = git worktree list
132+
alias gwtrm = git worktree remove
133+
alias gup = git pull --rebase
134+
135+
# Dynamic Git helpers need the current branch or repository root at invocation time.
136+
def --env grt [] {
137+
let root = (do { git rev-parse --show-toplevel } | complete)
138+
if $root.exit_code != 0 {
139+
error make { msg: "grt must run inside a Git worktree" }
140+
}
141+
cd ($root.stdout | str trim)
142+
}
143+
144+
def gpsup [] {
145+
let branch = (git branch --show-current | str trim)
146+
if ($branch | is-empty) {
147+
error make { msg: "gpsup requires a named Git branch" }
148+
}
149+
git push --set-upstream origin $branch
150+
}
151+
70152
def git-clean [] {
71153
let worktree = (do { git rev-parse --is-inside-work-tree } | complete)
72154
if $worktree.exit_code != 0 {
@@ -112,6 +194,102 @@ def git-clean [] {
112194
}
113195
}
114196

197+
# Docker aliases from Oh My Zsh's docker plugin. They assume the Docker CLI
198+
# is connected to the intended Colima context.
199+
alias dbl = docker build
200+
alias dcin = docker container inspect
201+
alias dcls = docker container ls
202+
alias dclsa = docker container ls --all
203+
alias dib = docker image build
204+
alias dii = docker image inspect
205+
alias dils = docker image ls
206+
alias dlo = docker container logs
207+
alias dnc = docker network create
208+
alias dnls = docker network ls
209+
alias dpo = docker container port
210+
alias dps = docker ps
211+
alias dpsa = docker ps --all
212+
alias dpu = docker pull
213+
alias dr = docker container run
214+
alias drit = docker container run --interactive --tty
215+
alias drm = docker container rm
216+
alias dst = docker container start
217+
alias drs = docker container restart
218+
alias dstp = docker container stop
219+
alias dsts = docker stats
220+
alias dtop = docker top
221+
alias dvi = docker volume inspect
222+
alias dvls = docker volume ls
223+
alias dxc = docker container exec
224+
alias dxcit = docker container exec --interactive --tty
225+
226+
# Kubernetes aliases from Oh My Zsh's kubectl plugin. Context-changing and
227+
# destructive delete/restart aliases stay explicit for safety.
228+
alias kaf = kubectl apply --filename
229+
alias kapk = kubectl apply --kustomize
230+
alias keti = kubectl exec --tty --stdin
231+
alias kccc = kubectl config current-context
232+
alias kcgc = kubectl config get-contexts
233+
alias kcuc = kubectl config use-context
234+
alias kge = kubectl get events --sort-by=".lastTimestamp"
235+
alias kgp = kubectl get pods
236+
alias kgpa = kubectl get pods --all-namespaces
237+
alias kgpw = kubectl get pods --watch
238+
alias kgpwide = kubectl get pods --output wide
239+
alias kgs = kubectl get services
240+
alias kgsa = kubectl get services --all-namespaces
241+
alias kgsw = kubectl get services --watch
242+
alias kgns = kubectl get namespaces
243+
alias kgd = kubectl get deployments
244+
alias kgda = kubectl get deployments --all-namespaces
245+
alias kgdw = kubectl get deployments --watch
246+
alias kgdwide = kubectl get deployments --output wide
247+
alias kgno = kubectl get nodes
248+
alias kga = kubectl get all
249+
alias kgaa = kubectl get all --all-namespaces
250+
alias kl = kubectl logs
251+
alias klf = kubectl logs --follow
252+
alias kcp = kubectl cp
253+
alias kpf = kubectl port-forward
254+
255+
# Helm aliases from Oh My Zsh's helm plugin.
256+
alias h = helm
257+
alias hin = helm install
258+
alias hun = helm uninstall
259+
alias hse = helm search
260+
alias hup = helm upgrade
261+
262+
# Terraform-plugin aliases backed by the toolchain this repo installs. The
263+
# wrapper prefers OpenTofu but falls back to Terraform when that is present.
264+
def tf [...args] {
265+
if (which tofu | is-empty) {
266+
^terraform ...$args
267+
} else {
268+
^tofu ...$args
269+
}
270+
}
271+
272+
def tfi [...args] { tf init ...$args }
273+
def tfir [...args] { tf init --reconfigure ...$args }
274+
def tfiu [...args] { tf init --upgrade ...$args }
275+
def tff [...args] { tf fmt ...$args }
276+
def tffr [...args] { tf fmt --recursive ...$args }
277+
def tfp [...args] { tf plan ...$args }
278+
def tfpo [...args] { tf plan --out tfplan ...$args }
279+
def tfa [...args] { tf apply ...$args }
280+
def tfv [...args] { tf validate ...$args }
281+
def tfo [...args] { tf output ...$args }
282+
def tfsh [...args] { tf show ...$args }
283+
def tft [...args] { tf test ...$args }
284+
def tfw [...args] { tf workspace ...$args }
285+
def tfwl [...args] { tf workspace list ...$args }
286+
def tfws [...args] { tf workspace select ...$args }
287+
288+
# Small AWS helpers; Fish/OMZ provide richer profile-switching functions, but
289+
# profile changes are environment mutations and remain explicit in Nu.
290+
alias awsp = aws configure list-profiles
291+
alias awswho = aws sts get-caller-identity
292+
115293
if (($nu.default-config-dir | path join ".api-keys.nu") | path exists) {
116294
source-env ($nu.default-config-dir | path join ".api-keys.nu")
117295
}

0 commit comments

Comments
 (0)