Files
gh-vanman2024-cli-builder-p…/skills/oclif-patterns/scripts/validate-command.sh
2025-11-30 09:04:14 +08:00

77 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Validate oclif command structure
# Usage: ./validate-command.sh <command-file>
set -e
COMMAND_FILE="$1"
if [ -z "$COMMAND_FILE" ]; then
echo "Error: Command file path is required"
echo "Usage: ./validate-command.sh <command-file>"
exit 1
fi
if [ ! -f "$COMMAND_FILE" ]; then
echo "Error: Command file not found: $COMMAND_FILE"
exit 1
fi
echo "Validating command: $COMMAND_FILE"
# Check for required imports
if ! grep -q "from '@oclif/core'" "$COMMAND_FILE"; then
echo "✗ Missing import from @oclif/core"
exit 1
fi
echo "✓ Has @oclif/core import"
# Check for Command class
if ! grep -q "extends Command" "$COMMAND_FILE"; then
echo "✗ Missing 'extends Command'"
exit 1
fi
echo "✓ Extends Command class"
# Check for description
if ! grep -q "static description" "$COMMAND_FILE"; then
echo "⚠ Warning: Missing static description"
else
echo "✓ Has static description"
fi
# Check for examples
if ! grep -q "static examples" "$COMMAND_FILE"; then
echo "⚠ Warning: Missing static examples"
else
echo "✓ Has static examples"
fi
# Check for run method
if ! grep -q "async run()" "$COMMAND_FILE"; then
echo "✗ Missing async run() method"
exit 1
fi
echo "✓ Has async run() method"
# Check for proper flag access
if grep -q "this.parse(" "$COMMAND_FILE"; then
echo "✓ Properly parses flags"
else
echo "⚠ Warning: May not be parsing flags correctly"
fi
# Check TypeScript
if command -v tsc &> /dev/null; then
echo "→ Checking TypeScript compilation..."
if tsc --noEmit "$COMMAND_FILE" 2>/dev/null; then
echo "✓ TypeScript compilation successful"
else
echo "⚠ Warning: TypeScript compilation has issues"
fi
fi
echo ""
echo "✓ Command validation complete"