phase15: update CLAUDE.md and sync with current progress
- Update phase indicator to Phase 15 (Self-Hosting) - Update documentation links to Phase 15 resources - Reflect completion of R1-R5 tasks and ongoing work - Fix CURRENT_TASK.md location to root directory Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
63
apps/std/ny-config.nyash
Normal file
63
apps/std/ny-config.nyash
Normal file
@ -0,0 +1,63 @@
|
||||
// ny-config.nyash - Load nyash.toml and expose minimal helpers
|
||||
|
||||
static box NyConfig {
|
||||
// Read nyash.toml (or given path) and return JSON string via TOMLBox.toJson()
|
||||
load_toml(path) {
|
||||
local p = path
|
||||
if p == null || p == "" { p = "nyash.toml" }
|
||||
local f = new FileBox()
|
||||
// Open read-only if supported; fallback to default if mode not required
|
||||
// Many plugins accept open(path, mode). Use "r" here.
|
||||
f.open(p, "r")
|
||||
local content = f.read()
|
||||
f.close()
|
||||
local t = new TOMLBox()
|
||||
// parse(content) returns Result.Ok(bool) in some variants; call and ignore return here
|
||||
t.parse(content)
|
||||
local json = t.toJson()
|
||||
return json
|
||||
}
|
||||
|
||||
// Return counts for env/tasks/box_types/plugins (approx by '=' occurrences per table)
|
||||
counts() {
|
||||
// Parse nyash.toml
|
||||
local f2 = new FileBox()
|
||||
f2.open("nyash.toml", "r")
|
||||
local content2 = f2.read()
|
||||
f2.close()
|
||||
local t = new TOMLBox()
|
||||
t.parse(content2)
|
||||
local out = new MapBox()
|
||||
out.setS("env", me.count_keys_in_string(t.get("env")))
|
||||
out.setS("tasks", me.count_keys_in_string(t.get("tasks")))
|
||||
out.setS("box_types", me.count_keys_in_string(t.get("box_types")))
|
||||
out.setS("plugins", me.count_keys_in_string(t.get("plugins")))
|
||||
return out
|
||||
}
|
||||
|
||||
// helper: count '=' in a string
|
||||
count_keys_in_string(s) {
|
||||
local i = 0
|
||||
local n = s.length()
|
||||
local c = 0
|
||||
loop(i < n) {
|
||||
local ch = s.substring(i, i+1)
|
||||
if ch == "=" { c = c + 1 }
|
||||
i = i + 1
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
// Convert JSON back to TOML-like display if needed (placeholder: returns empty to force parse to no-op)
|
||||
json_to_toml_hint(js) { return "" }
|
||||
}
|
||||
|
||||
static box Main {
|
||||
main(args) {
|
||||
local console = new ConsoleBox()
|
||||
local json = NyConfig.load_toml(null)
|
||||
local c = NyConfig.counts(json)
|
||||
console.println("ny-config: env=" + c.getS("env").toString() + ", tasks=" + c.getS("tasks").toString() + ", plugins=" + c.getS("plugins").toString() + ", box_types=" + c.getS("box_types").toString())
|
||||
return 0
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user