Read a MoonBit module's own moon.mod metadata at runtime, baked in at build time.
Dependencies
let info = @moon_shadow.current()
println(info.name) // "PaiGack/moon_shadow"
println(info.version) // "0.1.0"
println(info.long_version()) // "PaiGack/moon_shadow@0.1.0"
println(info.dep("moonbitlang/moon_config")) // Some(...)moon add PaiGack/moon_shadowmoon_shadow: initialized /path/to/your/module
moon.work: added member ..
shadow/moon.pkg: created
shadow/generated.mbt: created
moon.pkg: added import PaiGack/moon_shadow
moon.pkg: added overrides your/module/shadowmoon run --target js --target-dir _build/init <path-to>/moon_shadow/init -- /path/to/your/moduleimport {
"PaiGack/moon_shadow/core",
}
virtual(implement: "PaiGack/moon_shadow/shadow")
rule(
name: "gen",
command: "moon run --target js --target-dir _build/gen <path-to>/moon_shadow/gen/main.mbt -- $input $output",
)
dev_build(rule: "gen", input: "../moon.mod", output: "generated.mbt")options(
overrides: [ "your/module/shadow" ],
)moon.mod --(gen rule)--> shadow/generated.mbt --(compile)--> current()consumer moon.mod --(init rule)--> shadow/ scaffold + overrides in moon.pkgpub fn module_info() -> @core.ModuleInfo| Name | Description |
|---|---|
| current() | ModuleInfo of the module that was built |
| ModuleInfo::dep | look a dependency up by module name |
| ModuleInfo::long_version | "name@version", the shape moon add takes |
| ModuleInfo::to_long_version_string | "name version description", for --version output |
| fields | name version description license repository readme keywords preferred_target supported_targets deps |
core/ ModuleInfo / Dependency, `moon_config` parsing, codegen
gen/ the generator executable, `moon.mod` -> implementation
init/ the one-command setup, writes a consumer's shadow scaffold
shadow/ virtual package + its generated default, gen + init rules
moon_shadow.mbt the public API: current()
moon_shadow_example/ a consumer module, with its own moon.work workspaceInstall
Download zipRead a MoonBit module's own moon.mod metadata at runtime, baked in at build time.
Dependencies