UNPKG

snyk-go-parser

Version:

Generate a dep tree given a collection of manifests

53 lines 2.17 kB
"use strict"; 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