UNPKG

snyk-go-parser

Version:

Generate a dep tree given a collection of manifests

60 lines 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseGoPkgConfig = parseGoPkgConfig; const toml = require("@iarna/toml"); const errors_1 = require("../errors"); const event_loop_spinner_1 = require("event-loop-spinner"); async function parseDepLockContents(lockFileString) { try { const lockJson = (await toml.parse.async(lockFileString)); const deps = {}; if (lockJson.projects) { for (const proj of lockJson.projects) { const version = proj.version || '#' + proj.revision; for (const subpackageName of proj.packages) { const name = subpackageName === '.' ? proj.name : proj.name + '/' + subpackageName; const dep = { name, version, }; deps[dep.name] = dep; if (event_loop_spinner_1.eventLoopSpinner.isStarving()) { await event_loop_spinner_1.eventLoopSpinner.spin(); } } } } return deps; } catch (e) { throw new errors_1.InvalidUserInputError('Gopkg.lock parsing failed with error ' + e.message); } } function parseDepManifestContents(manifestToml) { try { const manifestJson = toml.parse(manifestToml) || {}; manifestJson.ignored = manifestJson.ignored || []; return manifestJson; } catch (e) { throw new errors_1.InvalidUserInputError('Gopkg.toml parsing failed with error ' + e.message); } } async function parseGoPkgConfig(manifestFileContents, lockFileContents) { if (!manifestFileContents && !lockFileContents) { throw new errors_1.InvalidUserInputError('Gopkg.lock and Gopkg.toml file contents are empty'); } if (!lockFileContents) { throw new errors_1.InvalidUserInputError('Gopkg.lock is empty, cannot proceed parsing'); } const lockedVersions = await parseDepLockContents(lockFileContents); let ignoredPkgs = []; if (manifestFileContents) { const manifest = parseDepManifestContents(manifestFileContents); ignoredPkgs = manifest.ignored; } return { lockedVersions, ignoredPkgs }; } //# sourceMappingURL=gopkg-parser.js.map