
## 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>
244 lines
6.4 KiB
Markdown
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
|
|
``` |