diff options
author | Camil Staps | 2017-02-10 17:32:10 +0100 |
---|---|---|
committer | Camil Staps | 2017-02-10 17:32:10 +0100 |
commit | bd3d6e7e80da878f491933cf3345c305b82c67d7 (patch) | |
tree | 2ab2c518c63b4faa7ee00563a4e47f70490f7ed4 | |
parent | Fix repository url (diff) |
Use native tar
-rw-r--r-- | CLPM/Package.icl | 30 | ||||
-rw-r--r-- | clpm.json | 5 |
2 files changed, 18 insertions, 17 deletions
diff --git a/CLPM/Package.icl b/CLPM/Package.icl index 1cfe4fa..7a3c70d 100644 --- a/CLPM/Package.icl +++ b/CLPM/Package.icl @@ -24,12 +24,15 @@ import Internet.HTTP import System.Directory import System.File import System.FilePath +import System.OS import System.Platform from Text import class Text(indexOf,split,subString), instance Text String, instance + String import Text.JSON +import Archives.Tar + import CLPM.Repository import CLPM.Util @@ -190,7 +193,6 @@ where toStoredDep :: Dependency -> StoredDependency toStoredDep (Package d _) = d - // TODO toStoredOpts :: Options -> StoredOptions toStoredOpts opts = @@ -276,24 +278,22 @@ install d v w # (Ok tar) = tar | tar.HTTPResponse.rsp_code < 200 || 299 < tar.HTTPResponse.rsp_code = (Error $ "Invalid response code " + toString tar.HTTPResponse.rsp_code + ".", w) -# (err,w) = writeFile (depName d + ".tar.gz") tar.rsp_data w -| isError err - = (Error $ toString (fromError err) + err_append, w) -# (err,w) = createDirectory dir w -| isError err - = (Error $ snd (fromError err) + err_append, w) -# (r,w) = syscall ("tar xzf '" + depName d + ".tar.gz' -C '" + dir + "' --strip-components=1\0") w -# (err,w) = deleteFile (depName d + ".tar.gz") w -| r <> 0 - = (Error $ "Failed to unpack " + depName d + ".tar.gz.", w) -| isError err - = (Error $ snd (fromError err) + err_append, w) -= (Ok "Installed.", w) +# (err,w) = unTar changeFileName (parseTar $ fromString tar.HTTPResponse.rsp_data) w +| isEmpty err + = (Ok "Installed.", w) + = (Error "Failed to untar.", w) where dir = MODULE_DIR </> depName d pkg_json = dir </> PACKAGE_FILE err_append = " while installing " + depName d + "." + changeFileName :: (String -> String) + changeFileName + = toString + o ((++) (fromString dir)) + o dropWhile ((<>) OS_PATH_SEPARATOR) + o fromString + cleanup :: *World -> *(MaybeErrorString Bool, *World) cleanup w # (ex,w) = fileExists dir w @@ -312,7 +312,7 @@ where req = { newHTTPRequest - & req_path = "/repo/" + depName d + "/" + toString v + "/" + platform + ".tar.gz" + & req_path = "/repo/" + depName d + "/" + toString v + "/" + platform + ".tar" , server_name = REPOSITORY , server_port = PORT } @@ -11,9 +11,10 @@ "options": { "show_result": false, "show_time": false, - "heap_size": 10000 + "heap_size": 200000 }, "depends": [ - "clean-platform:~0.?.?" + "clean-platform:~0.?.?", + "archives:~0.1.2" ] } |