UNPKG

six-widget-buildsupport

Version:

SIX Widgets buildsupport

74 lines (62 loc) 1.95 kB
#!/usr/bin/env node 'use strict'; /* This script will check if a project is in pre-release or release stage. If a project is in release stage it will try to check if any dependencies (excluding dev dependencies) can resolve to a pre-release version. */ const path = require('path'); const packageDir = path.resolve('.') const json = require(path.join(packageDir,'package.json')) const semver = require('semver') let stage = "DEVELOPMENT" let errors = [] let isReleaseVersion = function isReleaseVersion(r1){ let version = r1.trim().replace(/^[=v~^]+/, '') let prerelease = semver.parse(version).prerelease return prerelease === undefined || prerelease.length == 0 } let isRelease = function isRelease(name,depMap,errors){ let versionRange = depMap[name] getVersionRangeList(versionRange).forEach(function(version){ if(!isReleaseVersion(version)){ errors.push("Can resolve to non-release version " + name + " " + versionRange) } }) } let getVersionRangeList = function getVersionRangeList(versionRange){ let versions = [] // Splits versions separated on space and || semver.validRange(versionRange).split(/\s*\|\|\s*| /).forEach(function(v){ let version = semver.parse(v.trim().replace(/^[=~^<>]+/,'')) if(version){ versions.push(version.raw) } }) return versions } // Export for testing module.exports.isRelease = isRelease // If run as script if (!module.parent) { if(isReleaseVersion(json.version)){ stage = "RELEASE" if(json.dependencies){ Object.keys(json.dependencies).forEach(function(name){ isRelease(name,json.dependencies,errors) }) } if(json.peerDependencies){ Object.keys(json.peerDependencies).forEach(function(name){ isRelease(name,json.peerDependencies,errors) }) } } if(errors.length == 0){ console.log(stage) } errors.forEach(function(e) { console.error(e) }) process.exit(errors.length == 0 ? 0 : 1) }