# Bara Lang Project Manifest Reader # Reads bara.edn (Clojure/EDN format) for project configuration import os import types, reader type BinEntry* = object name*: string path*: string LibEntry* = object name*: string path*: string Project* = object name*: string version*: string rootDir*: string lib*: LibEntry bins*: seq[BinEntry] examples*: seq[BinEntry] proc findProjectRoot*(startDir: string = getCurrentDir()): string = ## Walk up from startDir looking for bara.edn var dir = absolutePath(startDir) while true: let baraEdn = dir / "bara.edn" if fileExists(baraEdn): return dir let parent = parentDir(dir) if parent == dir: break dir = parent return "" proc extractMapString(form: CljVal, key: string, defaultVal: string = ""): string = if form.kind != ckMap: return defaultVal for i in 0..