Skip to content

Support shared connection profiles via TOML config file #35

@mikhail-zhadanov

Description

@mikhail-zhadanov

Problem

Connection profiles are stored in VS Code's global state, which is local to each machine and not shareable. Teams working on the same Exasol databases must manually configure each connection on every developer's machine. There's no way to version-control or share connection profiles.

Proposal

Support an optional connections.toml file that defines connection profiles. The extension discovers it automatically and merges profiles with the existing VS Code-managed connections.

File location (in priority order)

  1. .exasol/connections.toml in the workspace root
  2. ~/.exasol/connections.toml for user-global profiles

Format

[connections.production]
host = "exadb.company.com"
port = 8563
user = "analytics_user"
tls_mode = "full"

[connections.staging]
host = "exadb-staging.company.com"
port = 8563
user = "dev_user"
tls_mode = "fingerprint"
fingerprint = "AB12CD34..."

Passwords are never stored in the TOML file — they remain in VS Code's secure secret storage. On first use, the extension prompts for the password and stores it securely.

Behavior

  • TOML-defined connections appear in the connections tree alongside VS Code-managed connections, with a distinct icon (e.g., $(file)) to indicate they come from a config file
  • Editing a TOML connection opens the file in the editor instead of the connection form
  • TOML connections are read-only in the UI (edit the file directly)
  • The extension watches the file for changes and refreshes automatically
  • If the same connection name exists in both TOML and VS Code state, the TOML version takes precedence

Why TOML

  • Human-readable and easy to edit by hand
  • Standard format with well-supported parsers (@iarna/toml or smol-toml)
  • Natural fit for connection profiles (flat key-value with sections)
  • Can be committed to repos (without passwords) for team sharing
  • .gitignore-friendly for personal overrides

Scope

  • TOML parser dependency (smol-toml — zero-dependency, 12KB)
  • File discovery and watching (vscode.workspace.createFileSystemWatcher)
  • Merge TOML profiles into connection list
  • Distinct icon and read-only behavior for file-based connections
  • "Open Connections File" command to create/edit the TOML file

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureProduct feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions