Files
component-detection-depende…/index.js
T

63 lines
1.4 KiB
JavaScript
Raw Normal View History

2022-08-25 09:12:00 -07:00
const core = require('@actions/core');
2022-08-25 11:50:14 -07:00
const fs = require('fs');
const glob = require('glob');
2022-08-25 09:12:00 -07:00
2022-08-25 11:50:14 -07:00
import {
PackageCache,
BuildTarget,
Package,
Snapshot,
submitSnapshot
} from '@github/dependency-submission-toolkit'
2022-08-25 09:12:00 -07:00
async function run() {
2022-08-25 11:50:14 -07:00
let spdxFiles = await parseFiles(await searchFiles());
let snapshot = new Snapshot({
detector: new Detector({
name: "spdx-to-dependency-graph-action",
version: "0.0.1",
url: "https://github.com/jhutchings1/spdx-to-dependency-graph-action",
})
});
spdxFiles.forEach(spdxFile => {
let manifest = new Manifest(spdxFile.name);
spdxFile.packages.forEach(pkg => {
let packageName = pkg.packageName;
let packageVersion = pkg.packageVersion;
let purl = pkg.purl;
manifest.addPackage(new Package(packageName, packageVersion, purl));
snapshot.addManifest(manifest);
});
});
submitSnapshot(snapshot);
}
async function parseFiles(files) {
let spdxFiles = [];
files.forEach(file => {
fs.readFile(file, (err, content) => {
spdxFiles.push(parseSPDXFile(JSON.parse(content)));
});
});
return spdxFiles;
}
async function searchFiles() {
let filePath = core.getInput('filePath');
let filePattern = core.getInput('filePattern');
glob(`${filePath}/${filePattern}`, {}, (err, files) => {
if (err) {
core.error(err);
} else {
return files;
}
});
2022-08-25 09:12:00 -07:00
}
run();