417 lines
12 KiB
Plaintext
Raw Normal View History

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 19:02:28 +01:00
# Quality Assurance Module - Testing, Linting, and Code Quality
# Commands for ensuring code quality, running tests, and maintaining standards
# 🧪 TESTING COMMANDS
# Run cargo check on all plugins
[no-cd]
check:
@echo "🔍 Running cargo check on all plugins..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Checking $$plugin..."; \
cd "$$plugin" && cargo check && cd ..; \
fi; \
done
# Run cargo test on all plugins
[no-cd]
test:
@echo "🧪 Running tests on all plugins..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Testing $$plugin..."; \
cd "$$plugin" && cargo test && cd ..; \
fi; \
done
# Run tests with verbose output
[no-cd]
test-verbose:
@echo "🧪 Running tests (verbose)..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Testing $$plugin..."; \
cd "$$plugin" && cargo test -- --nocapture && cd ..; \
fi; \
done
# Run tests in parallel
[no-cd]
test-parallel:
@echo "⚡ Running tests in parallel..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Testing $$plugin..."; \
cd "$$plugin" && cargo test --jobs 8 && cd ..; \
fi; \
done
# Test specific plugin
[no-cd]
test-plugin PLUGIN:
@echo "🧪 Testing {{PLUGIN}}..."
@cd {{PLUGIN}} && cargo test
# Run integration tests
[no-cd]
test-integration:
@echo "🔗 Running integration tests..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Integration testing $$plugin..."; \
cd "$$plugin" && cargo test --test integration 2>/dev/null || echo "No integration tests for $$plugin" && cd ..; \
fi; \
done
# Run doc tests
[no-cd]
test-docs:
@echo "📖 Running documentation tests..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Doc testing $$plugin..."; \
cd "$$plugin" && cargo test --doc && cd ..; \
fi; \
done
# 📏 LINTING COMMANDS
# Run cargo clippy on all plugins
[no-cd]
lint:
@echo "📏 Running clippy on all plugins..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Linting $$plugin..."; \
cd "$$plugin" && cargo clippy -- -D warnings && cd ..; \
fi; \
done
# Run clippy with additional lints
[no-cd]
lint-pedantic:
@echo "📏 Running pedantic clippy..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Pedantic linting $$plugin..."; \
cd "$$plugin" && cargo clippy -- -W clippy::pedantic -D warnings && cd ..; \
fi; \
done
# Lint specific plugin
[no-cd]
lint-plugin PLUGIN:
@echo "📏 Linting {{PLUGIN}}..."
@cd {{PLUGIN}} && cargo clippy -- -D warnings
# Fix lint issues automatically
[no-cd]
lint-fix:
@echo "🔧 Fixing lint issues automatically..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Fixing $$plugin..."; \
cd "$$plugin" && cargo clippy --fix --allow-dirty --allow-staged && cd ..; \
fi; \
done
# 🎨 FORMATTING COMMANDS
# Format all Rust code
[no-cd]
fmt:
@echo "🎨 Formatting Rust code..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Formatting $$plugin..."; \
cd "$$plugin" && cargo fmt && cd ..; \
fi; \
done
# Check formatting without making changes
[no-cd]
fmt-check:
@echo "🎨 Checking code formatting..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Checking format of $$plugin..."; \
cd "$$plugin" && cargo fmt -- --check && cd ..; \
fi; \
done
# Format specific plugin
[no-cd]
fmt-plugin PLUGIN:
@echo "🎨 Formatting {{PLUGIN}}..."
@cd {{PLUGIN}} && cargo fmt
# Format with custom configuration
[no-cd]
fmt-custom CONFIG:
@echo "🎨 Formatting with custom config: {{CONFIG}}..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Formatting $$plugin..."; \
cd "$$plugin" && cargo fmt --config {{CONFIG}} && cd ..; \
fi; \
done
# 🔒 SECURITY COMMANDS
# Run cargo audit on all plugins
[no-cd]
audit:
@echo "🔒 Running security audit..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Auditing $$plugin..."; \
cd "$$plugin" && cargo audit && cd ..; \
fi; \
done
# Audit specific plugin
[no-cd]
audit-plugin PLUGIN:
@echo "🔒 Auditing {{PLUGIN}}..."
@cd {{PLUGIN}} && cargo audit
# Check for outdated dependencies
[no-cd]
audit-outdated:
@echo "📅 Checking for outdated dependencies..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Checking $$plugin..."; \
cd "$$plugin" && cargo outdated || echo "cargo-outdated not available" && cd ..; \
fi; \
done
# Generate dependency report
[no-cd]
audit-deps:
@echo "📋 Generating dependency report..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "=== $$plugin ==="; \
cd "$$plugin" && cargo tree --depth 1 && cd ..; \
echo ""; \
fi; \
done
# 📊 BENCHMARKING COMMANDS
# Run benchmarks on all plugins
[no-cd]
bench:
@echo "📊 Running benchmarks..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Benchmarking $$plugin..."; \
cd "$$plugin" && cargo bench 2>/dev/null || echo "No benchmarks for $$plugin" && cd ..; \
fi; \
done
# Benchmark specific plugin
[no-cd]
bench-plugin PLUGIN:
@echo "📊 Benchmarking {{PLUGIN}}..."
@cd {{PLUGIN}} && cargo bench
# Run performance tests
[no-cd]
perf-test:
@echo "⚡ Running performance tests..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Performance testing $$plugin..."; \
cd "$$plugin" && cargo test --release perf 2>/dev/null || echo "No perf tests for $$plugin" && cd ..; \
fi; \
done
# 📚 DOCUMENTATION COMMANDS
# Generate documentation for all plugins
[no-cd]
docs:
@echo "📚 Generating documentation..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Generating docs for $$plugin..."; \
cd "$$plugin" && cargo doc --no-deps && cd ..; \
fi; \
done
# Open documentation in browser
[no-cd]
docs-open PLUGIN:
@echo "📖 Opening documentation for {{PLUGIN}}..."
@cd {{PLUGIN}} && cargo doc --open
# Generate documentation with private items
[no-cd]
docs-private:
@echo "📚 Generating documentation (including private)..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Generating docs for $$plugin..."; \
cd "$$plugin" && cargo doc --no-deps --document-private-items && cd ..; \
fi; \
done
# Check documentation links
[no-cd]
docs-check:
@echo "🔗 Checking documentation links..."
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo "Checking docs for $$plugin..."; \
cd "$$plugin" && cargo doc --no-deps 2>&1 | grep -i "warning\|error" || echo "✅ OK" && cd ..; \
fi; \
done
# 🔄 WORKFLOW COMMANDS
# Complete quality check workflow
[no-cd]
qa-flow:
@echo "✨ Running complete quality check workflow..."
@just validate-nushell
@just fmt-check
@just lint
@just test
@just audit
# Quick quality check
[no-cd]
qa-quick:
@echo "⚡ Running quick quality checks..."
@just fmt-check
@just check
@just lint
# Pre-commit checks
[no-cd]
qa-pre-commit:
@echo "🔍 Running pre-commit checks..."
@just fmt-check
@just lint
@just test
# CI simulation
[no-cd]
qa-ci:
@echo "🤖 Simulating CI workflow..."
@just validate-nushell
@just fmt-check
@just lint
@just test
@just audit
@echo "✅ All CI checks passed!"
# Full quality suite
[no-cd]
qa-full:
@echo "🎯 Running full quality suite..."
@just fmt-check
@just lint-pedantic
@just test-verbose
@just test-docs
@just audit
@just docs-check
@just bench
# 📊 QUALITY INFORMATION
# Show quality metrics
[no-cd]
qa-metrics:
@echo "📊 Quality Metrics:"
@echo "=================="
@echo ""
@echo "Code Coverage:"
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo -n " $$plugin: "; \
cd "$$plugin" && cargo tarpaulin --skip-clean --out Stdout 2>/dev/null | grep -o "[0-9]*\.[0-9]*%" | tail -1 || echo "Not available" && cd ..; \
fi; \
done
@echo ""
@echo "Lines of Code:"
@find nu_plugin_*/src -name "*.rs" -exec wc -l {} + | tail -1 | awk '{print " Total: " $1 " lines"}'
# Show test statistics
[no-cd]
qa-stats:
@echo "📊 Test Statistics:"
@echo "=================="
@for plugin in nu_plugin_*; do \
if [ -d "$$plugin" ]; then \
echo -n "$$plugin: "; \
cd "$$plugin" && cargo test 2>&1 | grep -o "[0-9]* passed" || echo "No tests" && cd ..; \
fi; \
done
# 📊 QA INFORMATION
# Show QA help
[no-cd]
qa-help:
@echo "🧪 Quality Assurance Module Help"
@echo "================================"
@echo ""
@echo "TESTING:"
@echo " check - Run cargo check on all plugins"
@echo " test - Run tests on all plugins"
@echo " test-verbose - Run tests with verbose output"
@echo " test-parallel - Run tests in parallel"
@echo " test-plugin PLUGIN - Test specific plugin"
@echo " test-integration - Run integration tests"
@echo " test-docs - Run documentation tests"
@echo ""
@echo "LINTING:"
@echo " lint - Run clippy on all plugins"
@echo " lint-pedantic - Run pedantic clippy"
@echo " lint-plugin PLUGIN - Lint specific plugin"
@echo " lint-fix - Fix lint issues automatically"
@echo ""
@echo "FORMATTING:"
@echo " fmt - Format all code"
@echo " fmt-check - Check formatting"
@echo " fmt-plugin PLUGIN - Format specific plugin"
@echo " fmt-custom CONFIG - Format with custom config"
@echo ""
@echo "SECURITY:"
@echo " audit - Run security audit"
@echo " audit-plugin PLUGIN - Audit specific plugin"
@echo " audit-outdated - Check outdated dependencies"
@echo " audit-deps - Generate dependency report"
@echo ""
@echo "BENCHMARKING:"
@echo " bench - Run benchmarks"
@echo " bench-plugin PLUGIN - Benchmark specific plugin"
@echo " perf-test - Run performance tests"
@echo ""
@echo "DOCUMENTATION:"
@echo " docs - Generate documentation"
@echo " docs-open PLUGIN - Open docs in browser"
@echo " docs-private - Generate with private items"
@echo " docs-check - Check documentation links"
@echo ""
@echo "WORKFLOWS:"
@echo " qa-flow - Complete quality workflow"
@echo " qa-quick - Quick quality checks"
@echo " qa-pre-commit - Pre-commit checks"
@echo " qa-ci - CI simulation"
@echo " qa-full - Full quality suite"
@echo ""
@echo "METRICS:"
@echo " qa-metrics - Show quality metrics"
@echo " qa-stats - Show test statistics"
@echo ""
@echo "EXAMPLES:"
@echo " just qa-flow"
@echo " just test-plugin nu_plugin_clipboard"
@echo " just lint-fix"
@echo " just docs-open nu_plugin_image"