Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 0
Project Layout
A Beez project is usually a repository root with a build.lua file. Beez uses the current working directory as the project root when you invoke it.
cd my-project
beez buildShell steps run with that directory as their working directory.
| Path | Role |
|---|---|
build.lua | Pipeline definition (steps, tasks, workflows) |
config.lua | Optional project settings (loaded by build.lua) |
.env | Optional environment defaults |
.cache/ | Runtime cache and logs (created by Beez) |
~/.config/beez/config.lua | Optional global user settings |
The main entry point. Beez looks for build.lua in the project root.
This file registers:
step({ ... })declarationstask(...)shortcutsworkflow(...)pipelinesorder(before, after)dependenciesbeez.config(...)project overrides
If build.lua is missing, Beez exits with an error.
Minimal example:
task("hello", "echo hello")See the Lua DSL for the full API and First Pipeline for a hands-on tutorial.
Beez does not load config.lua automatically. You load it from build.lua when you want shared project settings:
beez.config(require("config"))config.lua returns a Lua table with the same shape as user config (performance, cache, ui, env). Keeping settings in a separate file keeps build.lua focused on pipeline logic.
Example config.lua:
return {
performance= {
cache_write_strategy="phase",
},
cache= {
path=".cache",
enabled=true,
},
env= {
load_dotenv=true,
vars= {
BUILD_TYPE="Release",
},
},
}When env.load_dotenv is true (the default in many setups), Beez reads .env from the project root and exposes values through beez.env("KEY") in build.lua.
Typical uses:
- build type or profile names
- paths to tools or output directories
- secrets you do not want in
build.lua(also considerenv.mask_secretsfor logs)
Variables listed under env.hash_vars are included in cache fingerprints. See Environment Variables for details.
Beez creates this directory at runtime (default path: .cache in the project root, configurable via cache.path).
It holds:
| Subpath | Purpose |
|---|---|
.cache/entries/ | Step cache manifests |
.cache/index/ | Per-step cache indexes |
.cache/success/ | Per-file success cache (incremental lint/format, etc.) |
.cache/logs/ | Run log and worker logs |
The cache is safe to delete. Beez rebuilds it on the next run. Use beez --clean-cache or a clean_cache task to clear it without removing build artifacts elsewhere.
Add .cache/ to .gitignore.
Per-machine preferences live outside the repo:
~/.config/beez/config.lua
Or, if XDG_CONFIG_HOME is set:
$XDG_CONFIG_HOME/beez/config.lua
Use this for UI theme, default thread count, or personal cache settings. Project beez.config() and CLI flags override global values.
Inspect the merged result:
beez --show-configFrom lowest to highest priority:
- Global
~/.config/beez/config.lua beez.config({ ... })inbuild.lua(including loadedconfig.lua)- Environment (
.envand process env, perenvsettings) - CLI flags (
--verbose,--no-cache,-j, etc.)
Beez does not mandate a particular build system, directory layout, or artifact paths. Your steps can call CMake, Meson, a plain shell script, or anything else. The repo layout beyond build.lua is entirely up to you.
- First Pipeline - write your first
build.lua - Core Concepts - steps, tasks, workflows
- Configuration - all config keys explained
Quick Reference · Glossary · FAQ
- Fundamentals
- Core Concepts
- Project Layout
- First Pipeline
- Phases and Scopes
- How Phases and Scopes Work
- Selecting with Phases and Scopes
- Designing Phases and Scopes
- Parallel Execution and Dependencies
- Configuration
- Configuration Overview
- Global User Config
- Project Config
- Environment Variables
- Performance Settings
- Cache Settings
- Config Reference
- CLI
- CLI Overview
- Running Targets
- Filtering by Phase
- Running a Single Step
- Listing Entities
- Output and Logging Flags
- Cache and Maintenance Flags
- Meta and Utility Commands
- Project Scaffolding —
beez --init(embedded Tempify) - CLI Flag Reference
- Lua DSL
- DSL Overview
- Plugin System — Plugins, Config DSL, Standard-Workflows
- Step Declaration
- Task Declaration
- Workflow Declaration
- Order Declaration
- Configure Step
- ReqPack Declaration
- Beez API
- Step Context
- DSL Patterns
- Caching
- Caching Overview
- Step Cache
- Success Cache
- Glob Metadata Cache
- Artifact Patterns
- Cache Keys and Invalidation
- Cache Storage and Maintenance
- Caching Troubleshooting
- Development and Contribution
- Building and Setup
- Repository Layout
- Testing
- Code Quality
- Feature Development Workflow
- Submitting Changes