From 0f7abeb03599964e58d979820134c9e7a61a690e Mon Sep 17 00:00:00 2001 From: Veetaha Date: Sun, 16 Feb 2020 03:12:25 +0200 Subject: [PATCH] vscode: add release tag option to fetchArtifactReleaseInfo() --- ...se_info.ts => fetch_artifact_release_info.ts} | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) rename editors/code/src/installation/{fetch_latest_artifact_release_info.ts => fetch_artifact_release_info.ts} (68%) diff --git a/editors/code/src/installation/fetch_latest_artifact_release_info.ts b/editors/code/src/installation/fetch_artifact_release_info.ts similarity index 68% rename from editors/code/src/installation/fetch_latest_artifact_release_info.ts rename to editors/code/src/installation/fetch_artifact_release_info.ts index 29ee029a708..7d497057aa4 100644 --- a/editors/code/src/installation/fetch_latest_artifact_release_info.ts +++ b/editors/code/src/installation/fetch_artifact_release_info.ts @@ -3,24 +3,30 @@ import { GithubRepo, ArtifactReleaseInfo } from "./interfaces"; const GITHUB_API_ENDPOINT_URL = "https://api.github.com"; + /** - * Fetches the latest release from GitHub `repo` and returns metadata about - * `artifactFileName` shipped with this release or `null` if no such artifact was published. + * Fetches the release with `releaseTag` (or just latest release when not specified) + * from GitHub `repo` and returns metadata about `artifactFileName` shipped with + * this release or `null` if no such artifact was published. */ -export async function fetchLatestArtifactReleaseInfo( - repo: GithubRepo, artifactFileName: string +export async function fetchArtifactReleaseInfo( + repo: GithubRepo, artifactFileName: string, releaseTag?: string ): Promise { const repoOwner = encodeURIComponent(repo.owner); const repoName = encodeURIComponent(repo.name); - const apiEndpointPath = `/repos/${repoOwner}/${repoName}/releases/latest`; + const apiEndpointPath = releaseTag + ? `/repos/${repoOwner}/${repoName}/releases/tags/${releaseTag}` + : `/repos/${repoOwner}/${repoName}/releases/latest`; + const requestUrl = GITHUB_API_ENDPOINT_URL + apiEndpointPath; // We skip runtime type checks for simplicity (here we cast from `any` to `GithubRelease`) console.log("Issuing request for released artifacts metadata to", requestUrl); + // FIXME: handle non-ok response const response: GithubRelease = await fetch(requestUrl, { headers: { Accept: "application/vnd.github.v3+json" } })