diff --git a/action.yml b/action.yml index 8011381..50e3cd2 100644 --- a/action.yml +++ b/action.yml @@ -8,6 +8,10 @@ inputs: path: description: 'Destination path' required: false + if-no-artifact: + description: 'How to exit action if no artifact is found. Can be fail, warn or ignore' + default: 'fail' + required: false outputs: download-path: description: 'Path of artifact download' diff --git a/src/constants.ts b/src/constants.ts index 49d800a..e6d7567 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,6 +1,7 @@ export enum Inputs { Name = 'name', - Path = 'path' + Path = 'path', + IfNoArtifact = 'if-no-artifact' } export enum Outputs { DownloadPath = 'download-path' diff --git a/src/download-artifact.ts b/src/download-artifact.ts index b32a7be..76612c1 100644 --- a/src/download-artifact.ts +++ b/src/download-artifact.ts @@ -5,9 +5,12 @@ import {resolve} from 'path' import {Inputs, Outputs} from './constants' async function run(): Promise { + let ifNoArtifact = '' try { const name = core.getInput(Inputs.Name, {required: false}) const path = core.getInput(Inputs.Path, {required: false}) + ifNoArtifact = + core.getInput(Inputs.IfNoArtifact, {required: false}) || 'fail' let resolvedPath // resolve tilde expansions, path.replace only replaces the first occurrence of a pattern @@ -54,7 +57,18 @@ async function run(): Promise { core.setOutput(Outputs.DownloadPath, resolvedPath) core.info('Artifact download has finished successfully') } catch (err) { - core.setFailed(err.message) + const {message} = err as Error + switch (ifNoArtifact) { + case 'warn': + core.warning(message) + break + case 'ignore': + core.info(message) + break + case 'fail': + default: + core.setFailed(message) + } } }