public static async GetInstance()

in src/extension/src/coreTemplateStudio.ts [37:71]


  public static async GetInstance(context: vscode.ExtensionContext | undefined): Promise<CoreTemplateStudio> {
    if (CoreTemplateStudio._instance) {
      return Promise.resolve(CoreTemplateStudio._instance);
    }

    const platform = process.platform;
    let cliExecutableName = CLI.BASE_CLI_TOOL_NAME;
    let extensionPath;

    if (context) {
      extensionPath = context.extensionPath;
    } else {
      extensionPath = path.join(__dirname, "..");
    }

    if (platform === CLI_SETTINGS.WINDOWS_PLATFORM_VERSION) {
      cliExecutableName += ".exe";
    }

    const cliPath = path.join(extensionPath, "src", "corets-cli", platform, cliExecutableName);

    const cliWorkingDirectory = path.join(extensionPath, "src", "corets-cli", platform);

    if (os.platform() !== CLI_SETTINGS.WINDOWS_PLATFORM_VERSION) {
      // Not unsafe as the parameter comes from trusted source
      fs.chmodSync(cliPath, 0o755);
    }

    const spawnedProcessCli = spawn(cliPath, [], {
      cwd: cliWorkingDirectory,
    });

    CoreTemplateStudio._instance = new CoreTemplateStudio(spawnedProcessCli);
    return CoreTemplateStudio._instance;
  }