eec is a Go-based Environment Execution Controller.
It allows you to safely manage and execute environments based on configuration files (TOML/YAML/JSON/.env) without polluting your system environment.
With eec, you can:
- Run programs with temporary environments defined in configuration files
- Group multiple environments under "tags" for easy access
- Generate utility scripts for quick launching
- Build the CLI, GUI, and libraries using
mage(mage buildcli,mage buildgui,mage buildlib)
- Configuration-file-based environment definitions (TOML/YAML/JSON/.env)
- Tags for grouping and easy execution
- Script generation for shortcut commands
- Safe execution without modifying the global system
- Build automation using
mage:mage buildcli debug/mage buildcli releasemage buildgui debug/mage buildgui releasemage buildlib debug/mage buildlib release- Note: On Windows,
GOOS=linuxis not supported formage buildlib
Run a program with a given environment.
Example: eec run -c test.toml -p powershell -a "-NoExit","-Command","Write-Output 'hello world'"
Effect:
- Loads environment from
test.toml - Launches
powershelland runsecho hello world - The environment is temporary and does not affect the system globally
Register a configuration or program as a reusable tag.
Example: eec tag add dev -i "base-dev.toml,go-dev.toml,python-dev.toml" eec tag add dev -i "base-dev.toml,testTag1,testTag2"
Effect:
- Creates a
devtag that combines multiple TOML configurations - Allows easy launching with
--tag dev
List all registered tags.
Example: eec tag list
Effect:
- Shows all tags currently available in the system
Read the details of a specific tag.
Example: eec tag read dev
Effect:
- Displays the configuration and imports associated with the
devtag
Example: eec tree dev
Effect:
- Displays the dependency tree for the specified tag.
- Shows which configuration files and sub-tags are imported.
- Useful for understanding and debugging complex environment setups.
Description:
The tree command reads the metadata of a tag and prints its configuration dependency structure in a hierarchical (tree-like) format.
This helps visualize how multiple TOML/YAML/JSON files are combined to form a complete environment.
Example Output: Dependency tree for tag: dev └── Imported tag: dev-base └── Imported file: base-dev.toml ├── Env: PATH ├── Env: INCLUDE └── Env: LIB └── Imported tag: dev-lang ├── Imported file: go-dev.toml ├── Imported file: rust-dev.toml └── Imported file: python-dev.toml └── Imported tag: dev-tools ├── Imported file: use-tools-dev.toml └── Imported file: gnu-tools-dev.toml
Use Case: Ideal for reviewing how a tag aggregates its environment definitions, confirming imports, and avoiding redundant or conflicting variable settings.
Run a program using an existing tag.
Example: eec run --tag dev
Effect:
- Loads the environment linked to
devand runs the program defined there - No need to specify
--config-filemanually
Generate utility scripts for quick access to tags.
Example: eec gen script
Effect:
- On Windows: creates
t<tag>.bat - On Linux/Mac: creates
t<tag>shell scripts - For example, if
devexists: tdev cmd → runscmdwith thedevenvironment
- Run environments without polluting the system
- Use temporary configurations for testing and isolated development
- Manage complex multi-language setups through configuration files and tags
- Improve usability through generated scripts
- Support safe and flexible workflows with REPL and restart features
- Automate building of CLI, GUI, and libraries via
mage
eec (env-exec) is not just a tag manager,
but a Go-based tool for cleanly managing, isolating, and executing environments.
It is especially useful for testing, multi-environment development, and scenarios where you need clean separation from the system configuration.