export async function activate()

in src/main.ts [30:110]


export async function activate(context: vscode.ExtensionContext) {
	// lets make sure we support this platform first
	let supported = await Utils.verifyPlatform();

	if (!supported) {
		vscode.window.showErrorMessage('Unsupported platform');
		return;
	}

	Telemetry.initialize(context);
	let config: IConfig = JSON.parse(JSON.stringify(baseConfig));
	config.installDirectory = path.join(__dirname, config.installDirectory);
	config.proxy = vscode.workspace.getConfiguration('http').get('proxy');
	config.strictSSL = vscode.workspace.getConfiguration('http').get('proxyStrictSSL') || true;

	let languageClient: SqlOpsDataClient;

	const serverdownloader = new ServerProvider(config);

	serverdownloader.eventEmitter.onAny(generateHandleServerProviderEvent());

	let clientOptions: ClientOptions = {
		providerId: Constants.providerId,
		errorHandler: new LanguageClientErrorHandler(),
		documentSelector: ['sql'],
		synchronize: {
			configurationSection: 'pgsql'
		},
	};

	let packageInfo = Utils.getPackageInfo();
	let commandObserver = new CommandObserver();
	const installationStart = Date.now();
	serverdownloader.getOrDownloadServer().then(e => {
		const installationComplete = Date.now();
		let serverOptions = generateServerOptions(e);
        languageClient = new SqlOpsDataClient(Constants.serviceName, serverOptions, clientOptions);
        for (let command of registerCommands(commandObserver, packageInfo, languageClient)) {
            context.subscriptions.push(command);
        }
        const processStart = Date.now();
        languageClient.onReady().then(() => {
            const processEnd = Date.now();
            statusView.text = 'Pgsql service started';
            setTimeout(() => {
                statusView.hide();
            }, 1500);
            Telemetry.sendTelemetryEvent('startup/LanguageClientStarted', {
                installationTime: String(installationComplete - installationStart),
                processStartupTime: String(processEnd - processStart),
                totalTime: String(processEnd - installationStart),
                beginningTimestamp: String(installationStart)
            });
            addDeployNotificationsHandler(languageClient, commandObserver);
		});
		statusView.show();
		statusView.text = 'Starting pgsql service';
		languageClient.start();
	}, _e => {
		Telemetry.sendTelemetryEvent('ServiceInitializingFailed');
		vscode.window.showErrorMessage('Failed to start Pgsql tools service');
	});

	let contextProvider = new ContextProvider();
	context.subscriptions.push(contextProvider);

	try {
		var pgProjects = await vscode.workspace.findFiles('{**/*.pgproj}');
		if (pgProjects.length > 0) {
			await Helper.checkProjectVersion(
				packageInfo.minSupportedPostgreSQLProjectSDK,
				packageInfo.maxSupportedPostgreSQLProjectSDK,
				pgProjects.map(p => p.fsPath),
				commandObserver);
		}
	} catch (err) {
		outputChannel.appendLine(`Failed to verify project SDK, error: ${err}`);
	}

	context.subscriptions.push({ dispose: () => languageClient.stop() });
}