UNPKG

snyk-docker-plugin

Version:
67 lines (63 loc) 1.55 kB
import { AnalysisType, AnalyzedPackage, ImageAnalysis } from "../types"; export function analyze( targetImage: string, apkDbFileContent: string, ): Promise<ImageAnalysis> { return Promise.resolve({ Image: targetImage, AnalyzeType: AnalysisType.Apk, Analysis: parseFile(apkDbFileContent), }); } function parseFile(text: string) { const pkgs: AnalyzedPackage[] = []; let curPkg: any = null; for (const line of text.split("\n")) { curPkg = parseLine(line, curPkg, pkgs); } return pkgs; } function parseLine( text: string, curPkg: AnalyzedPackage, pkgs: AnalyzedPackage[], ) { const key = text.charAt(0); const value = text.substr(2).trim(); switch (key) { case "P": // Package curPkg = { Name: value, Version: undefined, Source: undefined, Provides: [], Deps: {}, AutoInstalled: undefined, }; pkgs.push(curPkg); break; case "V": // Version curPkg.Version = value; break; case "p": // Provides for (let name of value.split(" ")) { name = name.split("=")[0]; curPkg.Provides.push(name); } break; case "r": // Depends case "D": // Depends // tslint:disable-next-line:no-duplicate-variable for (let name of value.split(" ")) { if (name.charAt(0) !== "!") { name = name.split("=")[0]; curPkg.Deps[name] = true; } } break; case "o": // Origin curPkg.Source = value; break; } return curPkg; }