A Node.js CLI tool with handy utilities for "experienced" developers and sysadmins - so you don't even have to move a muscle π.
bot0x kbp <port>/bot0x killbyport <port>: Kill process by portbot0x gitclean: Clean up merged git branches (except main/master)bot0x flushdns: Flush DNS cache (macOS, Windows, Linux)
bot0x --help
bot0x kbp 3000
bot0x gitclean
bot0x flushdnsRun:
npm install -g bot0x
bot0x welcomeThen follow the instructions in the welcome message.
Bot0x commands fall into two categories:
- Shell Environment Commands: Commands that need to modify your current shell environment (like AWS profile switching)
- Regular Commands: Commands that don't need to modify your shell environment (like
ccio,kbp, etc.)
Add both of these to your .zshrc or .bashrc:
# 1. Set up commands that modify your shell environment
eval "$(bot0x shellScript --print)"
# 2. Set up all other commands as shell aliases
eval "$(bot0x alias)"This creates:
-
Shell functions for commands that modify your shell environment:
awssr <env>- Switch AWS role and context (dev, staging, prod, etc.)awsp <profile>- Switch AWS profileawsdr <role>- Unset AWS credential environment variablesawsdrAll- Run awsdr && awsrmfaa && kubectx for all environmentsawsrmfaa <role>- Assume AWS MFA role automaticallyawsmfa <profile>- Generate AWS MFA token
-
Shell aliases for all other commands:
- These aliases let you run commands like
kbp 3000orgitcleandirectly in your shell - Note: The
aliascommand automatically excludes commands that requireeval, so there are no conflicts between the two.
- These aliases let you run commands like
If you prefer, you can save the shell environment functions to a file:
# Save the shell functions to a file
bot0x shellScript --print > ~/.bot0x-env.sh
# Then in your .zshrc or .bashrc:
source ~/.bot0x-env.sh
eval "$(bot0x alias)"# Use shell functions for environment commands
awsrda
awsp default-root
# Use regular aliases for other commands
ccio
kbp 3000
gitclean- Why?
- Faster workflows (type
kbp 8080instead ofbot0x kbp 8080) - Shell completion and history for subcommands
- Feels like a suite of first-class tools
- Faster workflows (type
- How does it work?
- The built-in
aliascommand emits shell functions for each subcommand, which forward tobot0x. - Inspired by the GitHub CLI's alias system (see this blog post).
- The built-in
Note: This is optional. You can always use
bot0x <command>as normal.
- Each command lives in its own module in
lib/commands/ - Uses commander for CLI parsing
- Uses shelljs for shell commands
- Uses chalk for colorful output
- Uses inquirer for interactive prompts
bot0x/
βββ bin/index.js # CLI entry point
βββ bot0x.sh # Shell script for environment-modifying commands
βββ lib/
β βββ commands/ # CLI commands
β β βββ alias.js
β β βββ gitclean.js
β β βββ gitreset.js
β β βββ killbyport.js
β β βββ kubectlGet*.js
β β βββ shellScript.js
β β βββ ... (30+ commands)
β βββ utils/ # Shared utilities
β βββ config.js
β βββ logger.js
β βββ secretStore.js
βββ package.json
βββ README.md
To use bot0x globally from any terminal during development, run:
npm linkThis symlinks your project as a global CLI, so you can run bot0x and all its subcommands from anywhere. This is also required for the alias integration to work as expected.
- After running
npm link, you can testbot0x,kbp,gitclean, etc. from any directory. - Changes you make to your code will be reflected immediately (no need to re-link).
MIT