or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-builder.mdcommand-system.mdfilesystem-tools.mdhttp-tools.mdindex.mdpackage-manager-tools.mdpatching-tools.mdprint-tools.mdprompt-tools.mdsemver-tools.mdstring-tools.mdsystem-tools.mdtemplate-tools.md
tile.json

print-tools.mddocs/

Print & Output

Console output utilities with colors, tables, spinners, and formatted messaging designed specifically for CLI interfaces and user interaction.

Capabilities

Basic Output Functions

Core printing functions with semantic coloring and formatting.

/**
 * Print informational message in default color
 * @param message - Message to display
 */
info(message: any): void;

/**
 * Print warning message in yellow
 * @param message - Warning message to display
 */
warning(message: any): void;

/**
 * Print success message in green
 * @param message - Success message to display
 */
success(message: any): void;

/**
 * Print highlighted message in cyan
 * @param message - Message to highlight
 */
highlight(message: any): void;

/**
 * Print muted message in grey
 * @param message - Muted message to display
 */
muted(message: any): void;

/**
 * Print error message in red
 * @param message - Error message to display
 */
error(message: any): void;

/**
 * Print debug information with optional title
 * @param value - Value to debug print
 * @param title - Optional title for debug output
 */
debug(value: any, title?: string): void;

Basic Output Examples:

import { print } from "gluegun";

// Semantic messages
print.info("Processing files...");
print.success("✓ Build completed successfully");
print.warning("⚠ Config file not found, using defaults");
print.error("✗ Failed to connect to server");
print.highlight("Important: Review these changes");
print.muted("Debug: Internal state updated");

// Debug output
print.debug({ users: 42, active: true }, "App Stats");

Formatting Utilities

Functions for adding visual elements and spacing to CLI output.

/**
 * Print a visual divider line
 */
divider(): void;

/**
 * Print a newline character
 */
newline(): void;

/**
 * Green checkmark symbol
 */
checkmark: string;

/**
 * Red X mark symbol  
 */
xmark: string;

Formatting Examples:

import { print } from "gluegun";

print.info("Starting operations...");
print.divider();
print.success(`${print.checkmark} Step 1 completed`);
print.success(`${print.checkmark} Step 2 completed`);
print.error(`${print.xmark} Step 3 failed`);
print.newline();
print.info("Operations finished");

Color System

Extended color functions for custom styling and theming.

/**
 * Color system with all colors.js functions plus theme extensions
 */
colors: GluegunPrintColors;

interface GluegunPrintColors {
  // Standard colors.js functions
  red(text: string): string;
  green(text: string): string;
  yellow(text: string): string;
  blue(text: string): string;
  magenta(text: string): string;
  cyan(text: string): string;
  white(text: string): string;
  gray(text: string): string;
  grey(text: string): string;
  
  // Text styles
  bold(text: string): string;
  dim(text: string): string;
  italic(text: string): string;
  underline(text: string): string;
  strikethrough(text: string): string;
  
  // Background colors
  bgRed(text: string): string;
  bgGreen(text: string): string;
  bgYellow(text: string): string;
  bgBlue(text: string): string;
  bgMagenta(text: string): string;
  bgCyan(text: string): string;
  bgWhite(text: string): string;
  
  // Gluegun theme extensions
  muted(text: string): string;
  highlight(text: string): string;
  info(text: string): string;
  warning(text: string): string;
  success(text: string): string;
  error(text: string): string;
}

Color Examples:

import { print } from "gluegun";

// Direct color usage
console.log(print.colors.red("Error occurred"));
console.log(print.colors.green("Success!"));
console.log(print.colors.blue.bold("Important Notice"));

// Combined styling
const styled = print.colors.yellow.bold.underline("Highlighted Text");
console.log(styled);

// Theme colors
console.log(print.colors.success("Operation completed"));
console.log(print.colors.warning("Check configuration"));
console.log(print.colors.muted("Debug information"));

Table Formatting

Create formatted tables for displaying structured data in CLI output.

/**
 * Print formatted table from 2D string array
 * @param data - 2D array of strings representing table data
 * @param options - Table formatting options
 */
table(data: string[][], options?: GluegunPrintTableOptions): void;

interface GluegunPrintTableOptions {
  /** Table format style */
  format?: 'markdown' | 'lean' | 'default';
  /** Additional styling options */
  style?: {
    'padding-left'?: number;
    'padding-right'?: number;
    head?: string[];
    border?: string[];
  };
}

Table Examples:

import { print } from "gluegun";

// Basic table
const data = [
  ["Name", "Age", "City"],
  ["Alice", "25", "New York"],
  ["Bob", "30", "Los Angeles"],
  ["Charlie", "28", "Chicago"]
];

print.table(data);

// Markdown format table
print.table(data, { format: 'markdown' });

