mirror of
https://github.com/hashicorp/setup-terraform.git
synced 2025-12-17 08:52:37 +00:00
✨ feat(versionfile): accept versionfile
This commit is contained in:
parent
1fdd4cd311
commit
6fac858356
3 changed files with 79 additions and 3 deletions
|
|
@ -11,7 +11,9 @@ inputs:
|
|||
required: false
|
||||
terraform_version:
|
||||
description: 'The version of Terraform CLI to install. Instead of full version string you can also specify constraint string starting with "<" (for example `<1.13.0`) to install the latest version satisfying the constraint. A value of `latest` will install the latest version of Terraform CLI. Defaults to `latest`.'
|
||||
default: 'latest'
|
||||
required: false
|
||||
terraform_version_file:
|
||||
description: 'The version of Terraform CLI to install, specify the path of your terraform version file.'
|
||||
required: false
|
||||
terraform_wrapper:
|
||||
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`.'
|
||||
|
|
|
|||
39
dist/index.js
vendored
39
dist/index.js
vendored
|
|
@ -120,11 +120,48 @@ credentials "${credentialsHostname}" {
|
|||
core.debug(`Adding credentials to ${credsFile}`);
|
||||
await fs.writeFile(credsFile, creds);
|
||||
}
|
||||
async function isVersionFileExist(versionFilePath) {
|
||||
try {
|
||||
await fs.access(versionFilePath);
|
||||
return true;
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
async function resolveVersionInput() {
|
||||
let version = core.getInput("terraform_version");
|
||||
const versionFileInput = core.getInput("terraform_version_file");
|
||||
if (version && versionFileInput) {
|
||||
core.warning(
|
||||
"Both terraform_version and terraform_version_file inputs are specified, only terraform_version will be used"
|
||||
);
|
||||
}
|
||||
if (version) {
|
||||
return version;
|
||||
}
|
||||
if (versionFileInput) {
|
||||
const versionFilePath = path.join(
|
||||
process.env.GITHUB_WORKSPACE,
|
||||
versionFileInput
|
||||
);
|
||||
const fileExists = await isVersionFileExist(versionFilePath);
|
||||
if (!fileExists) {
|
||||
throw new Error(
|
||||
`The specified terraform version file at: ${versionFilePath} does not exist`
|
||||
);
|
||||
}
|
||||
|
||||
version = await fs.readFile(versionFilePath, "utf-8");
|
||||
|
||||
core.info(`Resolved ${versionFileInput} as ${version}`);
|
||||
}
|
||||
return version || "latest";
|
||||
}
|
||||
|
||||
async function run () {
|
||||
try {
|
||||
// Gather GitHub Actions inputs
|
||||
const version = core.getInput('terraform_version');
|
||||
const version = await resolveVersionInput();
|
||||
const credentialsHostname = core.getInput('cli_config_credentials_hostname');
|
||||
const credentialsToken = core.getInput('cli_config_credentials_token');
|
||||
const wrapper = core.getInput('terraform_wrapper') === 'true';
|
||||
|
|
|
|||
|
|
@ -114,11 +114,48 @@ credentials "${credentialsHostname}" {
|
|||
core.debug(`Adding credentials to ${credsFile}`);
|
||||
await fs.writeFile(credsFile, creds);
|
||||
}
|
||||
async function isVersionFileExist(versionFilePath) {
|
||||
try {
|
||||
await fs.access(versionFilePath);
|
||||
return true;
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
async function resolveVersionInput() {
|
||||
let version = core.getInput("terraform_version");
|
||||
const versionFileInput = core.getInput("terraform_version_file");
|
||||
if (version && versionFileInput) {
|
||||
core.warning(
|
||||
"Both terraform_version and terraform_version_file inputs are specified, only terraform_version will be used"
|
||||
);
|
||||
}
|
||||
if (version) {
|
||||
return version;
|
||||
}
|
||||
if (versionFileInput) {
|
||||
const versionFilePath = path.join(
|
||||
process.env.GITHUB_WORKSPACE,
|
||||
versionFileInput
|
||||
);
|
||||
const fileExists = await isVersionFileExist(versionFilePath);
|
||||
if (!fileExists) {
|
||||
throw new Error(
|
||||
`The specified terraform version file at: ${versionFilePath} does not exist`
|
||||
);
|
||||
}
|
||||
|
||||
version = await fs.readFile(versionFilePath, "utf-8");
|
||||
|
||||
core.info(`Resolved ${versionFileInput} as ${version}`);
|
||||
}
|
||||
return version || "latest";
|
||||
}
|
||||
|
||||
async function run () {
|
||||
try {
|
||||
// Gather GitHub Actions inputs
|
||||
const version = core.getInput('terraform_version');
|
||||
const version = await resolveVersionInput();
|
||||
const credentialsHostname = core.getInput('cli_config_credentials_hostname');
|
||||
const credentialsToken = core.getInput('cli_config_credentials_token');
|
||||
const wrapper = core.getInput('terraform_wrapper') === 'true';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue