mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -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
|
* Checks whether a newer version of azdata is available - and if it is prompts the user to download and
|
||||||
* install it.
|
* 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> {
|
export async function checkAndUpgradeAzdata(currentAzdata: IAzdataTool | undefined): Promise<boolean> {
|
||||||
if (currentAzdata === undefined) {
|
if (currentAzdata !== undefined) {
|
||||||
currentAzdata = await findAzdata();
|
const newVersion = await discoverLatestAvailableAzdataVersion();
|
||||||
}
|
if (newVersion.compare(currentAzdata.cachedVersion) === 1) {
|
||||||
const newVersion = await discoverLatestAvailableAzdataVersion();
|
//update if available and user wants it.
|
||||||
if (newVersion.compare(currentAzdata.cachedVersion) === 1) {
|
const response = await vscode.window.showInformationMessage(loc.promptForAzdataUpgrade(newVersion.raw), loc.yes, loc.no);
|
||||||
const response = await vscode.window.showInformationMessage(loc.promptForAzdataUpgrade(newVersion.raw), loc.yes, loc.no);
|
if (response === loc.yes) {
|
||||||
if (response === loc.yes) {
|
await upgradeAzdata();
|
||||||
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)}`);
|
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'];
|
const version = azdataReleaseInfo[process.platform]['version'];
|
||||||
Logger.log(loc.foundAzdataVersionToUpgradeTo(version));
|
Logger.log(loc.latestAzdataVersionAvailable(version));
|
||||||
return new SemVer(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)}`);
|
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();
|
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);
|
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];
|
// const packageName = output.split('\n')[1].split(' ')[1];
|
||||||
// // the version string is the first part of the package sting before '~'
|
// // the version string is the first part of the package sting before '~'
|
||||||
// const version = packageName.split('~')[0];
|
// const version = packageName.split('~')[0];
|
||||||
// Logger.log(loc.foundAzdataVersionToUpgradeTo(version));
|
// Logger.log(loc.latestAzdataVersionAvailable(version));
|
||||||
// return new SemVer(version);
|
// return new SemVer(version);
|
||||||
// }
|
// }
|
||||||
|
|||||||
@@ -13,11 +13,14 @@ let localAzdata: IAzdataTool | undefined = undefined;
|
|||||||
export async function activate(): Promise<azdataExt.IExtension> {
|
export async function activate(): Promise<azdataExt.IExtension> {
|
||||||
localAzdata = await checkForAzdata();
|
localAzdata = await checkForAzdata();
|
||||||
// Don't block on this since we want the extension to finish activating without needing user input
|
// 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)
|
checkAndUpgradeAzdata(localAzdata)
|
||||||
.then(async () => {
|
.then(async upgradePerformed => {
|
||||||
localAzdata = await findAzdata(); // now again find and return the currently installed azdata
|
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 {
|
return {
|
||||||
azdata: {
|
azdata: {
|
||||||
arc: {
|
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 stderrOutput = (stderr: string): string => localize('azdata.stderrOutput', "stderr : {0}", stderr);
|
||||||
export const checkingLatestAzdataVersion = localize('azdata.checkingLatestAzdataVersion', "Checking for latest version of azdata");
|
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 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 latestAzdataVersionAvailable = (version: string): string => localize('azdata.latestAzdataVersionAvailable', "Latest available azdata version: {0}.", 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 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 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 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 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 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 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 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 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");
|
export const noAzdata = localize('azdata.NoAzdata', "No azdata available");
|
||||||
|
|||||||
Reference in New Issue
Block a user