Basics Beginner Reviewed syntax

Hello World

The smallest useful Netsuke manifest in this repository. One target transforms `input.txt`, another writes a greeting from a variable, and `defaults` tell the CLI what to build when you just run `netsuke`.

Directory Structure

hello-world/
input.txt
README.md
Netsukefile

This example is deliberately small. It keeps the whole language visible at once: top-level `vars`, inline target commands, and two default outputs.

Why it matters

If a new user understands this file, they can read the rest of the examples without guessing what the manifest is doing.

Annotated Manifest

examples/hello-world/Netsukefile
netsuke_version: "1.0.0"

vars:
  greeting: "Hello from Netsuke"

targets:
  - name: output.txt
    command: "cat input.txt | tr 'a-z' 'A-Z' > output.txt"
    sources: input.txt

  - name: greeting.txt
    command: "printf '%s\n' '{{ greeting }}!' > greeting.txt"

defaults:
  - output.txt
  - greeting.txt
1

Variables are templated directly

The `greeting` variable is expanded inside the command string with standard Jinja syntax.

2

Targets can be fully inline

There is no rule block here because the commands are short and specific enough to sit on each target.

3

Defaults describe the zero-argument build

Running `netsuke` builds both output files without requiring a named target on the command line.

Running the Build

Terminal
$ netsuke
[1/2] cat input.txt | tr 'a-z' 'A-Z' > output.txt
[2/2] printf '%s\n' 'Hello from Netsuke!' > greeting.txt
$ cat greeting.txt
Hello from Netsuke!

Build Flow

1. Read

Load `input.txt` as a source file and `greeting` as a manifest variable.

2. Build

Run one inline transform and one inline file-write command.

3. Default

Emit both outputs when the CLI is invoked with no explicit target.