nushell-plugins/guides/distribution-system.md
Jesús Pérez d9ef2f0d5b
Some checks failed
Build and Test / Validate Setup (push) Has been cancelled
Build and Test / Build (darwin-amd64) (push) Has been cancelled
Build and Test / Build (darwin-arm64) (push) Has been cancelled
Build and Test / Build (linux-amd64) (push) Has been cancelled
Build and Test / Build (windows-amd64) (push) Has been cancelled
Build and Test / Build (linux-arm64) (push) Has been cancelled
Build and Test / Security Audit (push) Has been cancelled
Build and Test / Package Results (push) Has been cancelled
Build and Test / Quality Gate (push) Has been cancelled
Nightly Build / Check for Changes (push) Has been cancelled
Nightly Build / Validate Setup (push) Has been cancelled
Nightly Build / Nightly Build (darwin-amd64) (push) Has been cancelled
Nightly Build / Nightly Build (darwin-arm64) (push) Has been cancelled
Nightly Build / Nightly Build (linux-amd64) (push) Has been cancelled
Nightly Build / Nightly Build (windows-amd64) (push) Has been cancelled
Nightly Build / Nightly Build (linux-arm64) (push) Has been cancelled
Nightly Build / Create Nightly Pre-release (push) Has been cancelled
Nightly Build / Notify Build Status (push) Has been cancelled
Nightly Build / Nightly Maintenance (push) Has been cancelled
chore: update all plugins to Nushell 0.111.0
- Bump all 18 plugins from 0.110.0 to 0.111.0
  - Update rust-toolchain.toml channel to 1.93.1 (nu 0.111.0 requires ≥1.91.1)

  Fixes:
  - interprocess pin =2.2.x → ^2.3.1 in nu_plugin_mcp, nu_plugin_nats, nu_plugin_typedialog
    (required by nu-plugin-core 0.111.0)
  - nu_plugin_typedialog: BackendType::Web initializer — add open_browser: false field
  - nu_plugin_auth: implement missing user_info_to_value helper referenced in tests

  Scripts:
  - update_all_plugins.nu: fix [package].version update on minor bumps; add [dev-dependencies]
    pass; add nu-plugin-test-support to managed crates
  - download_nushell.nu: rustup override unset before rm -rf on nushell dir replace;
    fix unclosed ) in string interpolation
2026-03-11 03:22:42 +00:00

8.7 KiB

