The Netsukefile is a YAML file describing your build process.
The Netsukefile is a YAML file describing your build process.
Top-Level Structure
Key Sections Explained
-
netsuke_version(Required): Semantic version string (e.g.,"1.0.0") indicating the manifest schema version. Parsed usingsemver. -
vars(Optional): A mapping (dictionary) of global variables. Values can be strings, numbers, booleans, or lists, accessible within Jinja expressions. -
macros(Optional): A list of Jinja macro definitions. Each item has asignature(e.g.,"my_macro(arg1, arg2='default')") and a multi-linebody. -
rules(Optional): A list of named, reusable command templates. -
targets(Required): A list defining the primary build outputs (files or logical targets). -
actions(Optional): Similar totargets, but entries here are implicitly treated asphony: true(meaning they don't necessarily correspond to a file and should run when requested). Useful for tasks likecleanortest. -
defaults(Optional): A list of target names (fromtargetsoractions) to build whennetsukeis run without specific targets.
# Mandatory: Specifies the manifest format version netsuke_version: "1.0.0" # Optional: Global variables accessible throughout the manifest vars: cc: gcc src_dir: src # Optional: Reusable Jinja macros macros: - signature: "compile_cmd(input, output)" body: | {{ cc }} -c {{ input }} -o {{ output }} # Optional: Reusable command templates rules: - name: link command: "{{ cc }} {{ ins }} -o {{ outs }}" # Optional: Phony targets often used for setup or meta-tasks # Implicitly phony: true, always: false actions: - name: clean command: "rm -rf build *.o" # Required: Defines the build targets (artefacts to produce) targets: - name: build/main.o # A target can define its command inline... command: "{{ compile_cmd('src/main.c', 'build/main.o') }}" sources: src/main.c - name: my_app # ...or reference a rule rule: link sources: build/main.o # Optional: Targets to build if none are specified on the command line defaults: - my_app