scripts/changeset-validation-result.mjs
scripts/changeset-validation-result.mjsBrowse 7 files
428 tokens
1,691 bytes
Token encoding: o200k_base
Snapshot 506f736
← Back to SKILL.md
1#!/usr/bin/env node2 3import fs from 'fs';4 5const { console, process } = globalThis;6 7function printUsage() {8 console.log('Usage: pnpm changeset:validate-result -- <path-to-json>');9}10 11function readJson(filePath) {12 const contents = fs.readFileSync(filePath, 'utf8');13 return JSON.parse(contents);14}15 16function validateShape(data) {17 if (typeof data?.ok !== 'boolean') return 'Missing ok boolean.';18 if (!Array.isArray(data?.errors)) return 'Missing errors array.';19 if (!Array.isArray(data?.warnings)) return 'Missing warnings array.';20 if (!['patch', 'minor', 'major', 'none'].includes(data?.required_bump)) {21 return 'Missing required_bump with value patch/minor/major/none.';22 }23 return null;24}25 26function printWarnings(warnings) {27 if (warnings.length === 0) return;28 console.warn('\nWarnings:');29 for (const warning of warnings) {30 console.warn(`- ${warning}`);31 }32}33 34function main() {35 const inputPath = process.argv36 .slice(2)37 .filter((arg) => arg !== '--')38 .find(Boolean);39 if (!inputPath) {40 printUsage();41 process.exit(1);42 }43 44 let data;45 try {46 data = readJson(inputPath);47 } catch (_error) {48 console.error(`Failed to read JSON from ${inputPath}.`);49 process.exit(1);50 }51 52 const shapeError = validateShape(data);53 if (shapeError) {54 console.error(`changeset-validation failed: ${shapeError}`);55 process.exit(1);56 }57 58 if (!data.ok) {59 console.error('changeset-validation failed.');60 for (const message of data.errors) {61 console.error(`- ${message}`);62 }63 printWarnings(data.warnings);64 process.exit(1);65 }66 67 console.log('changeset-validation passed.');68 printWarnings(data.warnings);69}70 71main();72