tty

package
v0.75.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2026 License: MIT Imports: 2 Imported by: 0

README

tty Package

The tty package provides TTY (terminal) detection utilities.

Overview

This package exposes two simple functions for checking whether the standard output or error streams are connected to a real terminal. The detection uses golang.org/x/term, which is the same library used by the spinner and progress-bar components in this codebase.

On WebAssembly targets (js/wasm) the package provides stub implementations that always return false, since WASM environments do not have real TTY file descriptors.

Public API

Functions
Function Signature Description
IsStdoutTerminal func() bool Returns true if stdout (os.Stdout) is connected to a terminal
IsStderrTerminal func() bool Returns true if stderr (os.Stderr) is connected to a terminal

Usage Examples

import "github.com/github/gh-aw/pkg/tty"

if tty.IsStdoutTerminal() {
    // Safe to emit colored or animated output to stdout
    fmt.Println(coloredOutput)
} else {
    // Plain output for pipes/redirects
    fmt.Println(plainOutput)
}

if tty.IsStderrTerminal() {
    // Safe to emit spinner or progress animation to stderr
}

Design Notes

  • Terminal detection is evaluated at call time, not cached. This is intentional: the streams could be redirected between calls in some testing scenarios.
  • The WASM stub (tty_wasm.go) always returns false so that components built for the browser never attempt to use ANSI escape codes.
  • Prefer this package over calling term.IsTerminal directly to keep the TTY detection logic centralized and easily testable.
  • Components that need to adapt output for terminals (spinners, progress bars, colored messages) should call IsStderrTerminal() rather than checking os.Stderr directly.

This specification is automatically maintained by the spec-extractor workflow.

Documentation

Overview

Package tty provides utilities for TTY (terminal) detection. This package uses golang.org/x/term for TTY detection, which aligns with modern Go best practices and the spinner library v1.23.1+ implementation.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsStderrTerminal

func IsStderrTerminal() bool

IsStderrTerminal returns true if stderr is connected to a terminal.

func IsStdoutTerminal

func IsStdoutTerminal() bool

IsStdoutTerminal returns true if stdout is connected to a terminal.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL