taugres

module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Aug 5, 2026 License: Apache-2.0

README

tau (Taugres)

A fast tool for managing reproducible, deterministic development environments. Starlark is used as a configuration language; tau generates shell activation scripts that a lightweight hook sources on cd. It also installs tools and packages (via mise, pip, uv, and npm), pinned in a committed lockfile.

Install

go install github.com/edganiukov/taugres/cmd/tau@latest

Requires mise for tools/packages: install it with curl https://mise.run | sh. Only the mise binary on PATH is needed — tau reads mise's store directly, so mise's own shell activation is not required and won't conflict with tau's hook. (A config with no tools/packages works without mise.)

Quick start

Install the shell hook once:

tau setup                   # adds the hook to your shell's startup file
# ...or by hand: eval "$(tau hook zsh)"  >> ~/.zshrc  (or bash, or `tau hook fish | source`)

Then, in a project:

tau init            # writes workspace.tg
$EDITOR workspace.tg
tau allow           # trust this project once
tau sync            # install tools + generate scripts under .taugres/gen/

Now cd into the directory (or open a new shell): the hook activates the environment and restores it when you leave. Example config:

project("my-app")

shell.env("DATABASE_URL", "postgres://localhost/app")
shell.alias("ll", "ls -lah")

mise.tool(["node@22.11.0", "ripgrep"])
uv.install(["ruff", "rich"])

Docs

  • Manual — the full guide and reference: the shell hook & auto-sync, trust, config files & discovery, the Starlark API, tools/packages (mise/pip/uv/npm + mise backends), the lockfile, built-in variables, commands, and performance.
  • Design — architecture and rationale.

Directories

Path Synopsis
cmd
tau command
Command tau manages reproducible, deterministic development environments.
Command tau manages reproducible, deterministic development environments.
internal
atomicfile
Package atomicfile writes files without exposing partially-written contents.
Package atomicfile writes files without exposing partially-written contents.
cli
Package cli implements command routing and the tau subcommands using only the Go standard library flag package.
Package cli implements command routing and the tau subcommands using only the Go standard library flag package.
config
Package config evaluates Taugres `.tg` files (Starlark) into a normalized plan.
Package config evaluates Taugres `.tg` files (Starlark) into a normalized plan.
discover
Package discover implements Taugres workspace/project discovery and root resolution.
Package discover implements Taugres workspace/project discovery and root resolution.
environment
Package environment assembles the shell-agnostic process environment shared by tau exec and future editor/CI integrations.
Package environment assembles the shell-agnostic process environment shared by tau exec and future editor/CI integrations.
lock
Package lock manages the committed .taugres.lock file, which pins the concrete resolved version of every tool/package so `tau sync` is reproducible by default.
Package lock manages the committed .taugres.lock file, which pins the concrete resolved version of every tool/package so `tau sync` is reproducible by default.
model
Package model defines the normalized environment plan produced by evaluating a Taugres config and consumed by the shell renderers.
Package model defines the normalized environment plan produced by evaluating a Taugres config and consumed by the shell renderers.
paths
Package paths implements Taugres root-anchored path resolution.
Package paths implements Taugres root-anchored path resolution.
render
Package render produces shell-specific activation and deactivation scripts from a normalized plan.
Package render produces shell-specific activation and deactivation scripts from a normalized plan.
shell
Package shell defines the shells supported across hooks, rendering, and validation.
Package shell defines the shells supported across hooks, rendering, and validation.
shellhook
Package shellhook generates the shell integration snippet installed via `eval "$(tau hook zsh)"`.
Package shellhook generates the shell integration snippet installed via `eval "$(tau hook zsh)"`.
state
Package state manages Taugres per-project metadata under <projectRoot>/.taugres/gen (the generated shell scripts and the manifest) and provides cheap stale detection.
Package state manages Taugres per-project metadata under <projectRoot>/.taugres/gen (the generated shell scripts and the manifest) and provides cheap stale detection.
testutil
Package testutil provides helpers for building temporary Taugres workspaces in tests.
Package testutil provides helpers for building temporary Taugres workspaces in tests.
toolmgr
Package toolmgr defines the compile-time tool-manager registry used by sync, update, status, and lock handling.
Package toolmgr defines the compile-time tool-manager registry used by sync, update, status, and lock handling.
tools/mise
Package mise integrates with the `mise` tool manager.
Package mise integrates with the `mise` tool manager.
tools/npm
Package npm integrates with Node's npm via a project-local install prefix.
Package npm integrates with Node's npm via a project-local install prefix.
tools/pip
Package pip integrates with Python's pip via a project-local virtualenv.
Package pip integrates with Python's pip via a project-local virtualenv.
tools/toolenv
Package toolenv holds small helpers shared by tool-manager integrations (mise, pip, npm): a common progress Reporter type and filesystem checks.
Package toolenv holds small helpers shared by tool-manager integrations (mise, pip, npm): a common progress Reporter type and filesystem checks.
tools/uv
Package uv integrates with the uv Python package manager via a project-local virtualenv.
Package uv integrates with the uv Python package manager via a project-local virtualenv.
trust
Package trust implements a direnv-style allow/deny mechanism.
Package trust implements a direnv-style allow/deny mechanism.
ui
Package ui provides small terminal helpers such as a progress spinner.
Package ui provides small terminal helpers such as a progress spinner.
validate
Package validate checks a normalized plan for correctness (valid names, shells, and reachable shell.fn/shell.hook files) and surfaces warnings.
Package validate checks a normalized plan for correctness (valid names, shells, and reachable shell.fn/shell.hook files) and surfaces warnings.

Jump to

Keyboard shortcuts

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