resolveLazyPath is preferred, but this can be necessary when passing Path
objects to child processes.
pub fn resolveLazyPathAbs(
maker: *const Maker,
arena: Allocator,
lazy_path: Configuration.LazyPath,
asking_step_index: Configuration.Step.Index,
) error
pub fn resolveLazyPathAbs(
maker: *const Maker,
arena: Allocator,
lazy_path: Configuration.LazyPath,
asking_step_index: Configuration.Step.Index,
) error{ OutOfMemory, MakeFailed }![]const u8 {
const p = try resolveLazyPath(maker, arena, lazy_path, asking_step_index);
const root_dir_path = p.root_dir.path orelse return p.subPathOrDot();
if (p.sub_path.len == 0) return root_dir_path;
return Dir.path.join(arena, &.{ root_dir_path, p.sub_path });
}