generator-code
Version:
Yeoman generator for Visual Studio Code Extensions
47 lines (44 loc) • 2.09 kB
JavaScript
/*---------------------------------------------------------
* Copyright (C) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------*/
;
const request = require('request-light');
const fs = require('fs');
const path = require('path');
const fallbackVersion = '^1.54.0';
let versionPromise = undefined;
function getLatestVSCodeVersion() {
if (!versionPromise) {
versionPromise = request.xhr({ url: 'https://update.code.visualstudio.com/api/releases/stable', headers: { "X-API-Version": "2" } }).then(res => {
if (res.status === 200) {
try {
var tagsAndCommits = JSON.parse(res.responseText);
if (Array.isArray(tagsAndCommits) && tagsAndCommits.length > 0) {
var segments = tagsAndCommits[0].version.split('.');
if (segments.length === 3) {
return '^' + segments[0] + '.' + segments[1] + '.0';
}
}
} catch (e) {
console.log('Problem parsing version: ' + res.responseText, e);
}
} else {
console.warn('Unable to evaluate the latest vscode version: Status code: ' + res.status + ', ' + res.responseText);
}
console.warn('Falling back to: ' + fallbackVersion);
return fallbackVersion;
}, err => {
console.warn('Unable to evaluate the latest vscode version: Error: ', err);
console.warn('Falling back to: ' + fallbackVersion);
return fallbackVersion;
});
}
return versionPromise;
};
module.exports.getLatestVSCodeVersion = getLatestVSCodeVersion;
module.exports.getDependencyVersions = async function () {
const vscodeVersion = await getLatestVSCodeVersion();
const versions = JSON.parse((await fs.promises.readFile(path.join(__dirname, 'package.json'))).toString()).dependencies;
versions["@types/vscode"] = vscodeVersion
return versions;
}