mirror of
https://github.com/vishapoberon/vix.git
synced 2026-04-05 20:32:24 +00:00
- improve vipakfile - reuse code for build, test and release - add release subcommand - add clean subcommand - improve portability - better skeleton
75 lines
1.5 KiB
Markdown
75 lines
1.5 KiB
Markdown
# vix
|
|
|
|
Vix is a simple, POSIX-shell-based project and build manager for [Vishap Oberon](https://vishap.oberon.am) projects.
|
|
It provides commands to create a new project skeleton, compile library modules, link and run your program, run tests, and produce release binaries.
|
|
|
|
## vix in action
|
|
|
|
[](https://asciinema.org/a/723640)
|
|
|
|
## Installation
|
|
|
|
1. clone this repository
|
|
2. `sudo cp vix /usr/local/bin/vix`
|
|
|
|
## Usage
|
|
|
|
```
|
|
Usage: vix ...
|
|
help
|
|
version
|
|
new PATH [--module MODULE] [--app APP]
|
|
run
|
|
build
|
|
test
|
|
release
|
|
```
|
|
|
|
```
|
|
vix new hello_world
|
|
```
|
|
|
|
## Directory Layout
|
|
|
|
```
|
|
hello_world/
|
|
src/
|
|
HelloWorld.Mod ← library API
|
|
HelloWorldMain.Mod ← "main" program entry
|
|
test/
|
|
HelloWorldTest.Mod ← test suite
|
|
vipakfile ← project manifest
|
|
README.md
|
|
.gitignore
|
|
.gitattributes
|
|
```
|
|
|
|
## vipakfile format
|
|
|
|
```
|
|
NAME = hello_world
|
|
VERSION = 0.1.0
|
|
|
|
AUTHOR =
|
|
LICENSE =
|
|
|
|
DEPS =
|
|
|
|
RUN = ./HelloWorldMain
|
|
MAIN = %projdir%/src/HelloWorldMain.Mod
|
|
BUILD = %projdir%/src/HelloWorld.Mod
|
|
|
|
TEST_RUN = ./HelloWorldTest
|
|
TEST_MAIN = %projdir%/test/HelloWorldTest.Mod
|
|
TEST =
|
|
```
|
|
|
|
- `%projdir%` is replaced at runtime with the project root directory.
|
|
- Semicolons (`;`) separate multiple entries, preserving order.
|
|
|
|
## TODO
|
|
|
|
- Integrate `vix` with `vipak` for dependency management
|
|
- Incremental builds
|
|
- Release tarballs, Dockerfiles and Jailerfiles
|
|
- Rewrite vix in Oberon
|