Jesús Pérez b99dcc83c3 feat: major repository modernization and tracking cleanup
## Summary

Comprehensive repository cleanup focusing on plugin dependency management, documentation improvements, and git tracking optimization.

## Key Changes

### 🔧 Core Infrastructure
- Synchronized all nu-* dependencies across plugins for version consistency
- Enhanced upstream tracking and automation systems
- Removed nushell directory from git tracking for cleaner repository management

### 📚 Documentation
- Significantly expanded README.md with comprehensive development guides
- Added detailed workflow documentation and command references
- Improved plugin collection overview and usage examples

### 🧹 Repository Cleanup
- Removed legacy bash scripts (build-all.sh, collect-install.sh, make_plugin.sh)
- Streamlined automation through unified justfile and nushell script approach
- Updated .gitignore with nushell directory and archive patterns
- Removed nushell directory from git tracking to prevent unwanted changes

### 🔌 Plugin Updates
- **nu_plugin_image**: Major refactoring with modular architecture improvements
- **nu_plugin_hashes**: Enhanced functionality and build system improvements
- **nu_plugin_highlight**: Updated for new plugin API compatibility
- **nu_plugin_clipboard**: Dependency synchronization
- **nu_plugin_desktop_notifications**: Version alignment
- **nu_plugin_port_extension & nu_plugin_qr_maker**: Consistency updates
- **nu_plugin_kcl & nu_plugin_tera**: Submodule synchronization

### 🏗️ Git Tracking Optimization
- Removed nushell directory from version control for cleaner repository management
- Added comprehensive .gitignore patterns for build artifacts and archives

## Statistics
- 2,082 files changed
- 2,373 insertions, 339,936 deletions
- Net reduction of 337,563 lines (primarily from removing nushell directory tracking)

## Benefits
- Complete version consistency across all plugins
- Cleaner repository with optimized git tracking
- Improved developer experience with streamlined workflows
- Enhanced documentation and automation
- Reduced repository size and complexity

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-20 15:18:58 +01:00

244 lines
6.4 KiB
Markdown

