diff --git a/README.md b/README.md index 004da06..105a1c3 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Use this action if you need to get a file from a base64-encoded string that you fileName: 'myTemporaryFile.txt' encodedString: ${{ secrets.SOME_ENCODED_STRING }} ``` - +By default this writes the `fileName` to a temporary path defined by `env.RUNNER_TEMP`. If you want a different path that is writable, specify `fileDir` as an input argument as well and then `fileDir` and `fileName` will be combined to create the path where the output will be written. This assumes permissions in the `fileDir` are correct and does not try to set them. ## Using the file in a later step The Action has an output variable named filePath that you can use as this file is written to TEMP. Make sure you ad an `id` to your step when using this Action so that you can easily pull it out of the steps context later. diff --git a/action.yml b/action.yml index 42c2b52..e1f2f6d 100644 --- a/action.yml +++ b/action.yml @@ -8,6 +8,9 @@ inputs: description: 'Name of the file when written to temp location' required: true default: 'decoded-file.file' + fileDir: + description: 'If it is set, change the output location to specific one from temp location.' + required: false encodedString: description: 'The base64 encoded string' required: true diff --git a/dist/index.js b/dist/index.js index 8b8ac85..bf55ca4 100644 --- a/dist/index.js +++ b/dist/index.js @@ -462,26 +462,31 @@ const fse = __webpack_require__(226) const path = __webpack_require__(622); // get input parameter values from config -var fileName = path.join(process.env.RUNNER_TEMP,core.getInput('fileName')); +var fileName; +if (core.getInput('fileDir', {required: false})) { + fileName = path.join(core.getInput('fileDir'), core.getInput('fileName', {required: false})); +} else { + fileName = path.join(process.env.RUNNER_TEMP,core.getInput('fileName')); +} var encodedString = core.getInput('encodedString'); // most @actions toolkit packages have async methods async function run() { - try { + try { console.log(process.env); const tempFile = Buffer.from(encodedString, 'base64'); - + if (tempFile.length == 0) core.setFailed('Temporary file value is not set'); - + fse.outputFile(fileName, tempFile, (err) => { if (err) throw err; console.log('Wrote file!'); }); core.setOutput('filePath', fileName); - } + } catch (error) { core.setFailed(error.message); } diff --git a/index.js b/index.js index 852f67c..ea5056b 100644 --- a/index.js +++ b/index.js @@ -3,26 +3,31 @@ const fse = require('fs-extra') const path = require('path'); // get input parameter values from config -var fileName = path.join(process.env.RUNNER_TEMP,core.getInput('fileName')); +var fileName; +if (core.getInput('fileDir', {required: false})) { + fileName = path.join(core.getInput('fileDir'), core.getInput('fileName', {required: false})); +} else { + fileName = path.join(process.env.RUNNER_TEMP,core.getInput('fileName')); +} var encodedString = core.getInput('encodedString'); // most @actions toolkit packages have async methods async function run() { - try { + try { console.log(process.env); const tempFile = Buffer.from(encodedString, 'base64'); - + if (tempFile.length == 0) core.setFailed('Temporary file value is not set'); - + fse.outputFile(fileName, tempFile, (err) => { if (err) throw err; console.log('Wrote file!'); }); core.setOutput('filePath', fileName); - } + } catch (error) { core.setFailed(error.message); } diff --git a/package-lock.json b/package-lock.json index c26b48b..5357e07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "base64-to-file", - "version": "1.0.0", + "version": "1.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2d6cf9a..d9b77d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "base64-to-file", - "version": "1.0.0", + "version": "1.1.0", "description": "base64 encoded string to a file", "main": "index.js", "scripts": {