diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml index 9cca3d1..39add08 100644 --- a/.github/workflows/action.yml +++ b/.github/workflows/action.yml @@ -9,6 +9,9 @@ on: branches: - main +env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + jobs: check_integrity: name: Expected local npm actions @@ -28,7 +31,7 @@ jobs: - run: npm run yamllint - run: npm run jslint - name: Check if build left artifacts - run: git diff --exit-code + run: git diff --exit-code --ignore-space-at-eol unit_tests_ubuntu: name: Unit tests (Ubuntu) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 04c2778..bc2aaa4 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -9,6 +9,9 @@ on: branches: - main +env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + jobs: integration_test: name: > diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 5d8c466..fbfb10b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -9,6 +9,9 @@ on: branches: - main +env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + jobs: integration_test: name: > diff --git a/dist/index.js b/dist/index.js index 9a041b9..de05728 100644 --- a/dist/index.js +++ b/dist/index.js @@ -7440,7 +7440,7 @@ async function getOTPVersions(osVersion) { }) } else if (process.platform === 'win32') { otpVersionsListings.forEach((otpVersionsListing) => { - JSON.parse(otpVersionsListing) + jsonParse(otpVersionsListing) .map((x) => x.assets) .flat() .filter((x) => x.name.match(/^otp_win64_.*.exe$/)) @@ -7487,7 +7487,7 @@ async function getGleamVersions() { ) const gleamVersionsListing = [] resultJSONs.forEach((resultJSON) => { - JSON.parse(resultJSON) + jsonParse(resultJSON) .map((x) => x.tag_name) .sort() .forEach((v) => gleamVersionsListing.push(v)) @@ -7502,7 +7502,7 @@ async function getRebar3Versions() { ) const rebar3VersionsListing = [] resultJSONs.forEach((resultJSON) => { - JSON.parse(resultJSON) + jsonParse(resultJSON) .map((x) => x.tag_name) .sort() .forEach((v) => rebar3VersionsListing.push(v)) @@ -7609,33 +7609,33 @@ async function get(url0, pageIdxs) { function getPage(pageIdx) { return new Promise((resolve, reject) => { const url = new URL(url0) + const headers = { + 'user-agent': 'setup-beam', + } + if (process.env.GITHUB_TOKEN) { + headers.authorization = `Bearer ${process.env.GITHUB_TOKEN}` + } if (pageIdx !== null) { url.searchParams.append('page', pageIdx) } https - .get( - url, - { - headers: { 'user-agent': 'setup-beam' }, - }, - (res) => { - let data = '' - res.on('data', (chunk) => { - data += chunk - }) - res.on('end', () => { - if (res.statusCode >= 400 && res.statusCode <= 599) { - reject( - new Error( - `Got ${res.statusCode} from ${url}. Exiting with error`, - ), - ) - } else { - resolve(data) - } - }) - }, - ) + .get(url, { headers }, (res) => { + let data = '' + res.on('data', (chunk) => { + data += chunk + }) + res.on('end', () => { + if (res.statusCode >= 400 && res.statusCode <= 599) { + reject( + new Error( + `Got ${res.statusCode} from ${url}. Exiting with error`, + ), + ) + } else { + resolve(data) + } + }) + }) .on('error', (err) => { reject(err) }) @@ -7716,6 +7716,16 @@ function parseVersionFile(versionFilePath0) { return appVersions } +function jsonParse(maybeJson) { + try { + return JSON.parse(maybeJson) + } catch (exc) { + throw new Error( + `Got an exception when trying to parse non-JSON ${maybeJson}: ${exc}`, + ) + } +} + module.exports = { getOTPVersion, getElixirVersion, diff --git a/src/setup-beam.js b/src/setup-beam.js index 9d71ef9..8bf8c8e 100644 --- a/src/setup-beam.js +++ b/src/setup-beam.js @@ -247,7 +247,7 @@ async function getOTPVersions(osVersion) { }) } else if (process.platform === 'win32') { otpVersionsListings.forEach((otpVersionsListing) => { - JSON.parse(otpVersionsListing) + jsonParse(otpVersionsListing) .map((x) => x.assets) .flat() .filter((x) => x.name.match(/^otp_win64_.*.exe$/)) @@ -294,7 +294,7 @@ async function getGleamVersions() { ) const gleamVersionsListing = [] resultJSONs.forEach((resultJSON) => { - JSON.parse(resultJSON) + jsonParse(resultJSON) .map((x) => x.tag_name) .sort() .forEach((v) => gleamVersionsListing.push(v)) @@ -309,7 +309,7 @@ async function getRebar3Versions() { ) const rebar3VersionsListing = [] resultJSONs.forEach((resultJSON) => { - JSON.parse(resultJSON) + jsonParse(resultJSON) .map((x) => x.tag_name) .sort() .forEach((v) => rebar3VersionsListing.push(v)) @@ -416,33 +416,33 @@ async function get(url0, pageIdxs) { function getPage(pageIdx) { return new Promise((resolve, reject) => { const url = new URL(url0) + const headers = { + 'user-agent': 'setup-beam', + } + if (process.env.GITHUB_TOKEN) { + headers.authorization = `Bearer ${process.env.GITHUB_TOKEN}` + } if (pageIdx !== null) { url.searchParams.append('page', pageIdx) } https - .get( - url, - { - headers: { 'user-agent': 'setup-beam' }, - }, - (res) => { - let data = '' - res.on('data', (chunk) => { - data += chunk - }) - res.on('end', () => { - if (res.statusCode >= 400 && res.statusCode <= 599) { - reject( - new Error( - `Got ${res.statusCode} from ${url}. Exiting with error`, - ), - ) - } else { - resolve(data) - } - }) - }, - ) + .get(url, { headers }, (res) => { + let data = '' + res.on('data', (chunk) => { + data += chunk + }) + res.on('end', () => { + if (res.statusCode >= 400 && res.statusCode <= 599) { + reject( + new Error( + `Got ${res.statusCode} from ${url}. Exiting with error`, + ), + ) + } else { + resolve(data) + } + }) + }) .on('error', (err) => { reject(err) }) @@ -523,6 +523,16 @@ function parseVersionFile(versionFilePath0) { return appVersions } +function jsonParse(maybeJson) { + try { + return JSON.parse(maybeJson) + } catch (exc) { + throw new Error( + `Got an exception when trying to parse non-JSON ${maybeJson}: ${exc}`, + ) + } +} + module.exports = { getOTPVersion, getElixirVersion,