@riddance/env
Version:
36 lines • 4.6 kB
JavaScript
import { readFile, writeFile } from 'node:fs/promises';
export async function sync() {
try {
const license = await readFile('LICENSE', 'utf-8');
const thisYear = new Date().getFullYear();
let changed = false;
const updated = license.replaceAll(/Copyright © ([0-9]{4})(-[0-9]{4})? /gu, (all, year, negativeYearTo) => {
if (negativeYearTo !== undefined) {
if (Number(negativeYearTo) + thisYear === 0) {
return all;
}
changed = true;
return `Copyright © ${year}-${thisYear.toString()} `;
}
if (Number(year) !== thisYear) {
changed = true;
return `Copyright © ${year}-${thisYear.toString(10)} `;
}
return all;
});
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (changed) {
await writeFile('LICENSE', updated, 'utf-8');
}
}
catch (e) {
if (isFileNotFound(e)) {
return;
}
throw e;
}
}
function isFileNotFound(e) {
return e.code === 'ENOENT';
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyb25vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2hyb25vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFdEQsTUFBTSxDQUFDLEtBQUssVUFBVSxJQUFJO0lBQ3RCLElBQUksQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ3pDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQTtRQUNuQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUM5Qix1Q0FBdUMsRUFDdkMsQ0FBQyxHQUFHLEVBQUUsSUFBWSxFQUFFLGNBQXVCLEVBQUUsRUFBRTtZQUMzQyxJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUMxQyxPQUFPLEdBQUcsQ0FBQTtnQkFDZCxDQUFDO2dCQUNELE9BQU8sR0FBRyxJQUFJLENBQUE7Z0JBQ2QsT0FBTyxlQUFlLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQTtZQUN4RCxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUE7Z0JBQ2QsT0FBTyxlQUFlLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUE7WUFDMUQsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFBO1FBQ2QsQ0FBQyxDQUNKLENBQUE7UUFDRCx1RUFBdUU7UUFDdkUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE1BQU0sU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDaEQsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwQixPQUFNO1FBQ1YsQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFBO0lBQ1gsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxDQUFVO0lBQzlCLE9BQVEsQ0FBdUIsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFBO0FBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN5bmMoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbGljZW5zZSA9IGF3YWl0IHJlYWRGaWxlKCdMSUNFTlNFJywgJ3V0Zi04JylcbiAgICAgICAgY29uc3QgdGhpc1llYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKClcbiAgICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZVxuICAgICAgICBjb25zdCB1cGRhdGVkID0gbGljZW5zZS5yZXBsYWNlQWxsKFxuICAgICAgICAgICAgL0NvcHlyaWdodCDCqSAoWzAtOV17NH0pKC1bMC05XXs0fSk/IC9ndSxcbiAgICAgICAgICAgIChhbGwsIHllYXI6IHN0cmluZywgbmVnYXRpdmVZZWFyVG8/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmVZZWFyVG8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyKG5lZ2F0aXZlWWVhclRvKSArIHRoaXNZZWFyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBDb3B5cmlnaHQgwqkgJHt5ZWFyfS0ke3RoaXNZZWFyLnRvU3RyaW5nKCl9IGBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKE51bWJlcih5ZWFyKSAhPT0gdGhpc1llYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBDb3B5cmlnaHQgwqkgJHt5ZWFyfS0ke3RoaXNZZWFyLnRvU3RyaW5nKDEwKX0gYFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWxsXG4gICAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoJ0xJQ0VOU0UnLCB1cGRhdGVkLCAndXRmLTgnKVxuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoaXNGaWxlTm90Rm91bmQoZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRocm93IGVcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzRmlsZU5vdEZvdW5kKGU6IHVua25vd24pIHtcbiAgICByZXR1cm4gKGUgYXMgeyBjb2RlPzogc3RyaW5nIH0pLmNvZGUgPT09ICdFTk9FTlQnXG59XG4iXX0=