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
JavaScript
// 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';
}