Module Typesense_auth.Cmd

Cmdliner helpers for Typesense CLI authentication.

This module provides reusable command-line argument definitions and command builders for authentication workflows. It supports multiple profiles for managing multiple server connections.

Usage

  (* In your main.ml *)
  Eio_main.run @@ fun env ->
  let fs = env#fs in
  Cmd.group (Cmd.info "typesense-cli")
    [ Typesense_auth.Cmd.auth_cmd env fs
    ; (* other commands *)
    ]
  |> Cmd.eval_exn

Environment Variables

Logging

Uses Logs_cli for verbosity control:

Common Arguments

val server_arg : string Cmdliner.Term.t

Required positional argument for server URL (also reads TYPESENSE_SERVER).

val server_opt : string option Cmdliner.Term.t

Optional --server argument (also reads TYPESENSE_SERVER).

val api_key_arg : string option Cmdliner.Term.t

Optional --api-key argument (also reads TYPESENSE_API_KEY).

val profile_arg : string option Cmdliner.Term.t

Optional --profile argument for selecting a specific profile.

Logging and Configuration

val setup_logging : (Fmt.style_renderer option * Logs.level option) Cmdliner.Term.t

Term that collects logging options (-v, --color, etc.). Use with setup_logging_with_config to apply logging after parsing.

val setup_logging_with_config : Fmt.style_renderer option -> Logs.level option -> Requests.Cmd.config -> unit

setup_logging_with_config style_renderer level config sets up logging with the given options. Extracts --verbose-http from the requests config. Call this at the start of command execution.

Term for HTTP request configuration (timeouts, retries, proxy, etc.).

Commands

Commands take an env parameter from the outer Eio_main.run context, and an fs path for building cmdliner terms.

val auth_cmd : < fs : Eio.Fs.dir_ty Eio.Path.t ; clock : _ Eio.Time.clock ; net : _ Eio.Net.t.. > -> Eio.Fs.dir_ty Eio.Path.t -> unit Cmdliner.Cmd.t

Complete auth command group combining login, logout, status, and profile.

Helper Functions

val with_session : ?profile:string -> (Eio.Fs.dir_ty Eio.Path.t -> Session.t -> 'a) -> < fs : Eio.Fs.dir_ty Eio.Path.t.. > -> 'a

with_session ?profile f env loads the session and calls f fs session. Prints an error and exits if not logged in.

  • parameter profile

    Profile to load (default: current profile)

val with_client : ?requests_config:Requests.Cmd.config -> ?profile:string -> (Eio.Fs.dir_ty Eio.Path.t -> Client.t -> 'a) -> < fs : Eio.Fs.dir_ty Eio.Path.t ; clock : _ Eio.Time.clock ; net : _ Eio.Net.t.. > -> 'a

with_client ?requests_config ?profile f env loads the session, creates a client, and calls f fs client. Prints an error and exits if not logged in.

  • parameter requests_config

    HTTP request configuration

  • parameter profile

    Profile to load (default: current profile)

Profile Configuration for External Programs

These types and functions allow other programs to easily use Typesense profiles that were set up with the typesense CLI.

module Profile_config : sig ... end

Configuration for using a Typesense profile.

Cmdliner term that collects all configuration needed to use a Typesense profile.

Combines:

  • Logging options (-v, --color, etc.)
  • HTTP configuration (timeouts, retries, proxy, --verbose-http)
  • Profile selection (--profile)

Use with with_client to create an authenticated client.