mirror of
https://github.com/opentofu/setup-opentofu.git
synced 2025-12-31 15:02:19 +00:00
feat: ported action definition from setup-terraform
Signed-off-by: Dmitry Kisler <admin@dkisler.com>
This commit is contained in:
parent
c37e0c575a
commit
01bef202d2
19 changed files with 18728 additions and 3 deletions
62
lib/releases.js
Normal file
62
lib/releases.js
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/**
|
||||
* Copyright (c) OpenTofu
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*/
|
||||
|
||||
class Build {
|
||||
constructor (name, url) {
|
||||
this.name = name;
|
||||
this.url = url;
|
||||
}
|
||||
}
|
||||
|
||||
class Release {
|
||||
constructor (releaseMeta) {
|
||||
this.version = releaseMeta.tag_name.replace('v', '');
|
||||
this.builds = releaseMeta.assets.map(asset => new Build(asset.name, asset.browser_download_url));
|
||||
}
|
||||
|
||||
getBuild (platform, arch) {
|
||||
const requiredName = `tofu_${this.version}_${platform}_${arch}.zip`;
|
||||
return this.builds.find(build => build.name === requiredName);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches the top 30 releases sorted in desc order.
|
||||
*
|
||||
*/
|
||||
async function fetchReleases () {
|
||||
const url = 'https://api.github.com/repos/opentofu/opentofu/releases';
|
||||
|
||||
const resp = await fetch(url, {
|
||||
headers: {
|
||||
Accept: 'application/vnd.github+json',
|
||||
'X-GitHub-Api-Version': '2022-11-28'
|
||||
}
|
||||
});
|
||||
|
||||
if (!resp.ok) {
|
||||
throw Error('failed fetching releases');
|
||||
}
|
||||
|
||||
const releasesMeta = await resp.json();
|
||||
|
||||
return releasesMeta.map(releaseMeta => new Release(releaseMeta));
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches the release given the version.
|
||||
*
|
||||
* @param {string} version: Release version.
|
||||
*/
|
||||
async function getRelease (version) {
|
||||
const releases = await fetchReleases();
|
||||
return releases.find(release => release.version === version);
|
||||
}
|
||||
|
||||
// Note that the export is defined as adaptor to replace hashicorp/js-releases
|
||||
// See: https://github.com/hashicorp/setup-terraform/blob/e192cfcbae6c6ed207c277ed7624131996c9bf13/lib/setup-terraform.js#L15
|
||||
module.exports = {
|
||||
getRelease
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue