ทำ Shell Script แบบ Interactive ให้น่าใช้ด้วย Gum
เพิ่มเมนู input, confirm, spinner, table และ style ให้ Bash script โดยไม่ต้องสร้าง TUI เอง เหมาะกับเครื่องมือภายในทีมที่มนุษย์เป็นผู้เรียกใช้งาน

ภาพรวม
Shell script หลายอันทำงานได้ดี แต่หน้าตามักดูแข็งๆ และใช้งานยากสำหรับคนอื่น 😅
ถ้าต้องให้ผู้ใช้เลือกเมนู พิมพ์ input หรือกดยืนยัน หลายคนต้องเขียน logic เองจน script เริ่มรก
gum คือเครื่องมือจาก Charm ที่ช่วยใส่ UI สวยๆ ให้ shell script ได้ง่ายมาก เช่น choose, input, confirm, spin, table และ style 🍬
use case ที่เหมาะคือทำ script สำหรับทีม เช่นเลือก environment, เลือก service ที่จะ deploy, เขียน commit message หรือ confirm ก่อนลบไฟล์
จาก script ที่ต้องจำ argument ยาวๆ เราสามารถเปลี่ยนเป็น interactive menu ที่มือใหม่ใช้ตามได้ง่ายขึ้น
ข้อดีคือไม่ต้องเขียน TUI เอง ไม่ต้องใช้ภาษาอื่น แค่เรียก gum ใน bash script ก็ทำให้ UX ดีขึ้นมาก 🚀
ตัวอย่างง่ายๆ คือใช้ gum confirm ก่อนรันคำสั่งอันตราย หรือใช้ gum choose ให้เลือก branch/service แทนการพิมพ์ชื่อเอง
แต่ต้องระวังว่า script ที่ต้องรันใน CI หรือ automation อาจไม่เหมาะกับ UI interactive เสมอไป
สรุปคือ gum เหมาะกับ script ที่มนุษย์ต้องกดใช้งานใน terminal และอยากให้ดูเป็นมิตรขึ้นโดยไม่ต้องสร้างแอปใหม่ทั้งตัว 🛠️
ตัวอย่างลองใช้แบบง่ายๆ
gum confirm "Deploy now?" && ./deploy.sh
หรือใช้ gum choose dev staging production เพื่อทำเมนูเลือก environment ใน shell script แบบไม่ต้องเขียน UI เอง
แนวทางนำไปใช้
- นำแนวคิดจากโพสต์นี้ไปทดลองกับงานจริงของคุณ
- แยกเป็นขั้นตอนเล็ก ๆ แล้วทำทีละส่วน
- บันทึกผลลัพธ์และสิ่งที่เรียนรู้เพื่อต่อยอด
สรุป
เพิ่มเมนู input, confirm, spinner, table และ style ให้ Bash script โดยไม่ต้องสร้าง TUI เอง เหมาะกับเครื่องมือภายในทีมที่มนุษย์เป็นผู้เรียกใช้งาน