mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Improve discovery/upgrade messages (#12003)
This commit is contained in:
@@ -228,19 +228,26 @@ export async function upgradeAzdata(): Promise<void> {
|
||||
/**
|
||||
* Checks whether a newer version of azdata is available - and if it is prompts the user to download and
|
||||
* install it.
|
||||
* @param currentAzdata The current version of azdata to check against
|
||||
* @param currentAzdata The current version of azdata to check . This function is a no-o if currentAzdata is undefined.
|
||||
* returns true if an upgrade was performed and false otherwise.
|
||||
*/
|
||||
export async function checkAndUpgradeAzdata(currentAzdata?: IAzdataTool): Promise<void> {
|
||||
if (currentAzdata === undefined) {
|
||||
currentAzdata = await findAzdata();
|
||||
}
|
||||
const newVersion = await discoverLatestAvailableAzdataVersion();
|
||||
if (newVersion.compare(currentAzdata.cachedVersion) === 1) {
|
||||
const response = await vscode.window.showInformationMessage(loc.promptForAzdataUpgrade(newVersion.raw), loc.yes, loc.no);
|
||||
if (response === loc.yes) {
|
||||
await upgradeAzdata();
|
||||
export async function checkAndUpgradeAzdata(currentAzdata: IAzdataTool | undefined): Promise<boolean> {
|
||||
if (currentAzdata !== undefined) {
|
||||
const newVersion = await discoverLatestAvailableAzdataVersion();
|
||||
if (newVersion.compare(currentAzdata.cachedVersion) === 1) {
|
||||
//update if available and user wants it.
|
||||
const response = await vscode.window.showInformationMessage(loc.promptForAzdataUpgrade(newVersion.raw), loc.yes, loc.no);
|
||||
if (response === loc.yes) {
|
||||
await upgradeAzdata();
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
Logger.log(loc.currentlyInstalledVersionIsLatest(currentAzdata.cachedVersion.raw));
|
||||
}
|
||||
} else {
|
||||
Logger.log(loc.upgradeCheckSkipped);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -327,7 +334,7 @@ async function discoverLatestAzdataVersionFromJson(): Promise<SemVer> {
|
||||
throw Error(`failed to parse the JSON of contents at: ${azdataHostname}/${azdataReleaseJson}, text being parsed: '${fileContents}', error:${getErrorMessage(e)}`);
|
||||
}
|
||||
const version = azdataReleaseInfo[process.platform]['version'];
|
||||
Logger.log(loc.foundAzdataVersionToUpgradeTo(version));
|
||||
Logger.log(loc.latestAzdataVersionAvailable(version));
|
||||
return new SemVer(version);
|
||||
}
|
||||
|
||||
@@ -357,7 +364,7 @@ async function discoverLatestStableAzdataVersionDarwin(): Promise<SemVer> {
|
||||
throw Error(`failed to parse the JSON contents output of: 'brew info azdata-cli --json', text being parsed: '${brewInfoOutput}', error:${getErrorMessage(e)}`);
|
||||
}
|
||||
const azdataPackageVersionInfo: AzdataDarwinPackageVersionInfo = brewInfoAzdataCliJson.shift();
|
||||
Logger.log(loc.foundAzdataVersionToUpgradeTo(azdataPackageVersionInfo.versions.stable));
|
||||
Logger.log(loc.latestAzdataVersionAvailable(azdataPackageVersionInfo.versions.stable));
|
||||
return new SemVer(azdataPackageVersionInfo.versions.stable);
|
||||
}
|
||||
|
||||
@@ -382,6 +389,6 @@ async function executeAzdataCommand(command: string, args: string[], additionalE
|
||||
// const packageName = output.split('\n')[1].split(' ')[1];
|
||||
// // the version string is the first part of the package sting before '~'
|
||||
// const version = packageName.split('~')[0];
|
||||
// Logger.log(loc.foundAzdataVersionToUpgradeTo(version));
|
||||
// Logger.log(loc.latestAzdataVersionAvailable(version));
|
||||
// return new SemVer(version);
|
||||
// }
|
||||
|
||||
@@ -13,11 +13,14 @@ let localAzdata: IAzdataTool | undefined = undefined;
|
||||
export async function activate(): Promise<azdataExt.IExtension> {
|
||||
localAzdata = await checkForAzdata();
|
||||
// Don't block on this since we want the extension to finish activating without needing user input
|
||||
// upgrade if available and user wants it.
|
||||
checkAndUpgradeAzdata(localAzdata)
|
||||
.then(async () => {
|
||||
localAzdata = await findAzdata(); // now again find and return the currently installed azdata
|
||||
.then(async upgradePerformed => {
|
||||
if (upgradePerformed) { // If upgrade was performed then find and save the new azdata
|
||||
localAzdata = await findAzdata();
|
||||
}
|
||||
})
|
||||
.catch(err => vscode.window.showWarningMessage(loc.updateError(err))); //update if available and user wants it.
|
||||
.catch(err => vscode.window.showWarningMessage(loc.upgradeError(err)));
|
||||
return {
|
||||
azdata: {
|
||||
arc: {
|
||||
|
||||
@@ -23,14 +23,16 @@ export const stdoutOutput = (stdout: string): string => localize('azdata.stdoutO
|
||||
export const stderrOutput = (stderr: string): string => localize('azdata.stderrOutput', "stderr : {0}", stderr);
|
||||
export const checkingLatestAzdataVersion = localize('azdata.checkingLatestAzdataVersion', "Checking for latest version of azdata");
|
||||
export const gettingTextContentsOfUrl = (url: string): string => localize('azdata.gettingTextContentsOfUrl', "Getting text contents of resource at URL {0}", url);
|
||||
export const foundAzdataVersionToUpgradeTo = (version: string): string => localize('azdata.versionForUpgrade', "Found version {0} that azdata-cli can be upgraded to.", version);
|
||||
export const promptForAzdataUpgrade = (version: string): string => localize('azdata.promptForAzdataUpgrade', "An updated version of azdata ( {0} ) is available, do you wish to install it now?", version);
|
||||
export const latestAzdataVersionAvailable = (version: string): string => localize('azdata.latestAzdataVersionAvailable', "Latest available azdata version: {0}.", version);
|
||||
export const currentlyInstalledVersionIsLatest = (currentVersion: string): string => localize('azdata.currentlyInstalledVersionIsLatest', "Currently installed version of azdata: {0} is same or newer than any other version available", currentVersion);
|
||||
export const promptForAzdataUpgrade = (version: string): string => localize('azdata.promptForAzdataUpgrade', "A new version of azdata ( {0} ) is available, do you wish to upgrade to it now?", version);
|
||||
export const couldNotFindAzdata = (err: any): string => localize('azdata.couldNotFindAzdata', "Could not find azdata. Error : {0}", err.message ?? err);
|
||||
export const couldNotFindAzdataWithPrompt = localize('azdata.couldNotFindAzdataWithPrompt', "Could not find azdata, install it now? If not then some features will not be able to function.");
|
||||
export const downloadError = localize('azdata.downloadError', "Error while downloading");
|
||||
export const installError = (err: any): string => localize('azdata.installError', "Error installing azdata : {0}", err.message ?? err);
|
||||
export const platformUnsupported = (platform: string): string => localize('azdata.platformUnsupported', "Platform '{0}' is currently unsupported", platform);
|
||||
export const unexpectedCommandError = (errMsg: string): string => localize('azdata.unexpectedCommandError', "Unexpected error executing command : {0}", errMsg);
|
||||
export const updateError = (err: any): string => localize('azdata.updateError', "Error updating azdata : {0}", err.message ?? err);
|
||||
export const upgradeError = (err: any): string => localize('azdata.upgradeError', "Error upgrading azdata : {0}", err.message ?? err);
|
||||
export const upgradeCheckSkipped = localize('azdata.updateCheckSkipped', "No check for new azdata version availability performed as azdata was not found to be installed");
|
||||
export const unexpectedExitCode = (code: number, err: string): string => localize('azdata.unexpectedExitCode', "Unexpected exit code from command : {1} ({0})", code, err);
|
||||
export const noAzdata = localize('azdata.NoAzdata', "No azdata available");
|
||||
|
||||
Reference in New Issue
Block a user