UNPKG

@gftdcojp/weblate-nextjs-sdk

Version:

A Next.js SDK for integrating with Weblate translation management system

121 lines (100 loc) 3.44 kB
#!/usr/bin/env node const fs = require('fs'); const { execSync } = require('child_process'); /** * CalVer versioning script for @gftdcojp/weblate-nextjs-sdk * Format: YYYY.MM.MICRO * * Usage: * node scripts/calver.js # Auto-increment micro version for current month * node scripts/calver.js major # Create new major release for current month * node scripts/calver.js --help # Show help */ function getCurrentDate() { const now = new Date(); const year = now.getFullYear(); const month = String(now.getMonth() + 1).padStart(2, '0'); return { year, month }; } function getCurrentVersion() { const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8')); return packageJson.version; } function updatePackageVersion(newVersion) { const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8')); packageJson.version = newVersion; fs.writeFileSync('package.json', JSON.stringify(packageJson, null, 2) + '\n'); return newVersion; } function generateCalVer(type = 'micro') { const { year, month } = getCurrentDate(); const currentVersion = getCurrentVersion(); console.log(`Current version: ${currentVersion}`); // Parse current version const versionParts = currentVersion.split('.'); const currentYear = parseInt(versionParts[0]); const currentMonth = parseInt(versionParts[1]); const currentMicro = parseInt(versionParts[2]) || 0; let newYear = year; let newMonth = parseInt(month); let newMicro = 1; // If we're in the same year and month, increment micro if (currentYear === year && currentMonth === newMonth) { if (type === 'micro') { newMicro = currentMicro + 1; } else if (type === 'major') { newMicro = 1; // Reset to 1 for major release } } const newVersion = `${newYear}.${String(newMonth).padStart(2, '0')}.${newMicro}`; return newVersion; } function main() { const args = process.argv.slice(2); if (args.includes('--help') || args.includes('-h')) { console.log(` CalVer Versioning Script Format: YYYY.MM.MICRO Usage: node scripts/calver.js # Auto-increment micro version node scripts/calver.js major # Create new major release for current month node scripts/calver.js --help # Show this help Examples: 2025.07.1 -> 2025.07.2 (micro increment) 2025.07.5 -> 2025.08.1 (new month) 2025.07.3 -> 2025.07.1 (major release, reset micro) `); return; } const type = args[0] === 'major' ? 'major' : 'micro'; const newVersion = generateCalVer(type); console.log(`Generated CalVer: ${newVersion}`); console.log(`Release type: ${type}`); // Update package.json updatePackageVersion(newVersion); console.log(`✅ Updated package.json to version ${newVersion}`); // Update VERSION constant in source const indexPath = 'src/index.ts'; if (fs.existsSync(indexPath)) { let indexContent = fs.readFileSync(indexPath, 'utf8'); indexContent = indexContent.replace( /export const VERSION = ['"][^'"]*['"];/, `export const VERSION = '${newVersion}';` ); fs.writeFileSync(indexPath, indexContent); console.log(`✅ Updated VERSION constant in ${indexPath}`); } console.log(` Next steps: 1. npm run build 2. npm test 3. git add . 4. git commit -m "chore: release ${newVersion}" 5. git tag v${newVersion} 6. git push origin main --tags 7. npm publish `); } if (require.main === module) { main(); }