@ou-imdt/create
Version:
Command line tool to create team boilerplate.
31 lines (27 loc) • 1.45 kB
JavaScript
const gradient = require("gradient-string");
const pkg = require('./../package.json');
module.exports = async () => {
try {
// Create a timeout promise that rejects after 3 seconds
const timeoutPromise = new Promise((_, reject) =>
setTimeout(() => reject(new Error('Request timeout')), 3000)
);
// Race between fetch and timeout
const response = await Promise.race([
fetch("https://registry.npmjs.org/@ou-imdt/create/latest"),
timeoutPromise
]);
const packageDetails = await response.json();
if (packageDetails.version !== pkg.version) {
console.log(gradient.pastel.multiline([`@ou-imdt/create outdated. Latest version is v${packageDetails.version}, you are using v${pkg.version}.`, "Please exit (ctrl + c) and run 'npm update -g @ou-imdt/create'.", ""].join('\n')));
} else {
console.log(gradient.pastel.multiline([`You are using the latest version of @ou-imdt/create (v${pkg.version}).`, ""].join('\n')));
}
} catch (e) {
if (e.message === 'Request timeout') {
console.log(gradient.pastel.multiline([`It was not possible to check if this is the latest version of create (request timeout).`, ""].join('\n')));
} else {
console.log(gradient.pastel.multiline([`Unable to retrieve package details. Skipping version check.`, ""].join('\n')));
}
}
}