snyk-go-parser
Version:
Generate a dep tree given a collection of manifests
53 lines • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseGoVendorConfig = parseGoVendorConfig;
const errors_1 = require("../errors");
const event_loop_spinner_1 = require("event-loop-spinner");
async function parseGovendorJsonContents(jsonStr) {
try {
const gvJson = JSON.parse(jsonStr);
const goProjectConfig = {
ignoredPkgs: [],
lockedVersions: {},
packageName: gvJson.rootPath,
};
const packages = gvJson.package || gvJson.Package;
if (packages) {
for (const pkg of packages) {
const revision = pkg.revision || pkg.Revision || pkg.version || pkg.Version;
const version = pkg.versionExact || '#' + revision;
const dep = {
name: pkg.path,
version,
};
goProjectConfig.lockedVersions[dep.name] = dep;
if (event_loop_spinner_1.eventLoopSpinner.isStarving()) {
await event_loop_spinner_1.eventLoopSpinner.spin();
}
}
}
const ignores = gvJson.ignore || '';
for (let pkgName of ignores.split(/\s/)) {
if (pkgName.indexOf('/') === -1) {
continue; // it's a build-tag rather than a pacakge
}
pkgName = pkgName.replace(/\/+$/, ''); // remove trailing /
goProjectConfig.ignoredPkgs.push(pkgName);
goProjectConfig.ignoredPkgs.push(pkgName + '/*');
if (event_loop_spinner_1.eventLoopSpinner.isStarving()) {
await event_loop_spinner_1.eventLoopSpinner.spin();
}
}
return goProjectConfig;
}
catch (e) {
throw new errors_1.InvalidUserInputError('vendor.json parsing failed with error ' + e.message);
}
}
async function parseGoVendorConfig(manifestFileContents) {
if (!manifestFileContents) {
throw new errors_1.InvalidUserInputError('vendor.json file contents are empty');
}
return parseGovendorJsonContents(manifestFileContents);
}
//# sourceMappingURL=govendor-parser.js.map