moon.work / moon.mod manifest parsing with stable dependency topological sorting for MoonBit workspaces
Dependencies
moon add chensuiyi/mwork| Function | Description |
|---|---|
| parse_members(text) | Member directories from moon.work |
| parse_mod(dir, text) | Manifest → Member |
| topo_sort(selected, items) | Dependencies first, stable |
| replace_version(text, old, next) | Rewrite the first exact version line |
| sync_pins(text, pins) | Rewrite import pins to given versions |
// Parse the workspace, topologically sort, bump, sync pins
let dirs = @mwork.parse_members(moon_work_text)
let members = dirs.map(fn(d) { @mwork.parse_mod(d, read(d)) })
let order = @mwork.topo_sort(selected, members)
let text = @mwork.replace_version(manifest, "0.1.0", "0.2.0")
let synced = @mwork.sync_pins(manifest, [("chensuiyi/fndash", "0.2.0")])moon add chensuiyi/mwork| 函数 | 说明 |
|---|---|
| parse_members(text) | 从 moon.work 提取成员目录 |
| parse_mod(dir, text) | 清单 → Member |
| topo_sort(selected, items) | 被依赖者先,稳定排序 |
| replace_version(text, old, next) | 重写首个精确匹配的版本行 |
| sync_pins(text, pins) | 按给定版本重写 import pin |
// 解析工作区、拓扑排序、bump、同步 pin
let dirs = @mwork.parse_members(moon_work_text)
let members = dirs.map(fn(d) { @mwork.parse_mod(d, read(d)) })
let order = @mwork.topo_sort(selected, members)
let text = @mwork.replace_version(manifest, "0.1.0", "0.2.0")
let synced = @mwork.sync_pins(manifest, [("chensuiyi/fndash", "0.2.0")])fn replace_version(text : String, old : String, next : String) -> StringInstall
Download zipmoon.work / moon.mod manifest parsing with stable dependency topological sorting for MoonBit workspaces
Dependencies