cdk8s-cli
Version:
This is the command line tool for Cloud Development Kit (CDK) for Kubernetes (cdk8s).
107 lines • 8.88 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLatestVersion = exports.upgradeAvailable = void 0;
const os_1 = require("os");
const path_1 = require("path");
const cdk8s = __importStar(require("cdk8s"));
const fs_extra_1 = require("fs-extra");
const _fs_1 = require("./_fs");
// eslint-disable-next-line @typescript-eslint/no-require-imports
const pkg = require('../package.json');
const CACHE = {
cacheTtlSec: 60 * 30,
cacheFile: (0, path_1.join)((0, os_1.homedir)(), '.cdk8s-cli.version'),
};
/**
* Checks if there is a new version of the CLI available on npm.
*
* @returns `undefined` if there is no upgrade available. If there is a new
* version, returns an object with `latest` (the latest version) and `current`
* (the current version).
*/
function upgradeAvailable() {
const latest = getLatestVersion(pkg.name, CACHE);
if (latest !== pkg.version) {
return { latest, current: pkg.version };
}
else {
return undefined;
}
}
exports.upgradeAvailable = upgradeAvailable;
/**
* Returns the latest version of an npm module. The version is cached for 30min
* to ~/.cdk8s-cli.version.
*
* Never throws.
*
* @param module The module name
* @param options cache options
*/
function getLatestVersion(module, options) {
let latest = readCache();
if (!latest) {
try {
const info = cdk8s.Yaml.load(`http://registry.npmjs.org/${module}/latest`);
if (!info || info.length < 1) {
return undefined;
}
latest = info[0].version;
}
catch (e) {
return undefined;
}
// cannot determine version, return undefined.
if (!latest) {
return undefined;
}
writeCache(latest);
}
return latest;
function readCache() {
try {
const lastModified = (0, fs_extra_1.statSync)(options.cacheFile).mtime;
const diff = (new Date().getTime()) - lastModified.getTime();
if (diff > options.cacheTtlSec * 1000) {
return undefined;
}
return (0, fs_extra_1.readFileSync)(options.cacheFile, 'utf-8').trim();
}
catch (e) {
return undefined;
}
}
function writeCache(version) {
try {
_fs_1._fs.writeFileSync(options.cacheFile, version);
}
catch (e) {
return;
}
}
}
exports.getLatestVersion = getLatestVersion;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXBncmFkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFBNkI7QUFDN0IsK0JBQTRCO0FBQzVCLDZDQUErQjtBQUMvQix1Q0FBa0Q7QUFDbEQsK0JBQTRCO0FBRTVCLGlFQUFpRTtBQUNqRSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUV2QyxNQUFNLEtBQUssR0FBRztJQUNaLFdBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRTtJQUNwQixTQUFTLEVBQUUsSUFBQSxXQUFJLEVBQUMsSUFBQSxZQUFPLEdBQUUsRUFBRSxvQkFBb0IsQ0FBQztDQUNqRCxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsZ0JBQWdCO0lBQzlCLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakQsSUFBSSxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRTtRQUMxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDekM7U0FBTTtRQUNMLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztBQVBELDRDQU9DO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsT0FBbUQ7SUFDbEcsSUFBSSxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLElBQUk7WUFDRixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsTUFBTSxTQUFTLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QixPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQzFCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELDhDQUE4QztRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDcEI7SUFFRCxPQUFPLE1BQU0sQ0FBQztJQUVkLFNBQVMsU0FBUztRQUNoQixJQUFJO1lBQ0YsTUFBTSxZQUFZLEdBQUcsSUFBQSxtQkFBUSxFQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDdkQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdELElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFO2dCQUNyQyxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUVELE9BQU8sSUFBQSx1QkFBWSxFQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDeEQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELFNBQVMsVUFBVSxDQUFDLE9BQWU7UUFDakMsSUFBSTtZQUNGLFNBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMvQztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTztTQUNSO0lBQ0gsQ0FBQztBQUNILENBQUM7QUE1Q0QsNENBNENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ29zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNkazhzIGZyb20gJ2NkazhzJztcbmltcG9ydCB7IHJlYWRGaWxlU3luYywgc3RhdFN5bmMgfSBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBfZnMgfSBmcm9tICcuL19mcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBwa2cgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKTtcblxuY29uc3QgQ0FDSEUgPSB7XG4gIGNhY2hlVHRsU2VjOiA2MCAqIDMwLCAvLyAzMG1pblxuICBjYWNoZUZpbGU6IGpvaW4oaG9tZWRpcigpLCAnLmNkazhzLWNsaS52ZXJzaW9uJyksXG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGVyZSBpcyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBDTEkgYXZhaWxhYmxlIG9uIG5wbS5cbiAqXG4gKiBAcmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBubyB1cGdyYWRlIGF2YWlsYWJsZS4gSWYgdGhlcmUgaXMgYSBuZXdcbiAqIHZlcnNpb24sIHJldHVybnMgYW4gb2JqZWN0IHdpdGggYGxhdGVzdGAgKHRoZSBsYXRlc3QgdmVyc2lvbikgYW5kIGBjdXJyZW50YFxuICogKHRoZSBjdXJyZW50IHZlcnNpb24pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBncmFkZUF2YWlsYWJsZSgpIHtcbiAgY29uc3QgbGF0ZXN0ID0gZ2V0TGF0ZXN0VmVyc2lvbihwa2cubmFtZSwgQ0FDSEUpO1xuICBpZiAobGF0ZXN0ICE9PSBwa2cudmVyc2lvbikge1xuICAgIHJldHVybiB7IGxhdGVzdCwgY3VycmVudDogcGtnLnZlcnNpb24gfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYW4gbnBtIG1vZHVsZS4gVGhlIHZlcnNpb24gaXMgY2FjaGVkIGZvciAzMG1pblxuICogdG8gfi8uY2RrOHMtY2xpLnZlcnNpb24uXG4gKlxuICogTmV2ZXIgdGhyb3dzLlxuICpcbiAqIEBwYXJhbSBtb2R1bGUgVGhlIG1vZHVsZSBuYW1lXG4gKiBAcGFyYW0gb3B0aW9ucyBjYWNoZSBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXRlc3RWZXJzaW9uKG1vZHVsZTogc3RyaW5nLCBvcHRpb25zOiB7IGNhY2hlRmlsZTogc3RyaW5nOyBjYWNoZVR0bFNlYzogbnVtYmVyIH0pIHtcbiAgbGV0IGxhdGVzdCA9IHJlYWRDYWNoZSgpO1xuICBpZiAoIWxhdGVzdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbmZvID0gY2RrOHMuWWFtbC5sb2FkKGBodHRwOi8vcmVnaXN0cnkubnBtanMub3JnLyR7bW9kdWxlfS9sYXRlc3RgKTtcbiAgICAgIGlmICghaW5mbyB8fCBpbmZvLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGxhdGVzdCA9IGluZm9bMF0udmVyc2lvbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIGNhbm5vdCBkZXRlcm1pbmUgdmVyc2lvbiwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICBpZiAoIWxhdGVzdCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB3cml0ZUNhY2hlKGxhdGVzdCk7XG4gIH1cblxuICByZXR1cm4gbGF0ZXN0O1xuXG4gIGZ1bmN0aW9uIHJlYWRDYWNoZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBsYXN0TW9kaWZpZWQgPSBzdGF0U3luYyhvcHRpb25zLmNhY2hlRmlsZSkubXRpbWU7XG4gICAgICBjb25zdCBkaWZmID0gKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSAtIGxhc3RNb2RpZmllZC5nZXRUaW1lKCk7XG4gICAgICBpZiAoZGlmZiA+IG9wdGlvbnMuY2FjaGVUdGxTZWMgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRmlsZVN5bmMob3B0aW9ucy5jYWNoZUZpbGUsICd1dGYtOCcpLnRyaW0oKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHdyaXRlQ2FjaGUodmVyc2lvbjogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIF9mcy53cml0ZUZpbGVTeW5jKG9wdGlvbnMuY2FjaGVGaWxlLCB2ZXJzaW9uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG59XG5cbiJdfQ==
;