- Add TypeScript registry validator using Bun (< 1 second vs bash hanging) - Install Bun in CI workflow - Update workflow to use bun validator instead of bash script - Add npm scripts for local validation - Add comprehensive README for registry validation This fixes the CI timeout issue where bash validator hangs in GitHub Actions. The TypeScript validator is faster, more reliable, and easier to debug. Related: Unblocks PR #128 which is currently failing due to bash script timeout
87 lines
2.1 KiB
Markdown
87 lines
2.1 KiB
Markdown
# Registry Validation Scripts
|
|
|
|
This directory contains scripts to validate the `registry.json` file.
|
|
|
|
## Available Scripts
|
|
|
|
### TypeScript Version (Recommended) ⚡
|
|
|
|
**Fast, modern, and easy to debug**
|
|
|
|
```bash
|
|
# Run validation
|
|
npm run validate:registry
|
|
|
|
# Run with verbose output
|
|
npm run validate:registry:verbose
|
|
|
|
# Run with fix suggestions
|
|
npm run validate:registry:fix
|
|
|
|
# Or run directly with bun
|
|
bun run scripts/registry/validate-registry.ts
|
|
bun run scripts/registry/validate-registry.ts -v
|
|
bun run scripts/registry/validate-registry.ts -f
|
|
```
|
|
|
|
**Requirements:**
|
|
- Bun runtime
|
|
|
|
**Features:**
|
|
- ✅ Fast execution (< 1 second)
|
|
- ✅ Easy to debug
|
|
- ✅ Type-safe
|
|
- ✅ Validates all registry paths
|
|
- ✅ Validates component dependencies
|
|
- ✅ Colored output
|
|
- ✅ Verbose mode
|
|
- ✅ Fix suggestions
|
|
|
|
### Bash Version (Legacy)
|
|
|
|
**Original bash script - still maintained for CI compatibility**
|
|
|
|
```bash
|
|
# Run validation
|
|
./scripts/registry/validate-registry.sh
|
|
|
|
# Run with verbose output
|
|
./scripts/registry/validate-registry.sh -v
|
|
|
|
# Run with fix suggestions
|
|
./scripts/registry/validate-registry.sh -f
|
|
```
|
|
|
|
**Requirements:**
|
|
- bash
|
|
- jq
|
|
|
|
**Note:** The bash version may hang in some CI environments. The TypeScript version is recommended for local development.
|
|
|
|
## What Gets Validated
|
|
|
|
Both scripts validate:
|
|
|
|
1. **Registry JSON Format** - Ensures `registry.json` is valid JSON
|
|
2. **Component Paths** - Verifies all file paths in the registry exist
|
|
3. **Component Dependencies** - Validates that all dependencies reference existing components
|
|
|
|
## Exit Codes
|
|
|
|
- `0` - All paths valid, all dependencies valid
|
|
- `1` - Missing files or missing dependencies found
|
|
- `2` - Registry parse error or missing script dependencies
|
|
|
|
## CI Integration
|
|
|
|
The GitHub Actions workflow (`.github/workflows/validate-registry.yml`) currently uses the bash version for compatibility with the base branch workflow file. Once this PR is merged, future PRs can use the TypeScript version.
|
|
|
|
## Development
|
|
|
|
To modify the TypeScript validator:
|
|
|
|
1. Edit `scripts/registry/validate-registry.ts`
|
|
2. Test locally: `npm run validate:registry`
|
|
3. Commit changes
|
|
|
|
The TypeScript version is the source of truth for new features.
|