Skip to content

Aj4x/tash

Repository files navigation

Tash

Tash is a TUI (Text User Interface) application for viewing and executing tasks from Taskfiles. It provides an interactive terminal interface to work with tasks defined in Taskfile.dev format.

Tash Screenshot

Features

  • Browse and view task information from Taskfiles
  • Execute tasks with real-time output display
  • Interactive split-screen interface with task list and output panels
  • Task information display including ID, description, and aliases
  • Visual feedback for task execution status
  • Keyboard-driven navigation and control

Installation

Prerequisites

  • Go 1.23 or later
  • A working installation of Task

From Source

Clone the repository and build:

git clone https://github.com/Aj4x/tash
cd tash
task build
# or
go build -o tash ./cmd/tash

Using Go Install

go install github.com/Aj4x/tash/cmd/tash@latest

Usage

Run tash in a directory that contains a Taskfile.yml:

tash

Key Controls

  • Navigation:

    • Tab - Switch focus between task list and output viewport
    • / or j/k - Navigate up and down in focused panel
    • PgUp/PgDn - Scroll output viewport by pages
  • Actions:

    • Enter or e - Execute selected task
    • i - Show detailed information about selected task
    • Ctrl+l - Clear the output viewport
    • Ctrl+r - Refresh task list from Taskfile
    • Ctrl+x - Cancel running task
  • Application:

    • q, Esc, or Ctrl+c - Quit application

Interface

Tash features a split-screen interface:

  1. Left Panel - Task Table:

    • Lists all available tasks with their ID, description, and aliases
    • Highlights currently selected task
    • Shows focused state with colored border
  2. Right Panel - Output Viewport:

    • Displays command output in real-time
    • Supports scrolling for long outputs
    • Different colors for application messages, command output, and errors
  3. Help Bar - Bottom of screen:

    • Shows available keyboard shortcuts

How It Works

Tash runs the task --list-all command to gather information about available tasks in the current directory. It parses this output to create an interactive task list.

When you execute a task, Tash runs the corresponding task <taskname> command and displays the output in real-time in the right panel.

Development

Dependencies

Tash is built with these primary libraries:

Building from Source

  1. Clone the repository
  2. Install dependencies:
    go mod tidy
  3. Build the application:
    task build
    # or
    go build -o tash ./cmd/tash

Project Structure

  • cmd/tash/main.go - Main application entry point
  • internal/task/ - Task management functionality
  • internal/ui/ - User interface components
  • docs/assets/ - Documentation assets
  • examples/ - Example files
  • README.md - Documentation
  • Taskfile.yml - Project tasks for development
  • go.mod, go.sum - Go module files

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements

  • Taskfile for the amazing task runner
  • Charm for the excellent terminal UI libraries

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages