Skip to content

Commit 5a291c3

Browse files
committed
chore: several improvements
chore: wip chore: wip
1 parent f25d60e commit 5a291c3

File tree

9 files changed

+2618
-61
lines changed

9 files changed

+2618
-61
lines changed

README.md

Lines changed: 198 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ A modern, fast alternative to Dependabot and Renovate built for the JavaScript a
2727
- 🎨 **Rich PR Format**: Three separate tables (npm, Launchpad/pkgx, GitHub Actions) with detailed metadata
2828
- ⚙️ **Zero Config**: Works out of the box with sensible defaults
2929
- 🔧 **Highly Configurable**: Customize everything via `buddy-bot.config.ts`
30+
- 🛠️ **Simple Setup Experience**: Renovate-like interactive setup with validation and smart recommendations
31+
- 🔍 **Pre-flight Validation**: Environment checks, conflict detection, and prerequisite validation
32+
- 📊 **Smart Project Analysis**: Automatic project type detection with intelligent recommendations
33+
- 📈 **Progress Tracking**: Visual setup progress with step-by-step guidance and recovery capabilities
34+
- 📋 **Configuration Migration**: Seamless import from Renovate and Dependabot configurations
35+
- 🔌 **Integration Ecosystem**: Extensible plugin system with Slack, Discord, and Jira integrations
3036

3137
## Quick Start
3238

@@ -53,43 +59,93 @@ buddy-bot setup
5359

5460
This comprehensive setup wizard will guide you through configuring automated dependency updates for your project in a Renovate-like experience. The setup process includes:
5561

56-
**🔍 Step 1: Repository Detection**
62+
**🔍 Pre-flight Validation**
63+
- **Environment checks** - Validates git repository, Node.js/Bun installation
64+
- **Conflict detection** - Scans for existing dependency management tools (Renovate, Dependabot)
65+
- **Git configuration** - Ensures proper git user setup
66+
- **GitHub CLI detection** - Suggests helpful tools for authentication
67+
68+
**📊 Smart Project Analysis**
69+
- **Project type detection** - Identifies library, application, monorepo, or unknown projects
70+
- **Package manager detection** - Detects Bun, npm, yarn, pnpm with lock file validation
71+
- **Dependency ecosystem analysis** - Finds pkgx, Launchpad dependency files
72+
- **GitHub Actions discovery** - Scans existing workflows for updates
73+
- **Intelligent recommendations** - Suggests optimal setup based on project characteristics
74+
75+
**📈 Interactive Progress Tracking**
76+
- **Visual progress bar** - Real-time completion percentage with progress indicators
77+
- **Step-by-step guidance** - Clear indication of current and completed steps
78+
- **Time tracking** - Setup duration monitoring
79+
- **Recovery capabilities** - Resume from failures with detailed error reporting
80+
81+
**📋 Step 1: Configuration Migration & Discovery**
82+
- **Tool Detection** - Automatically detects existing Renovate and Dependabot configurations
83+
- **Seamless Migration** - Imports settings, schedules, package rules, and ignore patterns
84+
- **Compatibility Analysis** - Identifies incompatible features and provides alternatives
85+
- **Migration Report** - Detailed summary of migrated settings and confidence levels
86+
87+
**🔌 Step 2: Integration Discovery**
88+
- **Plugin Discovery** - Automatically detects available integrations (Slack, Discord, Jira)
89+
- **Environment Detection** - Scans for webhook URLs, API tokens, and configuration files
90+
- **Plugin Loading** - Enables discovered integrations for setup completion notifications
91+
- **Custom Plugins** - Supports custom plugin definitions in `.buddy/plugins/` directory
92+
93+
**🔍 Step 3: Repository Detection & Validation**
5794
- Automatically detects your GitHub repository from git remote
58-
- Validates repository access and configuration
95+
- **API validation** - Tests repository access and permissions via GitHub API
96+
- **Repository health checks** - Validates issues, permissions, and settings
97+
- **Private repository support** - Enhanced validation for private repositories
5998

