structure FSUtil : sig
val copyCommand : { from : string, to : string } -> string
val isFile : string -> bool
val isDirectory : string -> bool
val mkDirRec : string -> unit
val removeRec : string -> unit
val touch : string -> unit
end = struct
val lfs = LunarML.assumeDiscardable (fn () => Lua.call1 Lua.Lib.require #[Lua.fromString "lfs"]) ()
val luamod = LunarML.assumeDiscardable (fn () => Lua.call1 Lua.Lib.require #[Lua.fromString "texrunner.fsutil"]) ()
fun copyCommand { from, to } : string = Lua.unsafeFromValue (Lua.call1 (Lua.field (luamod, "copy_command")) #[Lua.fromString from, Lua.fromString to])
val isFile : string -> bool = LunarML.assumeDiscardable (fn () => Lua.unsafeFromValue (Lua.field (luamod, "isfile"))) ()
val isDirectory : string -> bool = LunarML.assumeDiscardable (fn () => Lua.unsafeFromValue (Lua.field (luamod, "isdir"))) ()
fun mkDirRec path = let val (succ, err) = Lua.call2 (Lua.field (luamod, "mkdir_rec")) #[Lua.fromString path]
in if Lua.isFalsy succ then
raise Lua.Error err
else
()
end
fun removeRec path = let val (succ, err) = Lua.call2 (Lua.field (luamod, "remove_rec")) #[Lua.fromString path]
in if Lua.isFalsy succ then
raise Lua.Error err
else
()
end
fun touch path = let val (succ, err) = Lua.call2 (Lua.field (lfs, "touch")) #[Lua.fromString path]
in if Lua.isFalsy succ then
raise Lua.Error err
else
()
end
end;