Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
resolving comment
  • Loading branch information
dmitry-shibanov committed Sep 19, 2022
commit 7f8371344eca04ee1465dde35ff35f34a84b9e66
11 changes: 7 additions & 4 deletions __tests__/distributors/microsoft-installer.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { MicrosoftDistributions } from '../../src/distributions/microsoft/installer';
import * as tc from '@actions/tool-cache';
import data from '../../versions-manifest.json';
import data from '../../src/distributions/microsoft/microsoft-openjdk-versions.json';
import * as httpm from '@actions/http-client';
import * as core from '@actions/core';

describe('findPackageForDownload', () => {
Expand All @@ -16,9 +17,11 @@ describe('findPackageForDownload', () => {
checkLatest: false
});

spyGetManifestFromRepo = jest.spyOn(tc, 'getManifestFromRepo');
spyGetManifestFromRepo.mockImplementation(() => {
return data;
spyGetManifestFromRepo = jest.spyOn(httpm.HttpClient.prototype, 'getJson');
spyGetManifestFromRepo.mockReturnValue({
result: JSON.stringify(data),
statusCode: 200,
headers: {}
});

spyDebug = jest.spyOn(core, 'debug');
Expand Down
34 changes: 32 additions & 2 deletions dist/setup/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -104456,8 +104456,38 @@ class MicrosoftDistributions extends base_installer_1.JavaBase {
// TODO get these dynamically!
// We will need Microsoft to add an endpoint where we can query for versions.
const token = core.getInput('token');
const manifest = yield tc.getManifestFromRepo('dmitry-shibanov', 'setup-java', token, 'add-json-for-microsoft-versions');
return manifest;
const owner = 'dmitry-shibanov';
const repository = 'setup-java';
const branch = 'add-json-for-microsoft-versions';
const filePath = 'src/distributions/microsoft/microsoft-openjdk-versions.json';
let releases = [];
const fileUrl = `https://api.github.com/repos/${owner}/${repository}/contents/${filePath}?ref=${branch}`;
const headers = {
authorization: token,
accept: 'application/vnd.github.VERSION.raw'
};
let response = null;
try {
response = yield this.http.getJson(fileUrl, headers);
if (!response.result) {
return null;
}
}
catch (err) {
core.debug(`Http request for microsoft-openjdk-versions.json failed with status code: ${response === null || response === void 0 ? void 0 : response.statusCode}`);
return null;
}
let versionsRaw = response.result;
if (versionsRaw) {
versionsRaw = versionsRaw.replace(/^\uFEFF/, '');
try {
releases = JSON.parse(versionsRaw);
}
catch (_a) {
core.debug('Invalid json');
}
}
return releases;
});
}
}
Expand Down
53 changes: 40 additions & 13 deletions src/distributions/microsoft/installer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,10 @@ import { JavaDownloadRelease, JavaInstallerOptions, JavaInstallerResults } from
import { extractJdkFile, getDownloadArchiveExtension } from '../../util';
import * as core from '@actions/core';
import * as tc from '@actions/tool-cache';
import { OutgoingHttpHeaders } from 'http';
import fs from 'fs';
import path from 'path';

export interface IToolRelease {
version: string;
stable: boolean;
files: tc.IToolReleaseFile[];
}
import { ITypedResponse } from '@actions/http-client/interfaces';

export class MicrosoftDistributions extends JavaBase {
constructor(installerOptions: JavaInstallerOptions) {
Expand Down Expand Up @@ -76,13 +72,44 @@ export class MicrosoftDistributions extends JavaBase {
// TODO get these dynamically!
// We will need Microsoft to add an endpoint where we can query for versions.
const token = core.getInput('token');
const manifest = await tc.getManifestFromRepo(
'dmitry-shibanov',
'setup-java',
token,
'add-json-for-microsoft-versions'
);
const owner = 'dmitry-shibanov';
const repository = 'setup-java';
const branch = 'add-json-for-microsoft-versions';
const filePath = 'src/distributions/microsoft/microsoft-openjdk-versions.json';

let releases: tc.IToolRelease[] = [];
const fileUrl = `https://api.github.com/repos/${owner}/${repository}/contents/${filePath}?ref=${branch}`;

const headers: OutgoingHttpHeaders = {
authorization: token,
accept: 'application/vnd.github.VERSION.raw'
};

let response: ITypedResponse<string> | null = null;

try {
response = await this.http.getJson<string>(fileUrl, headers);
if (!response.result) {
return null;
}
} catch (err) {
core.debug(
`Http request for microsoft-openjdk-versions.json failed with status code: ${response?.statusCode}`
);
return null;
}

let versionsRaw = response.result;

if (versionsRaw) {
versionsRaw = versionsRaw.replace(/^\uFEFF/, '');
try {
releases = JSON.parse(versionsRaw);
} catch {
core.debug('Invalid json');
}
}

return manifest;
return releases;
}
}
File renamed without changes.