UNPKG

@daiyam/artifact-vsx-ts

Version:

The configuration to create Visual Studio extensions and publish them on Visual Studio Marketplace and Open VSX Registry.

75 lines (62 loc) 2.08 kB
import vscode from 'vscode'; import pkg from '../package.json'; const CONFIG_KEY = 'EXT_CFG_KEY'; 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( `EXT_DISPLAY_NAME 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> { // {{{ 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); } } setup(); vscode.workspace.onDidChangeConfiguration((event) => { if(event.affectsConfiguration(CONFIG_KEY)) { setup(); } }); } // }}}