0.1v: basic features

added lexer, parser, Shell, Executor.
added tests for sonyalib
it already works! will be implementing more features soon.
This commit is contained in:
2026-04-21 23:11:14 +09:00
parent 716fdfb6b2
commit 96ba9e3a56
11 changed files with 411 additions and 7 deletions
+43
View File
@@ -0,0 +1,43 @@
# sonya
A lightweight `just`-like task runner written in Swift.
Define recipes in a `sonyafile` and run them with `sonya <recipe>`.
## sonyafile syntax
```
CC = clang
FLAGS = -O2
build:
$(CC) $(FLAGS) main.c -o main
run: build
./main
clean:
rm -f main
```
- Variables are defined as `key = value` and referenced as `$(key)`
- Recipes can declare dependencies after the colon - they run first
- Commands are indented with whitespace
## Install
```sh
swift build -c release
cp .build/release/sonya /usr/local/bin/sonya
```
## Usage
```sh
sonya build # run a specific recipe
sonya # runs "default" recipe
```
## Roadmap
- Command-line argument passing to recipes (`$1`, `$2`, ...)