// Styled table
print.table(data, {
  format: 'default',
  style: {
    'padding-left': 2,
    'padding-right': 2,
    head: ['cyan', 'cyan', 'cyan'],
    border: ['gray']
  }
});

Loading Spinners

Create animated spinners for long-running operations.

/**
 * Create and control loading spinner
 * @param options - Spinner text or configuration object
 * @returns Spinner instance with control methods
 */
spin(options?: string | {
  text?: string;
  spinner?: string | object;
  color?: string;
  interval?: number;
}): {
  start(): void;
  stop(): void;
  succeed(text?: string): void;
  fail(text?: string): void;
  warn(text?: string): void;
  info(text?: string): void;
  text: string;
  color: string;
};

Spinner Examples:

import { print } from "gluegun";

// Simple spinner
const spinner = print.spin("Loading...");
setTimeout(() => {
  spinner.succeed("Loaded successfully!");
}, 2000);

// Configured spinner
const configSpinner = print.spin({
  text: "Processing data...",
  color: "cyan",
  spinner: "dots"
});

// Simulate async operation
async function processData() {
  configSpinner.start();
  try {
    await someAsyncOperation();
    configSpinner.succeed("Data processed successfully");
  } catch (error) {
    configSpinner.fail(`Processing failed: ${error.message}`);
  }
}

Help and Command Display

Utilities for displaying CLI help information and command listings.

/**
 * Print comprehensive help information for the CLI
 * @param toolbox - Current toolbox context
 */
printHelp(toolbox: GluegunToolbox): void;

/**
 * Print formatted list of available commands
 * @param toolbox - Current toolbox context
 * @param commandRoot - Optional command path filter
 */
printCommands(toolbox: GluegunToolbox, commandRoot?: string[]): void;

Help Display Examples:

// In a help command
export = {
  name: "help",
  run: async (toolbox) => {
    const { print } = toolbox;
    
    // Print full CLI help
    print.printHelp(toolbox);
    
    // Or print just commands
    print.printCommands(toolbox);
  }
};

Advanced Formatting

Lower-level formatting utilities for custom table and layout needs.

/**
 * Calculate column widths for table formatting
 * @param cliTable - CLI table instance
 * @returns Array of column widths
 */
findWidths(cliTable: any): number[];

/**
 * Generate column header dividers
 * @param cliTable - CLI table instance  
 * @param style - Style configuration
 * @returns Array of divider strings
 */
columnHeaderDivider(cliTable: any, style: any): string[];

/**
 * Print without theme formatting (deprecated)
 * @param value - String to print
 */
fancy(value: string): void;

Complete Print Interface

interface GluegunPrint {
  // Color system
  colors: GluegunPrintColors;
  
  // Symbols
  checkmark: string;
  xmark: string;
  
  // Basic output
  info(message: any): void;
  warning(message: any): void;
  success(message: any): void;
  highlight(message: any): void;
  muted(message: any): void;
  error(message: any): void;
  debug(value: any, title?: string): void;
  
  // Formatting
  divider(): void;
  newline(): void;
  fancy(value: string): void;
  
  // Tables
  table(data: string[][], options?: GluegunPrintTableOptions): void;
  
  // Spinners
  spin(options?: string | object): any;
  
  // Help system
  printHelp(toolbox: GluegunToolbox): void;
  printCommands(toolbox: GluegunToolbox, commandRoot?: string[]): void;
  
  // Advanced formatting
  findWidths(cliTable: any): number[];
  columnHeaderDivider(cliTable: any, style: any): string[];
}

Complete Usage Example:

import { build } from "gluegun";

const cli = build("my-app")
  .src(`${__dirname}/commands`)
  .help()
  .version()
  .create();

// Example command using all print features
export = {
  name: "deploy",
  description: "Deploy application to server",
  run: async (toolbox) => {
    const { print, system } = toolbox;
    
    print.info("Starting deployment process...");
    print.divider();
    
    const spinner = print.spin("Connecting to server...");
    
    try {
      // Simulate deployment steps
      await system.run("npm run build");
      spinner.succeed("Build completed");
      
      const deploySpinner = print.spin("Uploading files...");
      await system.run("rsync -av dist/ server:/var/www/");
      deploySpinner.succeed("Files uploaded");
      
      print.newline();
      print.success(`${print.checkmark} Deployment completed successfully!`);
      
      // Show deployment summary table
      const summaryData = [
        ["Step", "Status", "Time"],
        ["Build", "✓ Success", "1.2s"],
        ["Upload", "✓ Success", "3.4s"],
        ["Total", "✓ Complete", "4.6s"]
      ];
      
      print.table(summaryData, { format: 'default' });
      
    } catch (error) {
      spinner.fail("Deployment failed");
      print.error(`${print.xmark} Error: ${error.message}`);
      process.exit(1);
    }
  }
};