Skip to content

Add interactive menu mode with ASCII art header #677

@dlevy-msft-sql

Description

@dlevy-msft-sql

Summary

Add an interactive menu mode for sqlcmd with a visually appealing ASCII art header, similar to the Azure CLI's interactive experience.

Motivation

An interactive menu mode would:

  • Improve discoverability: Help new users explore sqlcmd's features
  • Reduce friction: Guide users through common tasks without memorizing flags
  • Visual appeal: A branded ASCII art header creates a professional, memorable experience
  • Consistency: Align with Azure CLI and other modern CLI tools that have interactive modes

Proposed Features

ASCII Art Header

   _____ ____    __    ________  _______
  / ___// __ \  / /   / ____/  |/  / __ \
  \__ \/ / / / / /   / /   / /|_/ / / / /
 ___/ / /_/ / / /___/ /___/ /  / / /_/ /
/____/\___\_\/_____/\____/_/  /_/_____/

Microsoft SQL Server Command Line Tool

(or similar branded design)

Interactive Menu Options

  • Connect: Guided connection setup (server, auth method, database)
  • Query: Enter and execute queries interactively
  • Config: Manage contexts and endpoints (sqlcmd config commands)
  • Containers: Start/stop/manage SQL containers
  • Help: Browse commands and examples
  • Recent: Show recent connections/queries

Navigation

  • Arrow keys / number selection
  • Fuzzy search for commands
  • Breadcrumb navigation
  • q or Esc to exit

Implementation Considerations

  • Go TUI libraries: bubbletea, tview, promptui
  • ASCII art generator or hand-crafted design
  • Keyboard handling across platforms (Windows, Linux, macOS)
  • Fallback for non-interactive terminals
  • Integration with existing command structure

Inspiration

  • Azure CLI interactive mode (az interactive)
  • GitHub CLI (gh)
  • lazygit, lazydocker
  • k9s (Kubernetes TUI)

Tasks

  • Design ASCII art header/logo
  • Choose TUI library
  • Design menu structure and navigation
  • Implement main menu
  • Add guided connection wizard
  • Add interactive query mode
  • Test on Windows, Linux, macOS terminals
  • Document the interactive mode

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions