UNPKG

@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
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), ); } // }}}