Skip to content

Commit

Permalink
Merge pull request #9 from vqns/fix-unzip-and-clean-tmp
Browse files Browse the repository at this point in the history
fix unzip command and properly clean up temp files
  • Loading branch information
melsman authored Dec 10, 2024
2 parents 750138a + ac2a237 commit a491994
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions src/util/zip.sml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ fun fromFile (s:string) : t =
{zipfile=s,deleted=ref false}

fun download (url:string) : t =
let val localzip = OS.FileSys.tmpName() ^ ".zip"
let val localzip = OS.FileSys.tmpName()
val (status,out,err) = System.command ("curl -L -o " ^ localzip ^ " " ^ url)
in if OS.Process.isSuccess status then
{zipfile=localzip,deleted=ref false}
Expand All @@ -37,7 +37,7 @@ fun extractSubDir {log: string -> unit} ({zipfile,deleted}:t) {path:string,targe
val () = System.createDirectoryIfMissing true target
fun cmds zipfile path target : {zipcmd:string,mvcmd:string,tmpdir:string} =
let val tmpdir = target ^ "_tmp~"
in {zipcmd = "unzip " ^ zipfile ^ " '" ^ path ^ "/*' -d " ^ tmpdir,
in {zipcmd = "unzip " ^ zipfile ^ " '" ^ path ^ "/**' -d " ^ tmpdir,
mvcmd = "mv " ^ tmpdir ^ "/" ^ path ^ "/* " ^ target ^ "/",
tmpdir = tmpdir}
end
Expand All @@ -49,16 +49,21 @@ fun extractSubDir {log: string -> unit} ({zipfile,deleted}:t) {path:string,targe

val () = log ("cmd: " ^ zipcmd)
val (status,out,err) = System.command zipcmd

val () = log ("removing " ^ zipfile)
val () = System.removePathForcibly zipfile

val () = if OS.Process.isSuccess status then ()
else raise Fail ("failed to extract " ^ zipfile ^ ": " ^ err)

val () = log ("cmd: " ^ mvcmd)
val (status,out,err) = System.command mvcmd
val () = if OS.Process.isSuccess status then ()
else raise Fail ("failed to move tmpdir into target: " ^ err)

val () = log ("removing " ^ tmpdir)
val () = System.removePathForcibly tmpdir

val () = if OS.Process.isSuccess status then ()
else raise Fail ("failed to move tmpdir into target: " ^ err)
in ()
end

Expand Down

0 comments on commit a491994

Please sign in to comment.