private async createTerraformClient()

in src/clientHandler.ts [57:94]


  private async createTerraformClient(): Promise<TerraformLanguageClient> {
    const commandPrefix = this.shortUid.seq();

    const initializationOptions = this.getInitializationOptions(commandPrefix);

    const serverOptions = await this.getServerOptions();

    const documentSelector: DocumentSelector = [{ scheme: 'file', language: 'terraform' }];

    const clientOptions: LanguageClientOptions = {
      documentSelector: documentSelector,
      initializationOptions: initializationOptions,
      initializationFailedHandler: (error) => {
        this.reporter.sendTelemetryErrorEvent('initializationFailed', {
          err: `${error}`,
        });
        return false;
      },
      outputChannel: this.outputChannel,
      revealOutputChannelOn: RevealOutputChannelOn.Never,
    };

    const id = `terraform`;
    const client = new LanguageClient(id, serverOptions, clientOptions);

    if (vscode.env.isTelemetryEnabled) {
      client.registerFeature(new TelemetryFeature(client, this.reporter));
    }

    client.onDidChangeState((event) => {
      console.log(`Client: ${State[event.oldState]} --> ${State[event.newState]}`);
      if (event.newState === State.Stopped) {
        this.reporter.sendRawTelemetryEvent('stopClient');
      }
    });

    return { commandPrefix, client };
  }