feat: adds support for ignores (#1)

* feat: adding optional ignore list

* chore: updating lock file

* format: prettier tak

* chore: new build

* chore: adding nvm rc to avoid error with vercel and node v17

* chore: bumping version to 1.3.0

* fix: gh actions does not support sequences as input

* chore: refresh build

* refactor: use getInputList from actos-rs/core

* add ignore to action.yml

Co-authored-by: moliva <oliva.miguelh@gmail.com>
This commit is contained in:
Dustin J. Mitchell
2022-08-12 19:47:29 +10:00
committed by GitHub
co-authored by moliva
parent 35b7b53b1e
commit bb800784d9
7 changed files with 22893 additions and 9998 deletions
+1
View File
@@ -0,0 +1 @@
v16
+3
View File
@@ -8,6 +8,9 @@ inputs:
token: token:
description: GitHub Actions token description: GitHub Actions token
required: true required: true
ignore:
description: Comma-separated list of advisory ids to ignore
required: false
runs: runs:
using: 'node12' using: 'node12'
+1 -1
View File
File diff suppressed because one or more lines are too long
+22873 -9993
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "rust-audit-check", "name": "rust-audit-check",
"version": "1.2.0", "version": "1.3.1",
"private": false, "private": false,
"description": "Security audit for security vulnerabilities", "description": "Security audit for security vulnerabilities",
"main": "lib/main.js", "main": "lib/main.js",
+3
View File
@@ -3,14 +3,17 @@
*/ */
import { input } from '@actions-rs/core'; import { input } from '@actions-rs/core';
import { getInputList } from '@actions-rs/core/dist/input';
// Parsed action input // Parsed action input
export interface Input { export interface Input {
token: string; token: string;
ignore: string[];
} }
export function get(): Input { export function get(): Input {
return { return {
token: input.getInput('token', { required: true }), token: input.getInput('token', { required: true }),
ignore: getInputList('ignore', { required: false }),
}; };
} }
+11 -3
View File
@@ -14,7 +14,9 @@ const pkg = require('../package.json'); // eslint-disable-line @typescript-eslin
const USER_AGENT = `${pkg.name}/${pkg.version} (${pkg.bugs.url})`; const USER_AGENT = `${pkg.name}/${pkg.version} (${pkg.bugs.url})`;
async function getData(): Promise<interfaces.Report> { async function getData(
ignore: string[] | undefined,
): Promise<interfaces.Report> {
const cargo = await Cargo.get(); const cargo = await Cargo.get();
await cargo.findOrInstall('cargo-audit'); await cargo.findOrInstall('cargo-audit');
@@ -23,7 +25,12 @@ async function getData(): Promise<interfaces.Report> {
let stdout = ''; let stdout = '';
try { try {
core.startGroup('Calling cargo-audit (JSON output)'); core.startGroup('Calling cargo-audit (JSON output)');
await cargo.call(['audit', '--json'], { const commandArray = ['audit'];
for (const item of ignore ?? []) {
commandArray.push('--ignore', item);
}
commandArray.push('--json');
await cargo.call(commandArray, {
ignoreReturnCode: true, ignoreReturnCode: true,
listeners: { listeners: {
stdout: (buffer) => { stdout: (buffer) => {
@@ -44,7 +51,8 @@ async function getData(): Promise<interfaces.Report> {
} }
export async function run(actionInput: input.Input): Promise<void> { export async function run(actionInput: input.Input): Promise<void> {
const report = await getData(); const ignore = actionInput.ignore;
const report = await getData(ignore);
let shouldReport = false; let shouldReport = false;
if (!report.vulnerabilities.found) { if (!report.vulnerabilities.found) {
core.info('No vulnerabilities were found'); core.info('No vulnerabilities were found');