4 poin oleh justn 26 hari lalu | 3 komentar | Bagikan ke WhatsApp

Saya ingin membagikan side project CLI kecil yang saya buat selama beberapa hari.

alias shell itu bagus. Cepat, sederhana, dan terasa alami di tangan.

Tapi saya merasa cara terus menumpuk alias ke dalam .zshrc bukanlah pendekatan yang bertahan lama.

Awalnya tidak masalah.

alias gs='git status -sb'  
alias dc='docker compose'  

Masalahnya, jumlahnya terus bertambah.

alias git, alias docker, alias pnpm, alias ssh, dan alias per proyek menumpuk di satu file, lalu belakangan saya bahkan lupa apa saja yang pernah saya buat.
Padahal alias jelas dibuat untuk produktivitas, tetapi pada titik tertentu malah berubah menjadi tes ingatan.

Hal yang lebih disayangkan adalah shell history.

Perintah dan urutan perintah yang saya ketik berulang kali sebenarnya sudah menumpuk di dalam history. Namun kebanyakan shell membiarkannya hanya sebagai catatan masa lalu.

Karena itu saya membuat ganbatte. Nama binarinya adalah gnb.

ganbatte adalah CLI yang menganalisis shell history untuk merekomendasikan perintah berulang sebagai kandidat alias, dan urutan perintah yang berulang sebagai kandidat workflow.

brew install bssm-oss/tap/ganbatte  
  
gnb suggest   # cari perintah berulang dan kandidat workflow  
gnb migrate   # impor alias shell yang sudah ada  
gnb           # jelajahi di TUI  

Kurang lebih seperti ini contohnya.

=== Alias Suggestions ===  
  1. c = claude  
     Used 5 times · saves ~25 keystrokes  
  
=== Workflow Suggestions ===  
  1. git-add  
     Step 1: git add .  
     Step 2: git commit -m "update"  
     Step 3: git push  
  
Applying all suggestions would save ~89 keystrokes based on your history.  

Kalau Atuin unggul dalam mengingat “apa yang saya ketik”, maka ganbatte lebih dekat ke alat yang mengubah “apa yang saya ketik berulang kali” menjadi perintah yang bisa terus dipakai.

Alias yang sudah ada juga bisa diimpor.

gnb migrate  

Jika dijalankan tanpa argumen, Anda bisa mencari dan menjalankan alias serta workflow di TUI.

gnb  

Anda bisa memisahkan alias global dan .ganbatte.toml per proyek, dan juga menambahkan prompt konfirmasi untuk perintah berbahaya.

[alias.nuke]  
cmd = "git reset --hard HEAD"  
confirm = true  

Hal pentingnya adalah semuanya berjalan secara lokal.

Shell history maupun track log tidak dikirim ke server. Tidak ada telemetry, akun, cloud sync, maupun pembuatan perintah dengan AI.

Ini masih side project yang kecil dan agak kasar, tetapi saya membagikannya karena rasanya manfaatnya akan langsung terasa bagi siapa pun yang setiap hari berulang kali mengetik perintah yang sama di terminal.

GitHub: https://github.com/bssm-oss/ganbatte

3 komentar

 
recast7838 19 hari lalu

Terima kasih

 
runableapp 26 hari lalu

Idenya bagus.

 
justn 25 hari lalu

Terima kasih