Nushell Distribution System (Streamlined)\n\nVersion: 1.0.0 (Consolidated)\nDate: 2025-10-22\nStatus: Complete and tested\n\n## Overview\n\nThis is a smart, minimal distribution system for Nushell plugins that:\n\n- Installs Nushell binary and/or plugins\n- Automatically discovers available components\n- Provides preset plugin selections (essential, development, full)\n- Supports interactive selection or command-line specification\n- Includes dry-run mode for previewing changes\n- Manages both installation and plugin registration\n\n## Core Components\n\n### 1. Distribution Manifest Generator (scripts/create_distribution_manifest.nu)\n\nPurpose: Auto-generate manifest from actual binaries in distribution\n\nbash\n# Scan current directory for plugins\n./scripts/create_distribution_manifest.nu\n\n# Scan specific directory\n./scripts/create_distribution_manifest.nu /path/to/plugins\n\n# Custom output file\n./scripts/create_distribution_manifest.nu --output manifest.json\n\n\nOutput: DISTRIBUTION_MANIFEST.json\n\njson\n{\n "version": "1.0.0",\n "created": "2025-10-22T10:52:08Z",\n "source_directory": "/path/to/plugins",\n "total_plugins": 13,\n "plugins": [\n {\n "name": "nu_plugin_auth",\n "purpose": "Authentication (JWT, MFA)",\n "path": "/path/to/plugins/nu_plugin_auth",\n "size_bytes": 11846592\n }\n // ... more plugins\n ]\n}\n\n\n### 2. Smart Distribution Installer (scripts/install_from_manifest.nu)\n\nPurpose: Install and register Nushell + plugins based on manifest\n\nbash\n# Interactive menu (prompts for selection)\n./install_from_manifest.nu\n\n# List available plugins\n./install_from_manifest.nu --list\n\n# Install everything\n./install_from_manifest.nu --all\n\n# Use preset (essential, development, full)\n./install_from_manifest.nu --preset essential\n\n# Install specific plugins\n./install_from_manifest.nu --select auth kms orchestrator\n\n# Dry-run (preview without changes)\n./install_from_manifest.nu --all --check\n\n# Install only, skip registration\n./install_from_manifest.nu --all --install-only\n\n# Register only, skip installation\n./install_from_manifest.nu --all --register-only\n\n# Custom manifest location\n./install_from_manifest.nu --manifest /path/to/manifest.json\n\n\n## Usage Workflow\n\n### For Distribution Creators\n\nStep 1: Prepare Distribution Directory\n\nplaintext\ndistribution/\n├── bin/\n│ ├── nu_plugin_auth\n│ ├── nu_plugin_kms\n│ ├── nu_plugin_orchestrator\n│ └── ... (all plugin binaries)\n├── nu (optional - nushell binary)\n└── install_from_manifest.nu (symlink to script)\n\n\nStep 2: Generate Manifest\n\nbash\ncd distribution\n../../scripts/create_distribution_manifest.nu bin --output DISTRIBUTION_MANIFEST.json\n\n\nStep 3: Package for Distribution\n\nbash\ntar -czf nushell-plugins-distribution.tar.gz distribution/\n\n\n### For End Users\n\nStep 1: Extract Distribution\n\nbash\ntar -xzf nushell-plugins-distribution.tar.gz\ncd distribution\n\n\nStep 2: Preview Available Plugins\n\nbash\n./install_from_manifest.nu --list\n\n\nStep 3: Install Preferred Preset\n\nbash\n# Essential plugins (5 core plugins)\n./install_from_manifest.nu --preset essential\n\n# Development plugins (8 plugins)\n./install_from_manifest.nu --preset development\n\n# All plugins\n./install_from_manifest.nu --all\n\n\nStep 4: Verify Installation\n\nbash\nnu -c "plugin list"\n\n\n## Available Presets\n\n### Essential (5 plugins)\n\n- nu_plugin_auth - Authentication (JWT, MFA)\n- nu_plugin_kms - Encryption & KMS\n- nu_plugin_orchestrator - Orchestration operations\n- nu_plugin_kcl - KCL configuration\n- nu_plugin_tera - Template rendering\n\n### Development (8 plugins)\n\nEssential +\n\n- nu_plugin_highlight - Syntax highlighting\n- nu_plugin_image - Image processing\n- nu_plugin_clipboard - Clipboard operations\n\n### Full (All plugins in manifest)\n\nAll available plugins in the distribution\n\n## Installation Modes\n\n| Mode | Command | Behavior |\n|------|---------|----------|\n| Default | No args | Interactive menu |\n| All | --all | Install all plugins |\n| Preset | --preset essential | Use preset selection |\n| Custom | --select auth kms | Select specific plugins |\n| List | --list | Show available plugins |\n| Dry-run | --check | Preview without changes |\n| Install-only | --install-only | Skip registration |\n| Register-only | --register-only | Skip installation |\n\n## Default Behavior\n\nIf no manifest is found, the installer:\n\n1. Scans current directory for plugin binaries (nu_plugin_* pattern)\n2. Detects Nushell binary if present (./nu or ./bin/nu)\n3. Shows interactive menu for selection\n4. Installs and registers as normal\n\nThis allows graceful fallback when manifest isn't available.\n\n## Features\n\n Manifest-Driven: JSON manifest lists all available plugins\n Auto-Detection: Discovers plugins in distribution if no manifest\n Flexible Selection: Presets, specific plugins, or interactive menu\n User Choice: No forced installations\n Safe: Dry-run mode to preview changes\n Separate Modes: Install-only or register-only options\n Clear Logging: Color-coded output at each step\n Smart: Single script handles all scenarios\n Verified: Tested with actual plugin manifests\n\n## Testing\n\nThe installer has been tested with:\n\n- Manifest loading (list mode)\n- Preset selection (essential, development, full)\n- Dry-run mode (--check flag)\n- Full installation flow (with confirmation)\n\nTest Results:\n\nbash\n$ ./install_from_manifest.nu --manifest /tmp/manifest.json --list\n✅ Loaded 13 plugins successfully\n\n$ ./install_from_manifest.nu --manifest /tmp/manifest.json --preset essential --check\n✅ Selected 5 plugins (essential preset)\n✅ DRY RUN - No changes made\n\n$ ./install_from_manifest.nu --manifest /tmp/manifest.json --all --check\n✅ Selected 13 plugins\n✅ DRY RUN - No changes made\n\n\n## File Structure\n\nplaintext\nprovisioning/core/plugins/nushell-plugins/\n├── scripts/\n│ ├── create_distribution_manifest.nu # Generate manifest\n│ ├── install_from_manifest.nu # Main installer\n│ └── ... (other build/distribution scripts)\n├── DISTRIBUTION_INSTALLER_WORKFLOW.md # Complete workflow docs\n├── DISTRIBUTION_SYSTEM.md # This file\n└── README.md # Main project README\n\n\n## Cleanup Summary\n\nConsolidated Files \n\n- Deleted redundant markdown docs (5 files)\n- Deleted redundant installers (3 scripts)\n- Kept single unified installer: install_from_manifest.nu\n- Kept manifest generator: create_distribution_manifest.nu\n- Reduced from 13+ files to 2 core scripts + 1 doc\n\nResult: Clean, minimal, production-ready distribution system\n\n## Example: Complete Distribution Package\n\nplaintext\nnushell-plugins-distribution/\n├── nu # Nushell binary (if included)\n├── nu_plugin_auth # Plugin binaries\n├── nu_plugin_kms\n├── nu_plugin_orchestrator\n├── ... (all other plugins)\n├── DISTRIBUTION_MANIFEST.json # Auto-generated manifest\n├── install_from_manifest.nu # Main installer\n├── README.md # User guide\n└── LICENSE\n\n\nUsers can then:\n\nbash\n./install_from_manifest.nu --preset essential --check # Preview\n./install_from_manifest.nu --preset essential # Install\nnu -c "plugin list" # Verify\n\n\n## Quick Reference\n\n| Task | Command |\n|------|---------|\n| Generate manifest | ./scripts/create_distribution_manifest.nu [path] |\n| List plugins | ./install_from_manifest.nu --list |\n| Preview install | ./install_from_manifest.nu --all --check |\n| Install all | ./install_from_manifest.nu --all |\n| Install preset | ./install_from_manifest.nu --preset essential |\n| Install specific | ./install_from_manifest.nu --select auth kms |\n| Install without register | ./install_from_manifest.nu --all --install-only |\n| Register only | ./install_from_manifest.nu --all --register-only |\n\n## Documentation\n\n- Workflow Guide: DISTRIBUTION_INSTALLER_WORKFLOW.md - Complete step-by-step guide\n- This File: Architecture and features overview\n- Inline Comments: Both scripts are well-commented for maintainability\n\n---\n\nStatus: Production Ready\nTested: All modes verified\nSimplified: Consolidated from 13+ files to 2 core scripts