UNPKG

caccl-deploy

Version:

A cli tool for managing ECS/Fargate app deployments

74 lines (63 loc) 1.82 kB
const fs = require('fs'); const path = require('path'); const semver = require('semver'); const LOOKS_LIKE_SEMVER_REGEX = new RegExp( [ '(?<Major>0|(?:[1-9]\\d*))', '(?:\\.(?<Minor>0|(?:[1-9]\\d*))', '(?:\\.(?<Patch>0|(?:[1-9]\\d*))))', ].join(''), ); module.exports = { readJson: (filePath) => { return JSON.parse(fs.readFileSync(path.resolve(filePath), 'utf8')); }, readFile: (filePath) => { return fs.readFileSync(require.resolve(filePath), 'utf8'); }, tagsForAws: (tags = {}) => { return Object.entries(tags).map(([k, v]) => { return { Key: k, Value: v }; }); }, sleep: (ms) => { return new Promise((resolve) => { setTimeout(resolve, ms); }); }, looksLikeSemver: (s) => { return LOOKS_LIKE_SEMVER_REGEX.test(s); }, validSSMParamName: (name) => { return /^([a-z0-9:/_-]+)$/i.test(name); }, warnAboutVersionDiff: (versionString1, versionString2) => { let v1; let v2; // if only one of the versions indicates a branch that's a diff if ( [versionString1, versionString2].filter((v) => { return v.includes('branch='); }).length === 1 ) { return true; } try { v1 = versionString1.match(/^package=(?<version>[^:]+)/).groups.version; v2 = versionString2.match(/^package=(?<version>[^:]+)/).groups.version; } catch (err) { if (err instanceof TypeError) { // seems like we've got bigger problems if those regexes throw an exception return true; } throw err; } if (v1 === v2) return false; // warn if either is invalid if (!semver.valid(v1) || !semver.valid(v2)) { return true; } // warn if diff is greater than a patch version return !semver.satisfies(v1, `${v2.slice(0, -1)}x`); }, };