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

11 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

From NPM:

npm install -g bot0x
bot0x welcome

For local development:

npm link

Shell Alias Integration (Advanced)

You can enable first-class shell aliases for all your bot0x commands β€” just like the original github-copilot-cli, which this project drew inspiration from β€” using the built-in alias command.

To make aliases available in every shell session, add this line to your .zshrc, .bashrc, or similar shell profile:

# Enable bot0x subcommands as top-level shell commands (e.g. 'kbp', 'gitclean', 'flushdns')
eval "$(bot0x alias -- "$0")"

This will let you run kbp 3000 or gitclean directly in your shell, as if they were standalone commands, while still using the single bot0x binary under the hood.

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, including your new ccio command for opening CircleCI.

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
awssr dev
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

Project Structure

bot0x/
β”œβ”€β”€ bin/index.js         # CLI entry point
β”œβ”€β”€ lib/commands/
β”‚   β”œβ”€β”€ killbyport.js
β”‚   β”œβ”€β”€ gitclean.js
β”‚   └── flushdns.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