Skip to content

Commit

Permalink
feat: add post-job step for cleaning temp dir
Browse files Browse the repository at this point in the history
  • Loading branch information
sfreydin committed Dec 18, 2023
1 parent 69c0085 commit f6ec851
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,15 @@ steps:
- run: echo ${{ steps.plan.outputs.exitcode }}
```

Temporary directory could be deleted after all steps by setting the `cleanup_workspace` variable to `true`:

```yaml
steps:
- uses: hashicorp/setup-terraform@v3
with:
cleanup_workspace: true
```

Outputs can be used in subsequent steps to comment on the pull request:

> **Notice:** There's a limit to the number of characters inside a GitHub comment (65535).
Expand Down Expand Up @@ -254,6 +263,8 @@ The action supports the following inputs:
- `terraform_wrapper` - (optional) Whether to install a wrapper to wrap subsequent calls of
the `terraform` binary and expose its STDOUT, STDERR, and exit code as outputs
named `stdout`, `stderr`, and `exitcode` respectively. Defaults to `true`.
- `cleanup_workspace` - (optional) The Terraform binary file is downloaded to a temporary directory.
This parameter will be used to clean that directory. Defaults to `true`.

## Outputs

Expand Down
6 changes: 6 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,15 @@ inputs:
description: 'Whether or not to install a wrapper to wrap subsequent calls of the `terraform` binary and expose its STDOUT, STDERR, and exit code as outputs named `stdout`, `stderr`, and `exitcode` respectively. Defaults to `true`.'
default: 'true'
required: false
cleanup_workspace:
description: 'The Terraform binary file is downloaded to a temporary directory. This parameter will be used to clean that directory. Defaults to `true`.'
default: 'false'
required: false
runs:
using: 'node20'
main: 'dist/index.js'
post: 'dist/cleanup.js'
post-if: cleanup_workspace
branding:
icon: 'terminal'
color: 'purple'
37 changes: 37 additions & 0 deletions dist/cleanup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/

const fs = require('fs');
const path = require('path');

// Retrieve environment variables and parameters
const terraformCliPath = process.env.TERRAFORM_CLI_PATH;

// Function to recursively delete a directory
const deleteDirectoryRecursive = function(directoryPath) {
if (fs.existsSync(directoryPath)) {
fs.readdirSync(directoryPath).forEach((file) => {
const curPath = path.join(directoryPath, file);
if (fs.lstatSync(curPath).isDirectory()) {
// Recurse
deleteDirectoryRecursive(curPath);
} else {
// Delete file
fs.unlinkSync(curPath);
}
});
fs.rmdirSync(directoryPath);
}
};


// Check if cleanup is required
if (terraformCliPath) {
console.log(`Cleaning up directory: ${terraformCliPath}`);
deleteDirectoryRecursive(terraformCliPath);
console.log('Cleanup completed.');
} else {
console.log('No cleanup required.');
}

0 comments on commit f6ec851

Please sign in to comment.