A CLI for wrangling directories of source files. Like a static generator, but for whatever.
Find a file
2025-04-02 15:41:20 -04:00
demo/main Update readme and clean up 2025-04-02 15:41:20 -04:00
src Update readme and clean up 2025-04-02 15:41:20 -04:00
.gitignore Reworked support for processing 2025-04-02 11:45:08 -04:00
biome.json Style updates 2025-03-21 12:20:51 -04:00
bun.lock Reworked support for processing 2025-04-02 11:45:08 -04:00
package.json Update readme and clean up 2025-04-02 15:41:20 -04:00
README.md Update readme and clean up 2025-04-02 15:41:20 -04:00
tsconfig.json Update readme and clean up 2025-04-02 15:41:20 -04:00

Muse

A CLI for wrangling directories of source files.

Like a static generator, but for whatever.

Overview

Muse is a CLI and toolchain for operating on directories of json, yaml, toml, and markdown files. Each file can specify any shape of data. Muse scans included files, parses them into data, and streams the loaded data through processors and plugins.

Each processor can modify the data at compile time, as well as enact side effects such as writing files to disk.

Muse does not edit source files, it only reads them in.

Usage

Usage:
  muse [/path/to/binding.yaml] <options>

Options:
  --stdout    -s  Output final data to stdout
  --verbose,  -v  Enable verbose logging
  --help,     -h  Show this help message

Binding File

Each Muse project should specify a binding file with the following shape:

include:
  - ../another-project      # Optional
files:                      # Optional
  - "**/*.yaml"
contentKey: "content"       # Optional
options:                    # Optional
  someOption: someValue
processors:
  - first-processor
  - second-processor