UNPKG

nodry

Version:

A CLI tool and Node.js library that warns about repetitive code to help you stay DRY.

51 lines (38 loc) 1.45 kB
// versionStatus.js const fs = require('fs'); const path = require('path'); const semver = require('semver'); (async function printStatus() { try { const latestVersion = (await import('latest-version')).default; const pkgPath = path.resolve(__dirname, 'package.json'); const pkgJson = fs.readFileSync(pkgPath, 'utf-8'); const { version: currentVersion, name: packageName } = JSON.parse(pkgJson); const latest = await latestVersion(packageName); const status = determineStatus(currentVersion, latest); const colors = { Latest: '\x1b[32m', // Grön Supported: '\x1b[33m', // Gul Outdated: '\x1b[35m', // Lila Deprecated: '\x1b[31m',// Röd Unknown: '\x1b[0m' // Reset }; const resetColor = '\x1b[0m'; console.log(`${colors[status] || resetColor}Version ${currentVersion} is ${status}${resetColor}`); } catch (err) { console.error('Error checking version status:', err.message); } })(); function determineStatus(current, latest) { if (!semver.valid(current) || !semver.valid(latest)) return 'Unknown'; if (semver.eq(current, latest)) return 'Latest'; const cur = semver.parse(current); const lat = semver.parse(latest); if (cur.major === lat.major && cur.minor === lat.minor && semver.lt(current, latest)) { return 'Supported'; } if (semver.lt(current, `${lat.major}.${lat.minor}.0`)) { return 'Deprecated'; } return 'Outdated'; }