Skip to content

A CLI tool with handy utilities for "experienced" developers and sysadmins - so you don't even have to move a muscle πŸ˜‰.

Notifications You must be signed in to change notification settings

rsmets/bot0x-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bot0x CLI

A Node.js CLI tool with handy utilities for "experienced" developers and sysadmins - so you don't even have to move a muscle πŸ˜‰.

Features

  • bot0x kbp <port> / bot0x killbyport <port>: Kill process by port
  • bot0x gitclean: Clean up merged git branches (except main/master)
  • bot0x flushdns: Flush DNS cache (macOS, Windows, Linux)

Usage

bot0x --help
bot0x kbp 3000
bot0x gitclean
bot0x flushdns

Installation

Run:

npm install -g bot0x
bot0x welcome

Then follow the instructions in the welcome message.

Shell Integration

Bot0x commands fall into two categories:

  1. Shell Environment Commands: Commands that need to modify your current shell environment (like AWS profile switching)
  2. Regular Commands: Commands that don't need to modify your shell environment (like ccio, kbp, etc.)

Setup: Two-step approach

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:

  1. Shell functions for commands that modify your shell environment:

    • awssr <env> - Switch AWS role and context (dev, staging, prod, etc.)
    • awsp <profile> - Switch AWS profile
    • awsdr <role> - Unset AWS credential environment variables
    • awsdrAll - Run awsdr && awsrmfaa && kubectx for all environments
    • awsrmfaa <role> - Assume AWS MFA role automatically
    • awsmfa <profile> - Generate AWS MFA token
  2. Shell aliases for all other commands:

    • These aliases let you run commands like kbp 3000 or gitclean directly in your shell
    • Note: The alias command automatically excludes commands that require eval, so there are no conflicts between the two.

Alternative: Save to a file

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)"

Usage Examples

# 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 8080 instead of bot0x kbp 8080)
    • Shell completion and history for subcommands
    • Feels like a suite of first-class tools
  • How does it work?
    • The built-in alias command emits shell functions for each subcommand, which forward to bot0x.
    • Inspired by the GitHub CLI's alias system (see this blog post).

Note: This is optional. You can always use bot0x <command> as normal.

Development

  • 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

Project Structure

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

Local Development & Testing

To use bot0x globally from any terminal during development, run:

npm link

This 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 test bot0x, kbp, gitclean, etc. from any directory.
  • Changes you make to your code will be reflected immediately (no need to re-link).

License

MIT

About

A CLI tool with handy utilities for "experienced" developers and sysadmins - so you don't even have to move a muscle πŸ˜‰.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published