60-
**🔑 Step 2: GitHub Token Setup**
99+
**🔑 Step 4: Enhanced Token Setup**
61100
- Guides you through creating a Personal Access Token (PAT)
62-
- Explains required scopes (`repo`, `workflow`) for full functionality
101+
- **Scope validation** - Explains required scopes (`repo`, `workflow`) with examples
102+
- **Token testing** - Validates token permissions before proceeding
63103
- Helps set up repository secrets for enhanced features
64104

65-
**🔧 Step 3: Repository Settings**
105+
**🔧 Step 5: Repository Settings Validation**
66106
- Walks you through GitHub Actions permissions configuration
107+
- **Permission verification** - Tests workflow permissions in real-time
108+
- **Organization settings** - Guidance for organization-level permissions
67109
- Ensures proper workflow permissions for PR creation
68110

69-
**⚙️ Step 4: Workflow Configuration**
70-
Choose from several carefully crafted presets:
111+
**⚙️ Step 6: Intelligent Workflow Configuration**
112+
Choose from several carefully crafted presets with smart recommendations:
71113

72114
- **Standard Setup (Recommended)** - Dashboard updates 3x/week, balanced dependency updates
73115
- **High Frequency** - Check for updates multiple times per day
74116
- **Security Focused** - Frequent patch updates with security-first approach
75117
- **Minimal Updates** - Weekly checks, lower frequency
76118
- **Development/Testing** - Manual triggers + frequent checks for testing
77-
- **Custom Configuration** - Create your own schedule
119+
- **Custom Configuration** - Advanced schedule builder with cron preview
78120

79-
**📝 Step 5: Configuration File Generation**
80-
- Creates `buddy-bot.config.json` with your repository settings
121+
**📝 Step 7: Enhanced Configuration Generation**
122+
- Creates `buddy-bot.config.json` with repository-specific settings
123+
- **Project-aware defaults** - Configuration optimized for detected project type
124+
- **Ecosystem integration** - Includes detected package managers and dependency files
81125
- Includes sensible defaults and customization options
82126

83-
**🔄 Step 6: Workflow Generation**
127+
**🔄 Step 8: Workflow Generation & Validation**
84128
- Generates three core GitHub Actions workflows:
85129
- `buddy-dashboard.yml` - Dependency Dashboard Management
86130
- `buddy-update-check.yml` - Auto-rebase PR checker
87131
- `buddy-update.yml` - Scheduled dependency updates
88-
89-
**🎯 Step 7: Final Instructions**
90-
- Provides clear next steps with git commands
91-
- Links to GitHub settings pages for easy configuration
92-
- Explains token setup and repository permissions
132+
- **YAML validation** - Ensures generated workflows are syntactically correct
133+
- **Security best practices** - Validates token usage and permissions
134+
- **Workflow testing** - Verifies generated workflows meet requirements
135+
136+
**🎯 Step 9: Comprehensive Validation & Instructions**
137+
- **Setup verification** - Validates all generated files and configurations
138+
- **Workflow testing** - Tests generated workflow syntax and requirements
139+
- **Clear next steps** - Git commands and repository setup instructions
140+
- **Documentation links** - Direct links to GitHub settings pages
141+
- **Troubleshooting guide** - Common issues and solutions
142+
143+
**🔌 Step 10: Integration Notifications**
144+
- **Plugin Execution** - Executes loaded integration hooks for setup completion
145+
- **Slack Notifications** - Rich setup completion messages with repository details
146+
- **Discord Embeds** - Colorful setup completion notifications with project information
147+
- **Jira Tickets** - Automatic task creation for tracking setup completion
148+
- **Custom Hooks** - Extensible system for organization-specific integrations
93149

94150
### Command Line Interface
95151

