diff --git a/get-latest-version.js b/get-latest-version.js new file mode 100644 index 0000000..ec5a910 --- /dev/null +++ b/get-latest-version.js @@ -0,0 +1,32 @@ +let getLatestVersion = function() { + return new Promise((resolve, reject) => { + // if (typeof milliseconds !== "number") { + // throw new Error("milleseconds not a number"); + // } + + const xmlHttpRequest = new XMLHttpRequest(); + xmlHttpRequest.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + if (this.response) { + const latestURL = this.response["assets"][0].browser_download_url; + console.log(latestURL); + const latestVersion = latestURL.match(/(\d+).(\d+).(\d+)/g)[0]; + console.log(latestVersion); + return latestVersion; + } + } + }; + + xmlHttpRequest.open( + "GET", + "https://api.github.com/repos/gohugoio/hugo/releases/latest", + true + ); + xmlHttpRequest.responseType = "json"; + xmlHttpRequest.send(null); + + resolve(version); + }); +}; + +module.exports = getLatestVersion; diff --git a/index.js b/index.js index 7d9ec3d..6950501 100644 --- a/index.js +++ b/index.js @@ -2,18 +2,14 @@ const core = require("@actions/core"); const tc = require("@actions/tool-cache"); const io = require("@actions/io"); const exec = require("@actions/exec"); +const getLatestVersion = require("./get-latest-version"); // most @actions toolkit packages have async methods async function run() { try { let hugoVersion = core.getInput("hugo-version"); - if (!hugoVersion) { - // TODO: get latest version of Hugo - // hugoVersion = "latest"; - hugoVersion = "0.58.2"; - } else if (hugoVersion === "latest") { - // TODO: get latest version of Hugo - hugoVersion = "0.58.2"; + if (!hugoVersion || hugoVersion === "latest") { + hugoVersion = getLatestVersion(); } core.debug("Hugo version:", hugoVersion); diff --git a/wait.js b/wait.js deleted file mode 100644 index b83924d..0000000 --- a/wait.js +++ /dev/null @@ -1,11 +0,0 @@ -let wait = function(milliseconds) { - return new Promise((resolve, reject) => { - if (typeof(milliseconds) !== 'number') { - throw new Error('milleseconds not a number'); - } - - setTimeout(() => resolve("done!"), milliseconds) - }); -} - -module.exports = wait;