Tabouli: a TUI for interacting with firmware/embedded devices that support a CLI via serial interface/virtual COM Port

Related tags

Command Line tabouli
Overview

Tabouli

Information

Tabouli is a TUI for interacting with firmware/embedded devices that support a CLI via serial interface/virtual COM Port. It supports command history, shortcuts, and Test Automation that allows you to automatically send commands defined in your test file.

Tabouli, written in Go, is also a delicious Mediterranean dish (properly spelled Tabbouleh) and it contains the letters T, U, and I: (T)abo(U)l(I)

Made @ Ovyl ovyl

Screenshot

Installation

First, enable golang plugin:
asdf plugin-add golang https://github.com/kennyp/asdf-golang.git

Next, install latest:
asdf install golang latest

Lastly, Reshim:
asdf reshim golang

Note: We use asdf to manage golang installations below, but feel free to use whatever method you like.

Running From Source

Start by installing dependencies:
go get

Then run the TUI from Source:
go run main.go tui /dev/tty.usbserial-2111430

Running A Binary

Create the binary:
go build -o bin/tabouli main.go

Run the binary:
tabouli tui /dev/tty.usbserial-2111430
If you are running from a binary, make sure that you place your test files and the default file in /bin folder along with your binary.

Example

Usage

Command History

The TUI supports a command history. Simply hit the up arrow just like a normal terminal.

Shortcuts

Currently the Commands and Test Files are invokable via auto-assigned shortcut. Simply make sure that the appropriate window has focus for the shortcut to work.
The shortcut is designated in yellow next to a command or automated test like this: (1)

Test Automation Files

The application will look resursively for test files starting with the current executable diretory. Test files must start with test_ and be of file type .yaml. For instance: test_my_quick_test.yaml will be picked up. The contents of the file should look something like this:

commands:
  - help
  - comm_test
  - gpio_set -pin 3 -level 1
  - ble_start_scan -whitelist 0
  - led -which 1 -color red

The software will parse the file and send each line (without the "-", that is for YAML file syntax).

Defaults File

Please update the defaults.yaml file to adjust your serial port connection settings and terminators/delimiters:

  • Baud Rate
  • Data Bits
  • Stop Bits
  • Parity
  • RX Terminator (indicates the end of a response from the device)
  • TX Terminator (added to the end of a commands to the device)

The terminators MUST be in double quotes in the defaults.yaml file like this: "\r\n".

Firmware Requirements

Currently in order to be able to populate the "Commands" window automatically, there is an expected format that the firmware should send back the "help" response, here is how we handle it in our firmware:

cli_lib.println("`help`                 Get help/usage for commands\n");
cli_lib.println("`comm_test`            Request communications test\n");
cli_lib.println("`switch_settings`      Get the user settings\r\n");  // Notice the last command ends in \r\n

Each command has backticks around the command, and the description is outside of the command. This is not required, it just fills out the "Commands" column. Typing in commands and Test Automation will still work just fine.

Future Work

  • Support a "wait" or "sleep" command in the Test Automation file syntax
  • Support a "headless mode" for just invoking test automation - not everyone wants a TUI.
Issues
Owner
Ovyl
Product development firm located in Nashville
Ovyl
Light weight Terminal User Interface (TUI) to pick material colors written by Go.

mcpick Light weight Terminal User Interface (TUI) to pick material colors. You do NOT need to take your hands off the keyboard to pick colors. Getting

tenkoh 3 Dec 3, 2021
Podman-tui - A Terminal User Interface to interact with the podman (v3.x)

podman-tui podman-tui is a Terminal User Interface to interact with the podman (

Containers 3 Jan 23, 2022
Simple command line serial terminal for the Zolatron 64

ZolaTerm Simple command line serial terminal for the Zolatron 64. Written in Go. I'm using Go routines for receiving text (so that it can be displayed

Machina Speculatrix 0 Nov 7, 2021
💼 CLI / TUI for Pocket

gocket A simple CLI (or TUI) for Pocket. Read your Pocket goodies from your comfy shell. Archive or delete multiple entries easily. Use a TUI or pipe

Matthieu Cneude 34 Jan 4, 2022
A CLI / TUI for Microsoft Teams

teams-cli A Command Line Interface (or TUI) to interact with Microsoft Teams Status The CLI only let you log-in and fetches your user and conversation

null 145 Jan 18, 2022
Handy little CLI for interacting with OCI data

oci-tool Handy little CLI for interacting with OCI data Installation go get github.com/csweichel/oci-tool I use Gitpod for developing this tool; you s

Christian Weichel 10 Dec 13, 2021
a lightweight CLI client for interacting with the Akash Network

Akash Command Center A lite weight client for communicating with the Akash Network. There are no provider, or validator bits in this project. Install

Akash Network 11 Dec 7, 2021
Buildkite-cli - Command line tool for interacting with Buildkite pipelines, builds, and more

Buildkite CLI Command line tool for interacting with Buildkite pipelines, builds

Mark Skelton 1 Jan 7, 2022
Lightweight CLI tool to programmatically rescale your Hetzner virtual server daily to optimize your budget spending

Lightweight CLI tool to programmatically rescale your Hetzner virtual server daily to optimize your budget spending

Jonathan Mataloni 33 Dec 16, 2021
Commando - run commands against networking devices in batch mode

Commando is a tiny tool that enables users to collect command outputs from a single or a multiple networking devices defined in an inventory file.

Roman Dodin 29 Dec 30, 2021
Simple command line tool to control TP-Link HS100 and HS110 Devices

tplink-hs1x-cli A simple app to control TPLink HS100 and HS110 devices. Sometimes it is just easier to use a simple cli tool to turn the lights on and

null 0 Nov 9, 2021
TUI process monitor written in Go

pst This is TUI process monitor written in Go. Features Monitor process's list, info, tree, open files, Kill process Support OS Mac Linux Requirements

skanehira 326 Jan 16, 2022
a TUI for signal messenger, written in Go

siggo A terminal ui for signal-cli, written in Go. Features vim-style ux useful for quick messages or use $EDITOR to compose fancy ones emoji support,

Derric Williams 273 Jan 15, 2022
A powerful little TUI framework 🏗

Bubble Tea The fun, functional and stateful way to build terminal apps. A Go framework based on The Elm Architecture. Bubble Tea is well-suited for si

Charm 6.9k Jan 17, 2022
Canard. A command line TUI client for the journalist RSS aggregator.

Canard Canard. A command line TUI client for the Journalist RSS aggregator. Installation Download a binary from the releases page. Or build it yoursel

マリウス 39 Jan 10, 2022
🧭 TUI for command navigation

devgo a command-line launcher Install latest version curl -o- https://raw.githubusercontent.com/TheWinds/devgo/main/install.sh | bash special version

风影. 13 Dec 14, 2021
A terminal UI (TUI) for HashiCorp Nomad

Damon - A terminal Dashboard for HashiCorp Nomad Damon is a terminal user interface (TUI) for Nomad. It provides functionality to observe and interact

HashiCorp 166 Jan 10, 2022
A TUI multitool for day-to-day operations for software applications.

Bench (WIP) A TUI multitool for day-to-day operations for software applications. Lets you do common operations needed during IT work that are common e

null 1 Dec 5, 2021
🦜 Navigate github repos in a tui

goh Navigate github repos in a tui Why I am constantly refering to my github repos and repos from others for code snippets that are relevant to what I

Taylor Gamache 11 Dec 10, 2021