8.7 KiB
8.7 KiB
🚀 Interactive GitHub User Removal Script
An intuitive, guided script that walks you through the process of removing users from GitHub repositories with a beautiful interactive interface.
✨ Features
🎯 Interactive Experience
- Beautiful Welcome Screen with ASCII art
- Step-by-step Guided Process - no command line arguments needed
- Smart Input Validation with helpful error messages
- Confirmation Prompts to prevent accidental operations
- Real-time Progress Updates with visual progress bars
🛡️ Safety Features
- Dry Run Mode (recommended first run) - preview changes without executing
- Multiple Confirmation Steps for destructive operations
- Token Validation before proceeding
- Pattern Preview to show what repositories will match
🎨 User Interface
- Color-coded Output for easy reading
- Emoji Icons for visual clarity
- Formatted Headers and sections
- Clear Success/Error Messages
📋 Requirements
bash(version 4.0+)curljq- Valid GitHub Personal Access Token with
repoandadmin:orgpermissions
🚀 Usage
Simply run the script - no command line arguments needed:
./remove_user_guided.sh
The script will guide you through each step:
1. 🔑 GitHub Authentication
🔑 GitHub Authentication
============================================================
Please provide your GitHub Personal Access Token:
💡 The token should have 'repo' and 'admin:org' permissions
💡 You can create one at: https://github.com/settings/tokens
🔐 Enter your GitHub token: [hidden input]
2. 👤 Target Organization/User
👤 Target Organization/User
============================================================
Enter the GitHub username or organization name:
💡 This is where we'll look for repositories
💡 Examples: 'mycompany', 'john-doe', 'my-organization'
🏢 Organization/Username:
3. 🎯 User to Remove
🎯 User to Remove
============================================================
Enter the username you want to remove from repositories:
💡 This user will be removed as a collaborator from matching repositories
💡 They will lose access to private repositories (if applicable)
👤 Username to remove:
4. 📁 Repository Filter
📁 Repository Filter
============================================================
Enter a repository name pattern to filter repositories:
💡 Pattern examples:
• '*' - All repositories
• 'myproject-' - Repos starting with 'myproject-'
• '*api*' - Repos containing 'api'
• 'web-app' - Repos starting with 'web-app'
🔍 Repository pattern:
5. ⚙️ Operation Options
⚙️ Operation Options
============================================================
Choose your operation mode:
1) 🔍 Dry Run - Preview what would be done (Recommended)
2) 🚀 Execute - Perform the actual removal
Select option (1 or 2):
6. 📋 Final Summary
📋 Operation Summary
============================================================
Configuration:
🏢 Organization/User: myorg
👤 User to remove: olduser
🔍 Repository pattern: project-*
⚙️ Mode: Dry Run
📝 Logging: Standard
Ready to proceed? (yes/no):
🎭 Interactive Flow Example
Here's what a complete session looks like:
╔══════════════════════════════════════════════════════════╗
║ ║
║ 🚀 GitHub User Removal Tool 🚀 ║
║ ║
║ Remove users from repositories with ease! ║
║ ║
╚══════════════════════════════════════════════════════════╝
ℹ️ Welcome to the Interactive GitHub User Removal Script!
🔑 GitHub Authentication
============================================================
[Token input and validation...]
👤 Target Organization/User
============================================================
[Organization selection...]
🎯 User to Remove
============================================================
[User selection with confirmation...]
📁 Repository Filter
============================================================
[Pattern selection with preview...]
⚙️ Operation Options
============================================================
[Mode selection...]
📋 Operation Summary
============================================================
[Final confirmation...]
🚀 Processing Repositories
============================================================
ℹ️ Discovering repositories for myorg...
✅ Found 25 repositories
ℹ️ Filtering repositories by pattern 'project-*'...
✅ Found 8 repositories matching pattern 'project-*'
ℹ️ Processing repositories...
Progress: [100%] 8/8 repositories processed
[DRY RUN] Would remove olduser from myorg/project-api
[DRY RUN] Would remove olduser from myorg/project-web
🎉 Operation Complete
============================================================
📊 Statistics:
📁 Repositories scanned: 25
🔍 Repositories matching pattern: 8
👤 Repositories where user was collaborator: 2
✅ Successful removals: 0
ℹ️ Already removed: 0
❌ Failed removals: 0
⚠️ This was a dry run - no actual changes were made
💡 To perform the actual removal, run the script again and select 'Execute' mode
🙏 Thank you for using the GitHub User Removal Tool!
🛡️ Safety Features in Detail
1. Token Validation
- Validates GitHub token before any operations
- Shows authenticated username for confirmation
- Provides clear error messages for invalid tokens
2. Input Validation
- Validates username/organization formats
- Checks repository pattern syntax
- Provides helpful suggestions for corrections
3. Confirmation Steps
- Confirms user to be removed
- Confirms repository pattern understanding
- Requires explicit "YES" for destructive operations
4. Dry Run Mode (Recommended)
- Shows exactly what would be done
- No actual changes made
- Perfect for testing and verification
5. Pattern Preview
- Shows what the pattern will match before execution
- Examples: "This will match repositories starting with: project-"
- Helps prevent unintended scope
🔧 Repository Patterns
| Pattern | What it Matches | Examples |
|---|---|---|
* |
All repositories | All repos in the org/user |
bytelyst- |
Repos starting with 'bytelyst-' | bytelyst-web, bytelyst-api, bytelyst-mobile |
*api* |
Repos containing 'api' | web-api, user-api-v2, api-gateway |
web-* |
Repos starting with 'web-' | web-frontend, web-backend, web-app |
*-service |
Repos ending with '-service' | user-service, auth-service |
🎨 Color Coding
The script uses intuitive color coding:
- 🔵 Blue: Informational messages and prompts
- 🟢 Green: Success messages and confirmations
- 🟡 Yellow: Warnings and important notices
- 🔴 Red: Errors and failures
- 🟣 Purple: Section headers
- 🟦 Cyan: Progress updates and statistics
🚨 Important Notes
- Always start with Dry Run mode to preview changes
- Double-check the user to remove - there's no undo!
- Verify repository patterns match your intentions
- Ensure your token has sufficient permissions
- Users will lose access to private repositories immediately
💡 Tips for Best Experience
- Have your GitHub token ready before starting
- Know the exact username you want to remove
- Think about the repository pattern beforehand
- Use Dry Run first to verify everything looks correct
- Keep the terminal window large enough for the interface
🔗 Quick Start Guide
- Prepare: Get your GitHub token with proper permissions
- Run: Execute
./remove_user_guided.sh - Follow: The interactive prompts step by step
- Preview: Always do a dry run first
- Execute: Run again in execute mode if satisfied
⚡ Keyboard Shortcuts
Ctrl+C: Cancel operation at any timeEnter: Confirm current input- Arrow keys work in most terminals for command history
🆘 Need Help?
The script provides comprehensive help at each step:
- Clear explanations for each input
- Examples for common patterns
- Helpful error messages
- Recovery suggestions
Ready to clean up your repositories? Just run ./remove_user_guided.sh and let the script guide you! 🚀