///|
fn rewrite_workspace_args(args : Array[String], root : String) -> Array[String] {
if args.is_empty() {
return args
}
let next = args.copy()
match next[0] {
"accept"
| "tasks"
| "context"
| "persist"
| "catalog"
| "summary"
| "health" => if next.length() >= 2 { next[1] = root }
_ => ()
}
next
}
///|
fn resolved_workspace_root(workspace_root : String) -> String {
resolved_root_path(workspace_root)
}
///|
fn resolved_root_path(path : String) -> String {
@support.absolute_path_from_cwd(path)
}
///|
fn canonical_generated_site_relative_path() -> String {
@policy.default_generated_site_projection_path()
}
///|
fn canonical_generated_site_path(root : String) -> String {
moonbook_adapter_path(root)
.join(moonbook_adapter_path(canonical_generated_site_relative_path()))
.to_string()
}
///|
async fn ensure_parent_directory(path : String) -> Unit {
let parent = @path.Path::dirname(path).to_string()
ensure_directory(parent)
}
///|
async fn ensure_directory(path : String) -> Unit {
if path == "." || path == "" || @fs.exists(path) {
return
}
let parent = @path.Path::dirname(path).to_string()
if parent != path {
ensure_directory(parent)
}
@fs.mkdir(path, permission=0o755) catch {
_ => ()
}
}