Initial attempt (untested)
This commit is contained in:
@@ -1,21 +1,62 @@
|
||||
const core = require('@actions/core');
|
||||
const wait = require('./wait');
|
||||
const fs = require('fs');
|
||||
const glob = require('glob');
|
||||
|
||||
import {
|
||||
PackageCache,
|
||||
BuildTarget,
|
||||
Package,
|
||||
Snapshot,
|
||||
submitSnapshot
|
||||
} from '@github/dependency-submission-toolkit'
|
||||
|
||||
// most @actions toolkit packages have async methods
|
||||
async function run() {
|
||||
try {
|
||||
const ms = core.getInput('milliseconds');
|
||||
core.info(`Waiting ${ms} milliseconds ...`);
|
||||
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",
|
||||
})
|
||||
});
|
||||
|
||||
core.debug((new Date()).toTimeString()); // debug is only output if you set the secret `ACTIONS_RUNNER_DEBUG` to true
|
||||
await wait(parseInt(ms));
|
||||
core.info((new Date()).toTimeString());
|
||||
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;
|
||||
|
||||
core.setOutput('time', new Date().toTimeString());
|
||||
} catch (error) {
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
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;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
run();
|
||||
|
||||
Reference in New Issue
Block a user