neiam /action-setup-beam
action-setup-beam
public · Issues · Pulls · Labels · Forks · Compare · Actions queued
⭐
Log in to mark this repository.
Try to prevent 403 when accessing the GitHub API (#168)
37ac1c5 · Paulo F. Oliveira · 2023-01-04 07:27
Message
{commit_body(@commit)}
Files changed
modified
.github/workflows/action.yml
+4
−1
@@ -9,6 +9,9 @@ on:
| 9 | 9 | branches: |
| 10 | 10 | - main |
| 11 | 11 | |
| 12 | +env: | |
| 13 | + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
| 14 | + | |
| 12 | 15 | jobs: |
| 13 | 16 | check_integrity: |
| 14 | 17 | name: Expected local npm actions |
@@ -28,7 +31,7 @@ jobs:
| 28 | 31 | - run: npm run yamllint |
| 29 | 32 | - run: npm run jslint |
| 30 | 33 | - name: Check if build left artifacts |
| 31 | − run: git diff --exit-code | |
| 34 | + run: git diff --exit-code --ignore-space-at-eol | |
| 32 | 35 | |
| 33 | 36 | unit_tests_ubuntu: |
| 34 | 37 | name: Unit tests (Ubuntu) |
modified
.github/workflows/ubuntu.yml
+3
−0
@@ -9,6 +9,9 @@ on:
| 9 | 9 | branches: |
| 10 | 10 | - main |
| 11 | 11 | |
| 12 | +env: | |
| 13 | + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
| 14 | + | |
| 12 | 15 | jobs: |
| 13 | 16 | integration_test: |
| 14 | 17 | name: > |
modified
.github/workflows/windows.yml
+3
−0
@@ -9,6 +9,9 @@ on:
| 9 | 9 | branches: |
| 10 | 10 | - main |
| 11 | 11 | |
| 12 | +env: | |
| 13 | + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
| 14 | + | |
| 12 | 15 | jobs: |
| 13 | 16 | integration_test: |
| 14 | 17 | name: > |
modified
dist/index.js
+36
−26
@@ -7440,7 +7440,7 @@ async function getOTPVersions(osVersion) {
| 7440 | 7440 | }) |
| 7441 | 7441 | } else if (process.platform === 'win32') { |
| 7442 | 7442 | otpVersionsListings.forEach((otpVersionsListing) => { |
| 7443 | − JSON.parse(otpVersionsListing) | |
| 7443 | + jsonParse(otpVersionsListing) | |
| 7444 | 7444 | .map((x) => x.assets) |
| 7445 | 7445 | .flat() |
| 7446 | 7446 | .filter((x) => x.name.match(/^otp_win64_.*.exe$/)) |
@@ -7487,7 +7487,7 @@ async function getGleamVersions() {
| 7487 | 7487 | ) |
| 7488 | 7488 | const gleamVersionsListing = [] |
| 7489 | 7489 | resultJSONs.forEach((resultJSON) => { |
| 7490 | − JSON.parse(resultJSON) | |
| 7490 | + jsonParse(resultJSON) | |
| 7491 | 7491 | .map((x) => x.tag_name) |
| 7492 | 7492 | .sort() |
| 7493 | 7493 | .forEach((v) => gleamVersionsListing.push(v)) |
@@ -7502,7 +7502,7 @@ async function getRebar3Versions() {
| 7502 | 7502 | ) |
| 7503 | 7503 | const rebar3VersionsListing = [] |
| 7504 | 7504 | resultJSONs.forEach((resultJSON) => { |
| 7505 | − JSON.parse(resultJSON) | |
| 7505 | + jsonParse(resultJSON) | |
| 7506 | 7506 | .map((x) => x.tag_name) |
| 7507 | 7507 | .sort() |
| 7508 | 7508 | .forEach((v) => rebar3VersionsListing.push(v)) |
@@ -7609,33 +7609,33 @@ async function get(url0, pageIdxs) {
| 7609 | 7609 | function getPage(pageIdx) { |
| 7610 | 7610 | return new Promise((resolve, reject) => { |
| 7611 | 7611 | const url = new URL(url0) |
| 7612 | + const headers = { | |
| 7613 | + 'user-agent': 'setup-beam', | |
| 7614 | + } | |
| 7615 | + if (process.env.GITHUB_TOKEN) { | |
| 7616 | + headers.authorization = `Bearer ${process.env.GITHUB_TOKEN}` | |
| 7617 | + } | |
| 7612 | 7618 | if (pageIdx !== null) { |
| 7613 | 7619 | url.searchParams.append('page', pageIdx) |
| 7614 | 7620 | } |
| 7615 | 7621 | https |
| 7616 | − .get( | |
| 7617 | − url, | |
| 7618 | − { | |
| 7619 | − headers: { 'user-agent': 'setup-beam' }, | |
| 7620 | − }, | |
| 7621 | − (res) => { | |
| 7622 | − let data = '' | |
| 7623 | − res.on('data', (chunk) => { | |
| 7624 | − data += chunk | |
| 7625 | − }) | |
| 7626 | − res.on('end', () => { | |
| 7627 | − if (res.statusCode >= 400 && res.statusCode <= 599) { | |
| 7628 | − reject( | |
| 7629 | − new Error( | |
| 7630 | − `Got ${res.statusCode} from ${url}. Exiting with error`, | |
| 7631 | − ), | |
| 7632 | − ) | |
| 7633 | − } else { | |
| 7634 | − resolve(data) | |
| 7635 | − } | |
| 7636 | − }) | |
| 7637 | − }, | |
| 7638 | − ) | |
| 7622 | + .get(url, { headers }, (res) => { | |
| 7623 | + let data = '' | |
| 7624 | + res.on('data', (chunk) => { | |
| 7625 | + data += chunk | |
| 7626 | + }) | |
| 7627 | + res.on('end', () => { | |
| 7628 | + if (res.statusCode >= 400 && res.statusCode <= 599) { | |
| 7629 | + reject( | |
| 7630 | + new Error( | |
| 7631 | + `Got ${res.statusCode} from ${url}. Exiting with error`, | |
| 7632 | + ), | |
| 7633 | + ) | |
| 7634 | + } else { | |
| 7635 | + resolve(data) | |
| 7636 | + } | |
| 7637 | + }) | |
| 7638 | + }) | |
| 7639 | 7639 | .on('error', (err) => { |
| 7640 | 7640 | reject(err) |
| 7641 | 7641 | }) |
@@ -7716,6 +7716,16 @@ function parseVersionFile(versionFilePath0) {
| 7716 | 7716 | return appVersions |
| 7717 | 7717 | } |
| 7718 | 7718 | |
| 7719 | +function jsonParse(maybeJson) { | |
| 7720 | + try { | |
| 7721 | + return JSON.parse(maybeJson) | |
| 7722 | + } catch (exc) { | |
| 7723 | + throw new Error( | |
| 7724 | + `Got an exception when trying to parse non-JSON ${maybeJson}: ${exc}`, | |
| 7725 | + ) | |
| 7726 | + } | |
| 7727 | +} | |
| 7728 | + | |
| 7719 | 7729 | module.exports = { |
| 7720 | 7730 | getOTPVersion, |
| 7721 | 7731 | getElixirVersion, |
modified
src/setup-beam.js
+36
−26
@@ -247,7 +247,7 @@ async function getOTPVersions(osVersion) {
| 247 | 247 | }) |
| 248 | 248 | } else if (process.platform === 'win32') { |
| 249 | 249 | otpVersionsListings.forEach((otpVersionsListing) => { |
| 250 | − JSON.parse(otpVersionsListing) | |
| 250 | + jsonParse(otpVersionsListing) | |
| 251 | 251 | .map((x) => x.assets) |
| 252 | 252 | .flat() |
| 253 | 253 | .filter((x) => x.name.match(/^otp_win64_.*.exe$/)) |
@@ -294,7 +294,7 @@ async function getGleamVersions() {
| 294 | 294 | ) |
| 295 | 295 | const gleamVersionsListing = [] |
| 296 | 296 | resultJSONs.forEach((resultJSON) => { |
| 297 | − JSON.parse(resultJSON) | |
| 297 | + jsonParse(resultJSON) | |
| 298 | 298 | .map((x) => x.tag_name) |
| 299 | 299 | .sort() |
| 300 | 300 | .forEach((v) => gleamVersionsListing.push(v)) |
@@ -309,7 +309,7 @@ async function getRebar3Versions() {
| 309 | 309 | ) |
| 310 | 310 | const rebar3VersionsListing = [] |
| 311 | 311 | resultJSONs.forEach((resultJSON) => { |
| 312 | − JSON.parse(resultJSON) | |
| 312 | + jsonParse(resultJSON) | |
| 313 | 313 | .map((x) => x.tag_name) |
| 314 | 314 | .sort() |
| 315 | 315 | .forEach((v) => rebar3VersionsListing.push(v)) |
@@ -416,33 +416,33 @@ async function get(url0, pageIdxs) {
| 416 | 416 | function getPage(pageIdx) { |
| 417 | 417 | return new Promise((resolve, reject) => { |
| 418 | 418 | const url = new URL(url0) |
| 419 | + const headers = { | |
| 420 | + 'user-agent': 'setup-beam', | |
| 421 | + } | |
| 422 | + if (process.env.GITHUB_TOKEN) { | |
| 423 | + headers.authorization = `Bearer ${process.env.GITHUB_TOKEN}` | |
| 424 | + } | |
| 419 | 425 | if (pageIdx !== null) { |
| 420 | 426 | url.searchParams.append('page', pageIdx) |
| 421 | 427 | } |
| 422 | 428 | https |
| 423 | − .get( | |
| 424 | − url, | |
| 425 | − { | |
| 426 | − headers: { 'user-agent': 'setup-beam' }, | |
| 427 | − }, | |
| 428 | − (res) => { | |
| 429 | − let data = '' | |
| 430 | − res.on('data', (chunk) => { | |
| 431 | − data += chunk | |
| 432 | − }) | |
| 433 | − res.on('end', () => { | |
| 434 | − if (res.statusCode >= 400 && res.statusCode <= 599) { | |
| 435 | − reject( | |
| 436 | − new Error( | |
| 437 | − `Got ${res.statusCode} from ${url}. Exiting with error`, | |
| 438 | − ), | |
| 439 | − ) | |
| 440 | − } else { | |
| 441 | − resolve(data) | |
| 442 | − } | |
| 443 | − }) | |
| 444 | − }, | |
| 445 | − ) | |
| 429 | + .get(url, { headers }, (res) => { | |
| 430 | + let data = '' | |
| 431 | + res.on('data', (chunk) => { | |
| 432 | + data += chunk | |
| 433 | + }) | |
| 434 | + res.on('end', () => { | |
| 435 | + if (res.statusCode >= 400 && res.statusCode <= 599) { | |
| 436 | + reject( | |
| 437 | + new Error( | |
| 438 | + `Got ${res.statusCode} from ${url}. Exiting with error`, | |
| 439 | + ), | |
| 440 | + ) | |
| 441 | + } else { | |
| 442 | + resolve(data) | |
| 443 | + } | |
| 444 | + }) | |
| 445 | + }) | |
| 446 | 446 | .on('error', (err) => { |
| 447 | 447 | reject(err) |
| 448 | 448 | }) |
@@ -523,6 +523,16 @@ function parseVersionFile(versionFilePath0) {
| 523 | 523 | return appVersions |
| 524 | 524 | } |
| 525 | 525 | |
| 526 | +function jsonParse(maybeJson) { | |
| 527 | + try { | |
| 528 | + return JSON.parse(maybeJson) | |
| 529 | + } catch (exc) { | |
| 530 | + throw new Error( | |
| 531 | + `Got an exception when trying to parse non-JSON ${maybeJson}: ${exc}`, | |
| 532 | + ) | |
| 533 | + } | |
| 534 | +} | |
| 535 | + | |
| 526 | 536 | module.exports = { |
| 527 | 537 | getOTPVersion, |
| 528 | 538 | getElixirVersion, |
Parents: 2d314bc