aboutsummaryrefslogtreecommitdiff
path: root/CLPM/Package.icl
diff options
context:
space:
mode:
authorCamil Staps2017-02-10 17:32:10 +0100
committerCamil Staps2017-02-10 17:32:10 +0100
commitbd3d6e7e80da878f491933cf3345c305b82c67d7 (patch)
tree2ab2c518c63b4faa7ee00563a4e47f70490f7ed4 /CLPM/Package.icl
parentFix repository url (diff)
Use native tar
Diffstat (limited to 'CLPM/Package.icl')
-rw-r--r--CLPM/Package.icl30
1 files changed, 15 insertions, 15 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
}