# Nushell Plugin Upstream Tracking System
This system provides automated tracking and management of upstream changes for nushell plugins while preserving your local nu_* dependency modifications.
## 🚀 Quick Start
```bash
# Check status of all plugins
./sh/plugin_status.sh
# Check upstream changes for all plugins
./sh/check_upstream.sh
# Check specific plugin only
./sh/check_upstream.sh --plugin nu_plugin_highlight
# Merge all pending plugins
./sh/safe_merge_upstream.sh --all
```
## 📋 Supported Operations
### ✅ **For ALL Plugins**
```bash
# Check upstream changes for ALL plugins
./sh/check_upstream.sh
nu nu/check_upstream_changes.nu
# Show status of ALL plugins
./sh/plugin_status.sh
nu nu/plugin_status.nu
# Merge ALL pending plugins
./sh/safe_merge_upstream.sh --all
nu nu/safe_merge_upstream.nu --all
```
### ✅ **For ONE Specific Plugin**
```bash
# Check upstream for ONE plugin
./sh/check_upstream.sh --plugin nu_plugin_highlight
nu nu/check_upstream_changes.nu --plugin nu_plugin_highlight
# Preview merge for ONE plugin
./sh/safe_merge_upstream.sh --preview nu_plugin_highlight
nu nu/safe_merge_upstream.nu --preview nu_plugin_highlight
# Merge ONE plugin
./sh/safe_merge_upstream.sh nu_plugin_highlight
nu nu/safe_merge_upstream.nu nu_plugin_highlight
```
### ✅ **For SEVERAL Plugins** (multiple ways)
#### Method 1: Run multiple commands
```bash
# Check several plugins individually
./sh/check_upstream.sh --plugin nu_plugin_highlight
./sh/check_upstream.sh --plugin nu_plugin_clipboard
./sh/check_upstream.sh --plugin nu_plugin_tera
# Merge several plugins individually
./sh/safe_merge_upstream.sh nu_plugin_highlight
./sh/safe_merge_upstream.sh nu_plugin_clipboard
./sh/safe_merge_upstream.sh nu_plugin_tera
```
#### Method 2: Use shell scripting
```bash
# Check multiple plugins in a loop
for plugin in nu_plugin_highlight nu_plugin_clipboard nu_plugin_tera; do
./sh/check_upstream.sh --plugin $plugin
done
# Merge multiple specific plugins
for plugin in nu_plugin_highlight nu_plugin_clipboard; do
./sh/safe_merge_upstream.sh $plugin
done
```
#### Method 3: Use the "pending" status to target several
```bash
# First, check all to mark them as pending
./sh/check_upstream.sh
# Then merge all pending ones (effectively several plugins)
./sh/safe_merge_upstream.sh --all
```
## 🔧 System Components
### Core Files
- `plugin_registry.toml` - Central configuration and status tracking
- `nu/lib/cargo_toml_diff.nu` - Cargo.toml analysis library
- `nu/check_upstream_changes.nu` - Main upstream checker with auto-OK logic
- `nu/plugin_status.nu` - Status dashboard and management
- `nu/safe_merge_upstream.nu` - Safe merge with rollback capability
### Shell Wrappers (for compatibility)
- `sh/check_upstream.sh` - Shell wrapper for upstream checking
- `sh/plugin_status.sh` - Shell wrapper for status dashboard
- `sh/safe_merge_upstream.sh` - Shell wrapper for safe merging
## 🎯 Auto-OK Logic
The system automatically marks plugins as "OK" when:
- ✅ Only nu_* dependencies changed (nu-plugin, nu-protocol, etc.)
- ✅ No source code changes (.rs files)
- ✅ No other dependency changes
- ✅ Plugin has `auto_ok_on_nu_deps_only = true` in registry
## 📊 Plugin Status Types
| Status | Emoji | Description |
|--------|-------|-------------|
| `ok` | ✅ | Synchronized with upstream |
| `pending` | ⚠️ | Changes detected, needs review |
| `error` | ❌ | Error during checking/merging |
| `conflict` | 🔥 | Merge conflicts detected |
| `unknown` | ❓ | Not yet checked |
| `local_only` | 🏠 | No upstream repository |
## 💡 Usage Examples
### Daily Workflow
```bash
# 1. Check all plugins for updates
./sh/check_upstream.sh
# 2. See what needs attention
./sh/plugin_status.sh attention
# 3. Merge safe updates automatically
./sh/safe_merge_upstream.sh --all
# 4. Review any remaining pending plugins manually
./sh/plugin_status.sh
```
### Specific Plugin Workflow
```bash
# 1. Check one plugin
./sh/check_upstream.sh --plugin nu_plugin_highlight
# 2. Preview what would change
./sh/safe_merge_upstream.sh --preview nu_plugin_highlight
# 3. Merge if acceptable
./sh/safe_merge_upstream.sh nu_plugin_highlight
```
### Batch Processing Several Plugins
```bash
# Define plugins to process
PLUGINS="nu_plugin_highlight nu_plugin_clipboard nu_plugin_tera"
# Check them all
for plugin in $PLUGINS; do
echo "Checking $plugin..."
./sh/check_upstream.sh --plugin $plugin
done
# Show status
./sh/plugin_status.sh
# Merge pending ones
./sh/safe_merge_upstream.sh --all
```
## 🛡️ Safety Features
- **Automatic backups** before any merge
- **Temporary branch testing** before applying changes
- **Rollback capability** if compilation fails
- **Preserves local nu_* versions** during merge
- **Never auto-merges** - only auto-marks as OK
- **Test compilation and tests** after merge
## 🔄 Integration with Existing Scripts
The system integrates with your existing `update_nu_versions.sh`:
```bash
# 1. Check upstream first
./sh/check_upstream.sh
# 2. Update local nu versions
./sh/update_nu_versions.sh
# 3. Check status after update
./sh/plugin_status.sh
```
## 📁 File Structure
```
scripts/
├── plugin_registry.toml # Central registry
├── nu/ # Nushell scripts
│ ├── lib/
│ │ └── cargo_toml_diff.nu # Analysis library
│ ├── check_upstream_changes.nu # Main checker
│ ├── plugin_status.nu # Status dashboard
│ └── safe_merge_upstream.nu # Safe merger
└── sh/ # Shell wrappers
├── check_upstream.sh # Check wrapper
├── plugin_status.sh # Status wrapper
└── safe_merge_upstream.sh # Merge wrapper
```
## ⚙️ Configuration
Edit `plugin_registry.toml` to:
- Add new plugins
- Configure upstream URLs
- Enable/disable auto-OK behavior
- Manage nu_* dependency list
## 🚨 Troubleshooting
### If nushell is not found:
```bash
# Install nushell first
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install nu
```
### If plugins fail to merge:
```bash
# Check individual plugin status
./sh/plugin_status.sh
# Preview changes first
./sh/safe_merge_upstream.sh --preview PLUGIN_NAME
# Force merge if needed
./sh/safe_merge_upstream.sh --force PLUGIN_NAME
```
### If registry gets corrupted:
```bash
# Backup exists at plugin_registry.toml.backup
mv plugin_registry.toml.backup plugin_registry.toml
```