DEV Community

Rustam
Rustam

Posted on

๐Ÿฆธโ€โ™‚๏ธ Hello โ€” The Interactive CLI Commander

"Because typing the same 15 commands every day is so 2026."

A command-line utility that turns your chaotic terminal sessions into a beautiful, interactive menu. Stop memorizing commands. Start executing like a pro.


๐Ÿš€ What Makes This Tool Special?

Feature What It Does For You
๐ŸŽฏ Zero Memorization Never type kubectl get pods --all-namespaces --context=prod again
โšก Lightning Fast One binary. No dependencies. Runs everywhere.
๐Ÿ”— Command Chaining Execute complex workflows with --exec "1-2-3-4"
๐Ÿ“ Team-Ready Share menu.yml with your team. Onboard new devs in 30 seconds.
๐Ÿ” Env Variables Store secrets safely in env.ini โ€” never hardcode credentials

๐Ÿ“ฆ Installation (30 seconds or less)

Option 1: One-Liner (if binary is hosted)

curl -sSL https://example.com/hello | sudo tee /usr/local/bin/hello && sudo chmod +x /usr/local/bin/hello
Enter fullscreen mode Exit fullscreen mode

Option 2: Build from source

git clone https://github.com/yourrepo/hello
cd hello
go build -o hello main.go
./hello --help
Enter fullscreen mode Exit fullscreen mode

Option 3: Copy & Go

# Anywhere you want:
cp hello ~/hello        # Home folder
cp hello /usr/local/bin/ # Global access (recommended)
Enter fullscreen mode Exit fullscreen mode

๐ŸŽฎ Usage That Will Make You Smile

Interactive Mode โ€” The "I'm Feeling Lazy" Way

# Just run it. The menu will greet you.
./hello

# Using your own config
./hello -c ./deploy_menu.yml
Enter fullscreen mode Exit fullscreen mode

Headless Mode โ€” The "I'm Automating Everything" Way

# Execute a single command
./hello --exec "1"

# Execute a whole pipeline (1 โ†’ 2 โ†’ 3 โ†’ 4)
./hello --exec "1-2-3-4"
Enter fullscreen mode Exit fullscreen mode

Perfect for: CI/CD pipelines, morning standup scripts, and impressing your boss.


๐Ÿ“‚ Example Menu (Your New Best Friend)

items:
  1:
    title: "1. ๐Ÿš€ Deploy to Production"
    commands:
      - "git checkout main"
      - "git pull origin main"
      - "docker build -t myapp:latest ."
      - "docker push myapp:latest"
      - "kubectl rollout restart deployment/myapp"

  2:
    title: "2. ๐Ÿ“Š Check System Health"
    commands:
      - "htop"
      - "df -h"
      - "free -m"
      - "netstat -tulpn | grep LISTEN"

  3:
    title: "3. ๐Ÿ”ฅ Clean Up Docker Garbage"
    commands:
      - "docker system prune -af --volumes"
      - "echo 'โœจ Saved 47 GB of disk space!'"
Enter fullscreen mode Exit fullscreen mode

๐Ÿ† Why Developers Are Switching

"I used to spend 10 minutes every morning running status checks. Now I just type ./hello --exec 2 and grab coffee." โ€” Senior DevOps Engineer

"My junior devs can now deploy to production without breaking things. The menu guides them step by step." โ€” Tech Lead

"I put this in our onboarding guide and new hires are productive on day 1." โ€” Engineering Manager


๐Ÿ”ง Pro Tips for Maximum Swag

  1. Create different menus for different projects:
   ./hello -c ./k8s_menu.yml
   ./hello -c ./aws_menu.yml
   ./hello -c ./db_backup.yml
Enter fullscreen mode Exit fullscreen mode
  1. Add emojis to your menu titles โ€” trust me, it works.

  2. Use environment variables for sensitive data:

   # env.ini
   DB_PASSWORD=supersecret
   AWS_KEY=AKIA...
