pushes to the 'deps' directory inside prefix.

This commit is contained in:
Norayr Chilingarian 2022-01-18 04:11:27 +04:00
parent 837ee3ac45
commit 277e8aa9a5
4 changed files with 68 additions and 16 deletions

View file

@ -12,6 +12,16 @@ BEGIN
END; END;
END getHome; END getHome;
PROCEDURE createIfNotThere*(VAR fileName: ARRAY OF CHAR);
BEGIN
IF ~vpkFiles.ExistsByName(fileName) THEN
IF ~vpkFiles.mkDir(fileName) THEN
Out.String("failed to create directory "); Out.String(fileName); Out.Ln; HALT(1);
END;
END;
END createIfNotThere;
PROCEDURE mkConfDirPath(home: ARRAY OF CHAR; VAR path: ARRAY OF CHAR); PROCEDURE mkConfDirPath(home: ARRAY OF CHAR; VAR path: ARRAY OF CHAR);
BEGIN BEGIN
confDir := home; confDir := home;
@ -28,16 +38,27 @@ BEGIN
Strings.Append("/", path); Strings.Append("/", path);
Strings.Append(vpkSettings.vpkPkgDir, path); Strings.Append(vpkSettings.vpkPkgDir, path);
Strings.Append("/", path); Strings.Append("/", path);
createIfNotThere(path);
Strings.Append(vpkSettings.vpkDepDir, path);
Strings.Append("/", path);
createIfNotThere(path);
Strings.Append(name, path); Strings.Append(name, path);
createIfNotThere(path);
Strings.Append("/", path);
END mkdefPkgDirPath; END mkdefPkgDirPath;
PROCEDURE mkPkgDirPath*(VAR name, path: ARRAY OF CHAR); PROCEDURE mkPkgDirPath*(VAR name, path: ARRAY OF CHAR);
BEGIN BEGIN
Strings.Append("/", path); Strings.Append("/", path);
createIfNotThere(path);
Strings.Append(vpkSettings.vpkDepDir, path);
Strings.Append("/", path);
createIfNotThere(path);
Strings.Append(name, path); Strings.Append(name, path);
createIfNotThere(path);
Strings.Append("/", path);
END mkPkgDirPath; END mkPkgDirPath;
PROCEDURE setConfFileName; PROCEDURE setConfFileName;
VAR VAR
home: ARRAY 128 OF CHAR; home: ARRAY 128 OF CHAR;
@ -84,16 +105,6 @@ BEGIN
Strings.Append(vpkSettings.vpkTreeDir, path); Strings.Append(vpkSettings.vpkTreeDir, path);
END getTreeDir; END getTreeDir;
PROCEDURE createIfNotThere*(VAR file: vpkFiles.fileInfo);
BEGIN
IF ~vpkFiles.Exists(file) THEN
IF ~vpkFiles.mkDir(file.name) THEN
Out.String("failed to create directory "); Out.String(file.name); Out.Ln; HALT(1);
END;
END;
END createIfNotThere;
PROCEDURE checkEnv*; PROCEDURE checkEnv*;
VAR VAR
file : vpkFiles.fileInfo; file : vpkFiles.fileInfo;
@ -120,7 +131,7 @@ BEGIN
Strings.Append('/', tmp); Strings.Append('/', tmp);
Strings.Append(vpkSettings.vpkTreeDir, tmp); Strings.Append(vpkSettings.vpkTreeDir, tmp);
file.name := tmp; file.name := tmp;
createIfNotThere(file); createIfNotThere(file.name);
END checkEnv; END checkEnv;
BEGIN BEGIN

View file

@ -95,5 +95,34 @@ BEGIN
END; END;
END Exists; END Exists;
PROCEDURE ExistsByName*(VAR fileName : ARRAY OF CHAR): BOOLEAN;
VAR
i : INTEGER;
st: Status;
fl: fileInfo;
BEGIN
fl.attr := {};
COPY(fileName, fl.name);
i := stat(fl.name, st);
IF i < 0 THEN RETURN FALSE END;
IF i = 0 THEN (* file exists*)
i := isDir(st.mode);
IF i # 0 THEN fl.attr := fl.attr + {dir} END;
i := isChar(st.mode);
IF i # 0 THEN fl.attr := fl.attr + {char} END;
i := isBlock(st.mode);
IF i # 0 THEN fl.attr := fl.attr + {block} END;
i := isReg(st.mode);
IF i # 0 THEN fl.attr := fl.attr + {file} END;
i := isFIFO(st.mode);
IF i # 0 THEN fl.attr := fl.attr + {fifo} END;
i := isLnk(st.mode);
IF i # 0 THEN fl.attr := fl.attr + {symlink} END;
i := isSock(st.mode);
IF i # 0 THEN fl.attr := fl.attr + {socket} END;
RETURN TRUE
END;
END ExistsByName;
END vpkFiles. END vpkFiles.

View file

@ -43,12 +43,24 @@ BEGIN
vpkJsonDepRetriever.getURIandType(dep, URI, typ); vpkJsonDepRetriever.getURIandType(dep, URI, typ);
vpkSyncer.fetch(dep.name^, URI, typ, prefix); vpkSyncer.fetch(dep.name^, URI, typ, prefix);
INC(i) INC(i)
UNTIL i= depTree.Count; UNTIL i = depTree.Count;
END fetch; END fetch;
PROCEDURE build*(VAR package, prefix, tree: ARRAY OF CHAR); PROCEDURE build*(VAR package, prefix, tree: ARRAY OF CHAR);
VAR
depTree: vpkdepTree.TdepTree;
dep: vpkdepTree.Tdep;
i: LONGINT;
URI: ARRAY 128 OF CHAR;
typ: ARRAY 16 OF CHAR;
BEGIN BEGIN
depTree := resolve(package);
i := 0;
REPEAT
dep := vpkdepTree.Get(depTree, i);
vpkJsonDepRetriever.getURIandType(dep, URI, typ);
vpkSyncer.fetch(dep.name^, URI, typ, prefix);
INC(i);
UNTIL i = depTree.Count;
END build; END build;
END vpkInstaller. END vpkInstaller.

View file

@ -5,6 +5,7 @@ CONST
vpkConfFile* = "vipackConf.json"; vpkConfFile* = "vipackConf.json";
vpkTreeDir* = "vipackTree"; vpkTreeDir* = "vipackTree";
vpkPkgDir* = "vpkLocal"; vpkPkgDir* = "vpkLocal";
vpkDepDir* = "deps";
graphName* = "deps.dot"; graphName* = "deps.dot";
@ -25,7 +26,6 @@ CONST
packageFileName* = "VersionFile.json"; packageFileName* = "VersionFile.json";
host* = "localhost"; host* = "localhost";
port* = "80"; port* = "80";
installPath* = "dependencies";
http* = 0; http* = 0;
https* = 1; https* = 1;