@daiyam/artifact-vsx-ts
Version:
The configuration to create Visual Studio extensions and publish them on Visual Studio Marketplace and Open VSX Registry.
79 lines (64 loc) • 2.29 kB
text/typescript
import vscode from 'vscode';
import pkg from '../package.json';
import { DocumentManager } from './document-manager.js';
import { CONFIG_KEY, setupSettings } from './utils/settings.js';
import { hello } from './commands/hello.js';
const VERSION_KEY = 'version';
function setup(): void { // {{{
} // }}}
async function showWhatsNewMessage(version: string) { // {{{
const actions: vscode.MessageItem[] = [{
title: 'Homepage',
}, {
title: 'Release Notes',
}];
const result = await vscode.window.showInformationMessage(
`${pkg.displayName} has been updated to v${version} — check out what's new!`,
...actions,
);
if(result !== null) {
if(result === actions[0]) {
await vscode.commands.executeCommand(
'vscode.open',
vscode.Uri.parse(`${pkg.homepage}`),
);
}
else if(result === actions[1]) {
await vscode.commands.executeCommand(
'vscode.open',
vscode.Uri.parse(`${pkg.homepage}/blob/master/CHANGELOG.md`),
);
}
}
} // }}}
export async function activate(context: vscode.ExtensionContext): Promise<void> { // {{{
await setupSettings(context);
const previousVersion = context.globalState.get<string>(VERSION_KEY);
const currentVersion = pkg.version;
const config = vscode.workspace.getConfiguration(CONFIG_KEY);
if(previousVersion === undefined || currentVersion !== previousVersion) {
void context.globalState.update(VERSION_KEY, currentVersion);
const notification = config.get<string>('notification');
if(previousVersion === undefined) {
// don't show notification on install
}
else if(notification === 'major') {
if(currentVersion.split('.')[0] > previousVersion.split('.')[0]) {
void showWhatsNewMessage(currentVersion);
}
}
else if(notification === 'minor') {
if(currentVersion.split('.')[0] > previousVersion.split('.')[0] || (currentVersion.split('.')[0] === previousVersion.split('.')[0] && currentVersion.split('.')[1] > previousVersion.split('.')[1])) {
void showWhatsNewMessage(currentVersion);
}
}
else if(notification !== 'none') {
void showWhatsNewMessage(currentVersion);
}
}
const documentManager = new DocumentManager();
documentManager.activate(context);
context.subscriptions.push(
vscode.commands.registerCommand(`${CONFIG_KEY}.hello`, hello),
);
} // }}}