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() });
}