Name | github-switcher JSON |
Version |
0.1.0
JSON |
| download |
home_page | None |
Summary | Professional CLI tool for managing multiple GitHub identities with wizard-based profile creation and SSH key management |
upload_time | 2025-09-06 11:30:44 |
maintainer | None |
docs_url | None |
author | Mostafa Gamil |
requires_python | >=3.10 |
license | MIT |
keywords |
github
ssh
git
identity
cli
profile
switcher
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# GitHub Switcher
[](https://github.com/mostafagamil/Github-Switcher/actions)
[](https://pypi.org/project/github-switcher/)
[](https://python.org)
[](LICENSE)
**Professional CLI for managing multiple GitHub identities with automated SSH key management and seamless profile switching**
## ✨ Key Features
- 🔐 **Automated SSH Key Management** - Generate, import, and manage SSH keys seamlessly
- ⚡ **Seamless Profile Switching** - Switch Git identities in seconds with intelligent matching
- 🎯 **Interactive Commands** - Smart wizards with case-insensitive profile matching
- 🔍 **SSH Detection** - Automatically detect and integrate existing GitHub SSH setup
- 🌐 **Cross-Platform** - Full support for macOS, Linux, and Windows
- 🏢 **Enterprise-Ready** - Secure, reliable, comprehensively tested
## 📦 Installation
### Recommended: UV (Modern & Fast)
```bash
uv tool install github-switcher
```
*UV provides faster installation, better dependency resolution, and isolated tool management*
### Standard: pip
```bash
pip install github-switcher
```
### macOS/Linux: Homebrew
```bash
brew tap mostafagamil/github-switcher
brew install github-switcher
```
## 🔧 System Requirements
- **Python 3.10+** - Modern Python runtime
- **Git** - Required for SSH operations and profile management
- **macOS**: `xcode-select --install` or `brew install git`
- **Windows**: [Git for Windows](https://git-scm.com/download/win) (includes Git Bash)
- **Linux**: Usually pre-installed (`sudo apt install git` if needed)
- **SSH client** - For secure GitHub connectivity (included with Git)
## 🚀 Quick Start
```bash
# Verify installation
ghsw --version
# Create your first profile (interactive wizard)
ghsw create
# List all profiles
ghsw list
# Switch between profiles
ghsw switch work
ghsw switch personal
# Test SSH connection
ghsw test work
```
## 💻 Interactive Commands
All commands support interactive mode when no arguments are provided:
```bash
# Interactive profile creation - detects existing SSH keys
ghsw create
# Interactive switching - shows numbered profile list
ghsw switch
# 🔧 Select a profile to switch to:
# 1. work - john@company.com 🟢 Active
# 2. personal - john@gmail.com ⚪ Inactive
# 🎯 Enter profile number or name: 2
# Interactive profile management
ghsw delete # Choose from list
ghsw copy-key # Copy SSH public key to clipboard
ghsw test # Test GitHub connection
ghsw regenerate-key # Generate new SSH key
```
## 🔍 SSH Key Intelligence
GitHub Switcher automatically detects your existing SSH setup:
```bash
ghsw detect
# 🔍 Detecting existing GitHub setup...
# ✅ GitHub SSH connection is working
# 🔑 Found 2 SSH key(s):
# ✅ id_ed25519_work (john@company.com) → used by 'work' profile
# ✅ id_ed25519 (john@gmail.com)
# ⚙️ SSH config has 3 GitHub entries
```
**Smart SSH Strategy:**
- **Import Existing Keys** - Reuse and rename your SSH keys (prevents duplicates)
- **Generate New Keys** - Create fresh Ed25519 keys for clean separation
- **Duplicate Prevention** - Never shows already-imported keys
- **Profile Association** - Track which profile uses which SSH key
## 📋 Command Reference
| Command | Description |
|---------|-------------|
| `ghsw create [options]` | Create new profile with interactive wizard |
| `ghsw list` | Show all configured profiles with status |
| `ghsw switch [profile]` | Switch to profile (interactive if no argument) |
| `ghsw current` | Display currently active profile |
| `ghsw delete [profile]` | Remove profile and clean up SSH keys |
| `ghsw copy-key [profile]` | Copy SSH public key to clipboard |
| `ghsw test [profile]` | Test SSH connection to GitHub |
| `ghsw regenerate-key [profile]` | Generate new SSH key for profile |
| `ghsw detect` | Analyze existing GitHub SSH configuration |
## 🏢 Enterprise Features
- **Security Best Practices** - Ed25519 keys, proper file permissions, secure defaults
- **Comprehensive Testing** - 237 tests ensuring reliability across all platforms
- **Error Handling** - Robust error recovery and clear troubleshooting guidance
- **Cross-Platform** - Automated testing on macOS, Linux, and Windows
- **Type Safety** - Full type hints and static analysis validation
- **Professional Documentation** - Complete guides for installation, usage, and troubleshooting
## 📖 Documentation
- [Installation Guide](docs/installation.md) - Comprehensive setup instructions
- [Usage Guide](docs/usage.md) - Complete feature documentation
- [SSH Key Management](docs/existing-ssh-keys.md) - Working with existing SSH keys
- [API Reference](docs/api-reference.md) - Programmatic usage
- [Contributing](docs/contributing.md) - Development and contribution guidelines
- [Security Policy](SECURITY.md) - Vulnerability reporting and security practices
## 🤝 Support & Contributing
- **Issues & Bug Reports** - [GitHub Issues](https://github.com/mostafagamil/Github-Switcher/issues)
- **Feature Requests** - [GitHub Discussions](https://github.com/mostafagamil/Github-Switcher/discussions)
- **Contributing** - See [Contributing Guidelines](docs/contributing.md)
- **Security** - See [Security Policy](SECURITY.md)
## 💡 Example Workflows
### Development Teams
```bash
# Set up work and personal profiles
ghsw create --name work --fullname "John Doe" --email john@company.com
ghsw create --name personal --fullname "John Doe" --email john.personal@gmail.com
# Switch contexts quickly
ghsw switch work # Work on company projects
ghsw switch personal # Contribute to open source
```
### Freelancers
```bash
# Manage multiple clients
ghsw create --name client-a --email john@client-a.com
ghsw create --name client-b --email john@client-b.com
ghsw create --name personal --email john@personal.com
# Quick client switching
ghsw switch client-a # Work on Client A projects
ghsw switch client-b # Switch to Client B work
```
## 📊 Quality Metrics
- **Test Coverage** - Comprehensive test suite with 237 tests
- **Cross-Platform** - Automated CI testing on macOS, Linux, Windows
- **Type Safety** - Full mypy validation with strict settings
- **Code Quality** - Linted with ruff, formatted consistently
- **Security** - Ed25519 keys, proper permissions, input validation
## 🌟 Support the Project
If GitHub Switcher helps improve your workflow, consider supporting its development:
[](https://buymeacoffee.com/mgamil)
Your support helps maintain and enhance GitHub Switcher with new features and improvements!
## 📄 License
MIT License - see [LICENSE](LICENSE) for details.
---
**Made with ❤️ for developers managing multiple GitHub identities**
Raw data
{
"_id": null,
"home_page": null,
"name": "github-switcher",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "github, ssh, git, identity, cli, profile, switcher",
"author": "Mostafa Gamil",
"author_email": "Mostafa Gamil <mostafa_gamil@yahoo.com>",
"download_url": "https://files.pythonhosted.org/packages/dd/bd/77f94621e9393e5631b51283352a8d8eb89c211fb78c56759800bf1b0a22/github_switcher-0.1.0.tar.gz",
"platform": null,
"description": "# GitHub Switcher\n\n[](https://github.com/mostafagamil/Github-Switcher/actions)\n[](https://pypi.org/project/github-switcher/)\n[](https://python.org)\n[](LICENSE)\n\n**Professional CLI for managing multiple GitHub identities with automated SSH key management and seamless profile switching**\n\n## \u2728 Key Features\n\n- \ud83d\udd10 **Automated SSH Key Management** - Generate, import, and manage SSH keys seamlessly\n- \u26a1 **Seamless Profile Switching** - Switch Git identities in seconds with intelligent matching\n- \ud83c\udfaf **Interactive Commands** - Smart wizards with case-insensitive profile matching\n- \ud83d\udd0d **SSH Detection** - Automatically detect and integrate existing GitHub SSH setup\n- \ud83c\udf10 **Cross-Platform** - Full support for macOS, Linux, and Windows\n- \ud83c\udfe2 **Enterprise-Ready** - Secure, reliable, comprehensively tested\n\n## \ud83d\udce6 Installation\n\n### Recommended: UV (Modern & Fast)\n```bash\nuv tool install github-switcher\n```\n*UV provides faster installation, better dependency resolution, and isolated tool management*\n\n### Standard: pip\n```bash\npip install github-switcher\n```\n\n### macOS/Linux: Homebrew\n```bash\nbrew tap mostafagamil/github-switcher\nbrew install github-switcher\n```\n\n## \ud83d\udd27 System Requirements\n\n- **Python 3.10+** - Modern Python runtime\n- **Git** - Required for SSH operations and profile management\n - **macOS**: `xcode-select --install` or `brew install git`\n - **Windows**: [Git for Windows](https://git-scm.com/download/win) (includes Git Bash)\n - **Linux**: Usually pre-installed (`sudo apt install git` if needed)\n- **SSH client** - For secure GitHub connectivity (included with Git)\n\n## \ud83d\ude80 Quick Start\n\n```bash\n# Verify installation\nghsw --version\n\n# Create your first profile (interactive wizard)\nghsw create\n\n# List all profiles\nghsw list\n\n# Switch between profiles\nghsw switch work\nghsw switch personal\n\n# Test SSH connection\nghsw test work\n```\n\n## \ud83d\udcbb Interactive Commands\n\nAll commands support interactive mode when no arguments are provided:\n\n```bash\n# Interactive profile creation - detects existing SSH keys\nghsw create\n\n# Interactive switching - shows numbered profile list\nghsw switch\n# \ud83d\udd27 Select a profile to switch to:\n# 1. work - john@company.com \ud83d\udfe2 Active\n# 2. personal - john@gmail.com \u26aa Inactive\n# \ud83c\udfaf Enter profile number or name: 2\n\n# Interactive profile management\nghsw delete # Choose from list\nghsw copy-key # Copy SSH public key to clipboard\nghsw test # Test GitHub connection\nghsw regenerate-key # Generate new SSH key\n```\n\n## \ud83d\udd0d SSH Key Intelligence\n\nGitHub Switcher automatically detects your existing SSH setup:\n\n```bash\nghsw detect\n# \ud83d\udd0d Detecting existing GitHub setup...\n# \u2705 GitHub SSH connection is working\n# \ud83d\udd11 Found 2 SSH key(s):\n# \u2705 id_ed25519_work (john@company.com) \u2192 used by 'work' profile\n# \u2705 id_ed25519 (john@gmail.com)\n# \u2699\ufe0f SSH config has 3 GitHub entries\n```\n\n**Smart SSH Strategy:**\n- **Import Existing Keys** - Reuse and rename your SSH keys (prevents duplicates)\n- **Generate New Keys** - Create fresh Ed25519 keys for clean separation\n- **Duplicate Prevention** - Never shows already-imported keys\n- **Profile Association** - Track which profile uses which SSH key\n\n## \ud83d\udccb Command Reference\n\n| Command | Description |\n|---------|-------------|\n| `ghsw create [options]` | Create new profile with interactive wizard |\n| `ghsw list` | Show all configured profiles with status |\n| `ghsw switch [profile]` | Switch to profile (interactive if no argument) |\n| `ghsw current` | Display currently active profile |\n| `ghsw delete [profile]` | Remove profile and clean up SSH keys |\n| `ghsw copy-key [profile]` | Copy SSH public key to clipboard |\n| `ghsw test [profile]` | Test SSH connection to GitHub |\n| `ghsw regenerate-key [profile]` | Generate new SSH key for profile |\n| `ghsw detect` | Analyze existing GitHub SSH configuration |\n\n## \ud83c\udfe2 Enterprise Features\n\n- **Security Best Practices** - Ed25519 keys, proper file permissions, secure defaults\n- **Comprehensive Testing** - 237 tests ensuring reliability across all platforms\n- **Error Handling** - Robust error recovery and clear troubleshooting guidance\n- **Cross-Platform** - Automated testing on macOS, Linux, and Windows\n- **Type Safety** - Full type hints and static analysis validation\n- **Professional Documentation** - Complete guides for installation, usage, and troubleshooting\n\n## \ud83d\udcd6 Documentation\n\n- [Installation Guide](docs/installation.md) - Comprehensive setup instructions\n- [Usage Guide](docs/usage.md) - Complete feature documentation\n- [SSH Key Management](docs/existing-ssh-keys.md) - Working with existing SSH keys\n- [API Reference](docs/api-reference.md) - Programmatic usage\n- [Contributing](docs/contributing.md) - Development and contribution guidelines\n- [Security Policy](SECURITY.md) - Vulnerability reporting and security practices\n\n## \ud83e\udd1d Support & Contributing\n\n- **Issues & Bug Reports** - [GitHub Issues](https://github.com/mostafagamil/Github-Switcher/issues)\n- **Feature Requests** - [GitHub Discussions](https://github.com/mostafagamil/Github-Switcher/discussions)\n- **Contributing** - See [Contributing Guidelines](docs/contributing.md)\n- **Security** - See [Security Policy](SECURITY.md)\n\n## \ud83d\udca1 Example Workflows\n\n### Development Teams\n```bash\n# Set up work and personal profiles\nghsw create --name work --fullname \"John Doe\" --email john@company.com\nghsw create --name personal --fullname \"John Doe\" --email john.personal@gmail.com\n\n# Switch contexts quickly\nghsw switch work # Work on company projects\nghsw switch personal # Contribute to open source\n```\n\n### Freelancers\n```bash\n# Manage multiple clients\nghsw create --name client-a --email john@client-a.com\nghsw create --name client-b --email john@client-b.com\nghsw create --name personal --email john@personal.com\n\n# Quick client switching\nghsw switch client-a # Work on Client A projects\nghsw switch client-b # Switch to Client B work\n```\n\n## \ud83d\udcca Quality Metrics\n\n- **Test Coverage** - Comprehensive test suite with 237 tests\n- **Cross-Platform** - Automated CI testing on macOS, Linux, Windows\n- **Type Safety** - Full mypy validation with strict settings\n- **Code Quality** - Linted with ruff, formatted consistently\n- **Security** - Ed25519 keys, proper permissions, input validation\n\n## \ud83c\udf1f Support the Project\n\nIf GitHub Switcher helps improve your workflow, consider supporting its development:\n\n[](https://buymeacoffee.com/mgamil)\n\nYour support helps maintain and enhance GitHub Switcher with new features and improvements!\n\n## \ud83d\udcc4 License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n---\n\n**Made with \u2764\ufe0f for developers managing multiple GitHub identities**",
"bugtrack_url": null,
"license": "MIT",
"summary": "Professional CLI tool for managing multiple GitHub identities with wizard-based profile creation and SSH key management",
"version": "0.1.0",
"project_urls": {
"Changelog": "https://github.com/mostafagamil/Github-Switcher/blob/main/CHANGELOG.md",
"Homepage": "https://github.com/mostafagamil/Github-Switcher",
"Issues": "https://github.com/mostafagamil/Github-Switcher/issues",
"Repository": "https://github.com/mostafagamil/Github-Switcher"
},
"split_keywords": [
"github",
" ssh",
" git",
" identity",
" cli",
" profile",
" switcher"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "fd9fcb59f184698adccf580283486e4453ed2cf169b89e184c955889b3b33336",
"md5": "dde4a67caf2a0edd820c5a1fd16d3ffe",
"sha256": "f0720c168021116bdae5f55f35e3ac18645845f2cd6d11bdbf1bfd75ee4760ce"
},
"downloads": -1,
"filename": "github_switcher-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "dde4a67caf2a0edd820c5a1fd16d3ffe",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 28950,
"upload_time": "2025-09-06T11:30:43",
"upload_time_iso_8601": "2025-09-06T11:30:43.326960Z",
"url": "https://files.pythonhosted.org/packages/fd/9f/cb59f184698adccf580283486e4453ed2cf169b89e184c955889b3b33336/github_switcher-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ddbd77f94621e9393e5631b51283352a8d8eb89c211fb78c56759800bf1b0a22",
"md5": "0084fa0b57042eb54dd13dd75a1bf300",
"sha256": "aa17195aec9470e30f2f2666d0ad7ae685bebe710606a9af09404fa99f764cd6"
},
"downloads": -1,
"filename": "github_switcher-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "0084fa0b57042eb54dd13dd75a1bf300",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 24300,
"upload_time": "2025-09-06T11:30:44",
"upload_time_iso_8601": "2025-09-06T11:30:44.816399Z",
"url": "https://files.pythonhosted.org/packages/dd/bd/77f94621e9393e5631b51283352a8d8eb89c211fb78c56759800bf1b0a22/github_switcher-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-06 11:30:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "mostafagamil",
"github_project": "Github-Switcher",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "github-switcher"
}