support major-minor version pinning

Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
Andrea Luzzardi 2022-03-09 11:38:04 -08:00
parent 13b2e51327
commit ad17c50af5
3 changed files with 21 additions and 12 deletions

View file

@ -8,6 +8,12 @@ describe('install', () => {
expect(fs.existsSync(daggerBin)).toBe(true); expect(fs.existsSync(daggerBin)).toBe(true);
}, 100000); }, 100000);
it('acquires latest 0.1 version', async () => {
const daggerBin = await dagger.install('0.1');
console.log(daggerBin);
expect(fs.existsSync(daggerBin)).toBe(true);
}, 100000);
it('acquires 0.1.0-alpha.9 version of Dagger', async () => { it('acquires 0.1.0-alpha.9 version of Dagger', async () => {
const daggerBin = await dagger.install('0.1.0-alpha.9'); const daggerBin = await dagger.install('0.1.0-alpha.9');
console.log(daggerBin); console.log(daggerBin);

13
dist/index.js generated vendored
View file

@ -101,9 +101,7 @@ const osPlat = os.platform();
const osArch = os.arch(); const osArch = os.arch();
function install(version) { function install(version) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
if (version == 'latest') { version = yield getVersionMapping(version);
version = yield getLatestVersion();
}
version = version.replace(/^v/, ''); version = version.replace(/^v/, '');
const downloadUrl = util.format('%s/releases/%s/%s', s3URL, version, getFilename(version)); const downloadUrl = util.format('%s/releases/%s/%s', s3URL, version, getFilename(version));
core.info(`Downloading ${downloadUrl}`); core.info(`Downloading ${downloadUrl}`);
@ -126,10 +124,13 @@ function install(version) {
}); });
} }
exports.install = install; exports.install = install;
function getLatestVersion() { function getVersionMapping(version) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const _http = new http.HttpClient('dagger-for-github'); const _http = new http.HttpClient('dagger-for-github');
const res = yield _http.get(`${s3URL}/latest_version`); const res = yield _http.get(`${s3URL}/versions/${version}`);
if (res.message.statusCode != 200) {
return version;
}
return yield res.readBody().then(body => { return yield res.readBody().then(body => {
return body.trim(); return body.trim();
}); });
@ -137,7 +138,7 @@ function getLatestVersion() {
} }
const getFilename = (version) => { const getFilename = (version) => {
const platform = osPlat == 'win32' ? 'windows' : osPlat; const platform = osPlat == 'win32' ? 'windows' : osPlat;
const arch = osArch == 'x64' ? 'amd64' : 'i386'; const arch = osArch == 'x64' ? 'amd64' : osArch;
const ext = osPlat == 'win32' ? '.zip' : '.tar.gz'; const ext = osPlat == 'win32' ? '.zip' : '.tar.gz';
return util.format('dagger_v%s_%s_%s%s', version, platform, arch, ext); return util.format('dagger_v%s_%s_%s%s', version, platform, arch, ext);
}; };

View file

@ -10,9 +10,7 @@ const osPlat: string = os.platform();
const osArch: string = os.arch(); const osArch: string = os.arch();
export async function install(version: string): Promise<string> { export async function install(version: string): Promise<string> {
if (version == 'latest') { version = await getVersionMapping(version);
version = await getLatestVersion();
}
version = version.replace(/^v/, ''); version = version.replace(/^v/, '');
const downloadUrl: string = util.format('%s/releases/%s/%s', s3URL, version, getFilename(version)); const downloadUrl: string = util.format('%s/releases/%s/%s', s3URL, version, getFilename(version));
@ -38,9 +36,13 @@ export async function install(version: string): Promise<string> {
return path.join(cachePath, osPlat == 'win32' ? 'dagger.exe' : 'dagger'); return path.join(cachePath, osPlat == 'win32' ? 'dagger.exe' : 'dagger');
} }
async function getLatestVersion(): Promise<string> { async function getVersionMapping(version: string): Promise<string> {
const _http = new http.HttpClient('dagger-for-github'); const _http = new http.HttpClient('dagger-for-github');
const res = await _http.get(`${s3URL}/latest_version`); const res = await _http.get(`${s3URL}/versions/${version}`);
if (res.message.statusCode != 200) {
return version;
}
return await res.readBody().then(body => { return await res.readBody().then(body => {
return body.trim(); return body.trim();
}); });
@ -48,7 +50,7 @@ async function getLatestVersion(): Promise<string> {
const getFilename = (version: string): string => { const getFilename = (version: string): string => {
const platform: string = osPlat == 'win32' ? 'windows' : osPlat; const platform: string = osPlat == 'win32' ? 'windows' : osPlat;
const arch: string = osArch == 'x64' ? 'amd64' : 'i386'; const arch: string = osArch == 'x64' ? 'amd64' : osArch;
const ext: string = osPlat == 'win32' ? '.zip' : '.tar.gz'; const ext: string = osPlat == 'win32' ? '.zip' : '.tar.gz';
return util.format('dagger_v%s_%s_%s%s', version, platform, arch, ext); return util.format('dagger_v%s_%s_%s%s', version, platform, arch, ext);
}; };