Enter fullscreen mode Exit fullscreen mode
   commands:
     - "mysql -u root -p%(DB_PASSWORD)s"
Enter fullscreen mode Exit fullscreen mode
  1. Create aliases in your .bashrc:
   alias deploy="./hello -c ./deploy.yml --exec 1-2-3"
   alias health="./hello -c ./health.yml"
   alias backup="./hello -c ./backup.yml"
Enter fullscreen mode Exit fullscreen mode

๐Ÿง  Architecture Philosophy

This tool was built with one principle in mind: "Your terminal should work FOR you, not AGAINST you."

  • Simple YAML config โ€” No need to learn a new DSL
  • Go binary โ€” Fast, portable, dependency-free
  • Chaining support โ€” Complex workflows made simple
  • Error handling โ€” If a command fails, execution stops immediately

๐Ÿ“ Project Structure

.
โ”œโ”€โ”€ hello                 # The binary (your new best friend)
โ”œโ”€โ”€ main.go              # Source code (if you're curious)
โ”œโ”€โ”€ menu/                # Default menu folder
โ”‚   โ””โ”€โ”€ menu.yml         # Your main menu
โ”œโ”€โ”€ env.ini              # Environment variables (optional)
โ””โ”€โ”€ README.md            # This masterpiece
Enter fullscreen mode Exit fullscreen mode

๐Ÿ› ๏ธ Debugging (for the brave)

# Run with Delve debugger
dlv debug --headless --listen=:40000 --api-version=2

# Build with debug symbols
go build -gcflags="all=-N -l" -o hello main.go
Enter fullscreen mode Exit fullscreen mode

๐ŸŽฏ Roadmap (Coming Soon)

  • [ ] Dark mode support (your eyes will thank you)
  • [ ] Command history (see what you ran last week)
  • [ ] Web UI (because why not?)
  • [ ] Plugin system (write your own commands in any language)
  • [ ] AI-powered suggestions (automatically complete your workflows)

โค๏ธ Show Some Love

If this tool saved you time, made you smile, or just looked cool in your terminal:

  • โญ Star this repo โ€” it's like a high-five to the developer
  • ๐Ÿฆ Tweet about it โ€” tag me @hrustbb
  • ๐Ÿ’ฌ Share your menu โ€” inspire others with your setup
  • โ˜• Buy me a coffee โ€” (if you're feeling generous)

๐Ÿ“ฌ Feedback & Contributions

Found a bug? Have a feature request? Want to contribute?

  • Open an issue on GitHub
  • Submit a PR โ€” all contributions welcome!
  • Connect with me on DEV.to

๐Ÿ“„ License

MIT โ€” use it, abuse it, share it, improve it.


Made with โค๏ธ by @hrustbb

"The best CLI tool you've never heard of โ€” until today."


๐ŸŽ‰ Bonus: Quick Start Template

Here's a menu.yml to get you started in 60 seconds:

items:
  1:
    title: "1. ๐Ÿ“ฆ Update system packages"
    commands:
      - "sudo apt update && sudo apt upgrade -y"

  2:
    title: "2. ๐Ÿ” Show disk usage"
    commands:
      - "df -h | grep -v snap"

  3:
    title: "3. ๐Ÿงน Clear system cache"
    commands:
      - "sudo apt autoclean"
      - "sudo apt autoremove -y"

  4:
    title: "4. ๐Ÿ“Š System monitoring dashboard"
    commands:
      - "htop"

  5:
    title: "5. ๐Ÿšช Exit"
    commands:
      - "echo '๐Ÿ‘‹ See you tomorrow!'"
      - "exit 0"
Enter fullscreen mode Exit fullscreen mode

Copy this, save it as menu/menu.yml, and run ./hello. You're now a productivity superhero.


Want to learn more? Check out the full documentation and advanced examples on DEV.to ๐Ÿš€

Top comments (0)