Tabrixel 0.3.2

dotnet tool install --global Tabrixel --version 0.3.2
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Tabrixel --version 0.3.2
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Tabrixel&version=0.3.2
                    
nuke :add-package Tabrixel --version 0.3.2
                    

Tabrixel

Tabrixel (tbxl) is a command-line tool that treats a Google Sheet as a table of records: inspect a document's structure, read rows as records, and add, update, upsert, or delete rows by column-based conditions. It ships as a cross-platform .NET 10 global tool and speaks both human-readable text (default) and machine-parseable JSON (--json).

๐Ÿ“ฆ Installation

dotnet tool install --global Tabrixel

๐Ÿš€ Quick Start

Point tbxl at a spreadsheet and a service-account key (via flags, environment variables, or saved config โ€” see the Authentication and Configuration sections below), then:

# Verify credentials and show the resolved configuration
tbxl auth check

# See the document's sheets, columns, and record counts
tbxl describe

# List the target sheet's column names
tbxl columns

# Read records, filtered and projected
tbxl rows list --where "Status=Done" --columns "Name,Status" --limit 10

# Add a record from a JSON object
tbxl rows add '{"Name":"John","Age":30}'

# Update matched rows
tbxl rows update --where "Email=a@b.c" --set "Status=Done"

# Update a matched row, or insert it if nothing matches
tbxl rows upsert --where "Email=a@b.c" '{"Status":"Done"}'

# Delete matched rows (confirmation required)
tbxl rows delete --where "Status=Obsolete" --yes

--where takes repeatable, case-sensitive Column=value conditions combined with AND. Add --json to any command for machine-parseable output.

๐Ÿ“‹ Commands

Command Description
tbxl auth check Validate credentials and report the resolved configuration
tbxl config set <key> <value> Set a config key in the project store (--global for ~/.tabrixel)
tbxl config get <key> Show the effective value of a config key
tbxl config list List all config keys with values, scopes, and file paths
tbxl describe Overview of the document: sheets, columns, and record counts
tbxl columns List the target sheet's column names (from its first row)
tbxl rows list Read rows below the header as records (--where, --columns, --limit, --offset)
tbxl rows add <json> Add one record laid out by column names from a JSON object
tbxl rows update Update fields (--set) of rows matched by --where
tbxl rows upsert Update matched rows, or insert a new record when nothing matches
tbxl rows delete Delete rows matched by --where (requires --yes)

Run tbxl <command> --help for the full list of options.

๐Ÿ”‘ Authentication

Tabrixel authenticates with a Google service account JSON key. Create a service account, enable the Google Sheets API, download its JSON key, and share the target spreadsheet with the service account's email.

Supply the key in any of these ways (first present wins):

  1. --credentials <path> flag
  2. GOOGLE_APPLICATION_CREDENTIALS environment variable
  3. credentials config key

Then verify your setup:

tbxl auth check --credentials path/to/key.json

โš™๏ธ Configuration

Save defaults so you don't repeat them on every command. Config lives in TOML files:

  • Project โ€” .tabrixel/config.toml, discovered by walking up from the current directory (like .git)
  • Global โ€” ~/.tabrixel/config.toml
tbxl config set spreadsheet-id 1A2B3C...   # project store
tbxl config set sheet Sheet1 --global      # global store
tbxl config list                           # values, scopes, and file paths

Keys: spreadsheet-id, sheet, credentials. Each value resolves through this chain, first present wins:

CLI flag โ†’ environment โ†’ project config โ†’ global config

Environment variables: TBXL_SPREADSHEET_ID, TBXL_SHEET, and GOOGLE_APPLICATION_CREDENTIALS. An explicitly empty value (--flag "" or key = "") is treated as present and stops the chain.

๐Ÿงพ Output

Commands print human-readable text by default. Pass the global --json flag for machine-parseable JSON: properties use snake_case, data goes to stdout, and errors go to stderr, so output stays parseable in scripts. The process exit code is non-zero on failure.

๐Ÿ“– Documentation & Support

๐Ÿ“„ License

Apache-2.0

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.3.2 182 6/24/2026
0.3.1 141 6/18/2026
0.3.0 126 6/17/2026
0.2.1 134 6/16/2026
0.2.0 159 6/16/2026
0.1.0 119 6/14/2026