@@ -194,6 +250,132 @@ const config: BuddyBotConfig = {
194250
export default config
195251
```
196252

253+
## Configuration Migration
254+
255+
Buddy Bot can automatically migrate your existing dependency management configurations from Renovate and Dependabot, making the transition seamless.
256+
257+
### Supported Migration Sources
258+
259+
- **Renovate** - `renovate.json`, `.renovaterc`, package.json renovate config
260+
- **Dependabot** - `.github/dependabot.yml`, `.github/dependabot.yaml`
261+
262+
### Migration Process
263+
264+
1. **Automatic Detection** - Scans for existing configuration files
265+
2. **Smart Conversion** - Maps settings to Buddy Bot equivalents
266+
3. **Compatibility Check** - Identifies unsupported features
267+
4. **Migration Report** - Provides detailed conversion summary
268+
269+
```bash
270+
# Migration happens automatically during setup
271+
buddy-bot setup
272+
273+
# Or use programmatically
274+
import { ConfigurationMigrator } from 'buddy-bot/setup'
275+
276+
const migrator = new ConfigurationMigrator()
277+
const tools = await migrator.detectExistingTools()
278+
const result = await migrator.migrateFromRenovate('renovate.json')
279+
```
280+
281+
### Migrated Settings
282+
283+
| Renovate | Dependabot | Buddy Bot | Notes |
284+
|----------|------------|-----------|-------|
285+
| `schedule` | `schedule.interval` | Workflow presets | Mapped to Standard/High-Frequency/Minimal |
286+
| `packageRules` | `ignore` | Package groups & ignore lists | Preserves grouping logic |
287+
| `automerge` | N/A | Auto-merge settings | Includes strategy preferences |
288+
| `assignees`/`reviewers` | N/A | PR configuration | Maintains team assignments |
289+
290+
## Integration Ecosystem
291+
292+
Buddy Bot includes an extensible plugin system that enables integrations with popular collaboration and project management tools.
293+
294+
### Built-in Integrations
295+
296+
#### Slack Integration
297+
```bash
298+
# Set environment variable
299+
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"
300+
301+
# Or create config file
302+
echo "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK" > .buddy/slack-webhook
303+
```
304+
305+
**Features:**
306+
- Rich setup completion notifications
307+
- Repository and project details
308+
- Error notifications for setup failures
309+
- Configurable channel and username
310+
311+
#### Discord Integration
312+
```bash
313+
# Set environment variable
314+
export DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/YOUR/DISCORD/WEBHOOK"
315+
316+
# Or create config file
317+
echo "https://discord.com/api/webhooks/YOUR/DISCORD/WEBHOOK" > .buddy/discord-webhook
318+
```
319+
320+
**Features:**
321+
- Colorful embed notifications
322+
- Project type and package manager details
323+
- Timestamp tracking
324+
- Setup completion confirmations
325+
326+
#### Jira Integration
327+
```bash
328+
# Set environment variables
329+
export JIRA_API_TOKEN="your-jira-api-token"
330+
export JIRA_BASE_URL="https://your-org.atlassian.net"
331+
export JIRA_PROJECT_KEY="BUDDY" # Optional, defaults to BUDDY
332+
```
333+
334+
**Features:**
335+
- Automatic ticket creation for setup completion
336+
- Repository and project context
337+
- Configurable project keys
338+
- Setup tracking and documentation
339+
340+
### Custom Plugins
341+
342+
Create custom integrations by defining plugins in `.buddy/plugins/`:
343+
344+
```json
345+
// .buddy/plugins/custom-integration.json
346+
{
347+
"name": "custom-integration",
348+
"version": "1.0.0",
349+
"enabled": true,
350+
"triggers": [
351+
{ "event": "setup_complete" },
352+
{ "event": "validation_error" }
353+
],
354+
"hooks": [
355+
{
356+
"name": "custom-notification",
357+
"priority": 10,
358+
"async": true,
359+
"handler": "// Custom JavaScript function"
360+
}
361+
],
362+
"configuration": {
363+
"webhook_url": "https://your-custom-webhook.com/notify",
364+
"api_key": "your-api-key"
365+
}
366+
}
367+
```
368+
369+
### Plugin Events
370+
371+
| Event | Description | Context |
372+
|-------|-------------|---------|
373+
| `pre_setup` | Before setup begins | Initial configuration |
374+
| `post_setup` | After setup completes | Full setup context |
375+
| `step_complete` | After each setup step | Step-specific progress |
376+
| `validation_error` | When validation fails | Error details and recovery |
377+
| `setup_complete` | Final setup completion | Complete project context |
378+
197379
### Programmatic Usage
198380
199381
```typescript

0 commit comments

Comments
 (0)