mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
can be compiled, syncs tree. needs check for bugs.
This commit is contained in:
parent
7a741b509a
commit
163102bd19
15 changed files with 264 additions and 216 deletions
34
makefile
34
makefile
|
|
@ -15,23 +15,28 @@ create_build_dir:
|
|||
copy-version-file-to-build-dir:
|
||||
cp ./$(VERSION_FILE) ./$(BUILDDIR)/$(VERSION_FILE)
|
||||
|
||||
all: http
|
||||
all:
|
||||
cd $(BUILDDIR) && \
|
||||
$(VOC) -s \
|
||||
../src/vpkGit.Mod \
|
||||
../src/vpkFsHelper.Mod \
|
||||
../Internet/src/types.Mod \
|
||||
../Internet/src/sockets.Mod \
|
||||
../Internet/src/netdb.Mod \
|
||||
../Internet/src/Internet.Mod \
|
||||
../src/vpkSettings.Mod \
|
||||
../src/vpkConf.Mod \
|
||||
../src/vpkFileManager.Mod \
|
||||
../src/unix/vpkFiles.Mod \
|
||||
../src/unix/vpkTime.Mod \
|
||||
../src/vpkLogger.Mod \
|
||||
../src/vpkHttp.Mod \
|
||||
../src/unix/vpkEnv.Mod \
|
||||
../src/unix/vpkGit.Mod \
|
||||
../lists/src/Sys.Mod \
|
||||
../lists/src/List.Mod \
|
||||
../lists/src/strutils.Mod \
|
||||
../src/vpkCharacterStack.Mod \
|
||||
../src/vpkCharacterStack.Mod \
|
||||
../src/vpkJsonParser.Mod \
|
||||
../src/vpkConf.Mod \
|
||||
../src/vpkFileManager.Mod \
|
||||
../src/vpkSyncer.Mod \
|
||||
../src/vpkUserDetails.Mod \
|
||||
../src/vpkTime.Mod \
|
||||
../src/vpkLogger.Mod \
|
||||
../src/vpkPackageResolver.Mod \
|
||||
../src/vpkDependencyResolver.Mod \
|
||||
../src/vpkPackageFileParser.Mod \
|
||||
|
|
@ -41,17 +46,6 @@ all: http
|
|||
run:
|
||||
$(BUILDDIR)/vipack install
|
||||
|
||||
|
||||
http: clean
|
||||
cd $(BUILDDIR) && \
|
||||
$(VOC) -s ../src/vpkTime.Mod \
|
||||
../src/vpkLogger.Mod \
|
||||
../Internet/src/types.Mod \
|
||||
../Internet/src/sockets.Mod \
|
||||
../Internet/src/netdb.Mod \
|
||||
../Internet/src/Internet.Mod \
|
||||
../src/vpkHttp.Mod
|
||||
|
||||
clean:
|
||||
if [ -d "$(BUILDDIR)" ]; then rm -rf $(BUILDDIR); fi
|
||||
|
||||
|
|
|
|||
104
src/unix/vpkEnv.Mod
Normal file
104
src/unix/vpkEnv.Mod
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
MODULE vpkEnv;
|
||||
IMPORT Files, Platform, Strings, Out, vpkSettings, vpkFiles;
|
||||
|
||||
VAR
|
||||
conf, confDir : ARRAY 256 OF CHAR;
|
||||
|
||||
PROCEDURE getHome*(VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
IF ~(Platform.getEnv("HOME", path)) THEN
|
||||
Out.String("HOME variable is not found"); Out.Ln;
|
||||
HALT(1);
|
||||
END;
|
||||
END getHome;
|
||||
|
||||
PROCEDURE mkConfDirPath(home: ARRAY OF CHAR; VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
confDir := home;
|
||||
Strings.Append("/", path);
|
||||
Strings.Append(vpkSettings.vpkConfDir, path);
|
||||
END mkConfDirPath;
|
||||
|
||||
PROCEDURE setConfFileName;
|
||||
VAR
|
||||
home: ARRAY 128 OF CHAR;
|
||||
BEGIN
|
||||
getHome(home);
|
||||
mkConfDirPath(home, confDir);
|
||||
conf := confDir;
|
||||
Strings.Append("/", conf);
|
||||
Strings.Append(vpkSettings.vpkConfFile, conf);
|
||||
END setConfFileName;
|
||||
|
||||
PROCEDURE getConfPath(VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
COPY(conf, path);
|
||||
END getConfPath;
|
||||
|
||||
PROCEDURE getConfDir*(VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
COPY(confDir, path);
|
||||
END getConfDir;
|
||||
|
||||
PROCEDURE getConfFile*(): Files.File;
|
||||
VAR f: Files.File;
|
||||
BEGIN
|
||||
f := Files.Old(conf);
|
||||
IF f = NIL THEN
|
||||
f := Files.New(conf)
|
||||
END;
|
||||
RETURN f;
|
||||
END getConfFile;
|
||||
|
||||
PROCEDURE checkConfig*(): BOOLEAN;
|
||||
VAR
|
||||
file : vpkFiles.fileInfo;
|
||||
BEGIN
|
||||
file.name := conf;
|
||||
RETURN vpkFiles.Exists(file);
|
||||
END checkConfig;
|
||||
|
||||
PROCEDURE getTreeDir*(VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
COPY(confDir, path);
|
||||
Strings.Append("/", path);
|
||||
Strings.Append(vpkSettings.vpkTreeDir, path);
|
||||
END getTreeDir;
|
||||
|
||||
PROCEDURE checkEnv*;
|
||||
VAR
|
||||
file : vpkFiles.fileInfo;
|
||||
tmp : ARRAY 256 OF CHAR;
|
||||
BEGIN
|
||||
file.name := conf;
|
||||
IF ~vpkFiles.Exists(file) THEN
|
||||
(* Checking if ~/.vipack directory already exists *)
|
||||
file.name := confDir;
|
||||
IF ~vpkFiles.Exists(file) THEN (* exists!!! *)
|
||||
Out.String("Creating directory "); Out.String(confDir);Out.Ln;
|
||||
IF ~vpkFiles.mkDir(confDir) THEN
|
||||
Out.String("failed to create "); Out.String(confDir); Out.String(" directory"); Out.Ln;
|
||||
HALT(1);
|
||||
END;
|
||||
ELSE
|
||||
IF ~(vpkFiles.dir IN file.attr) THEN
|
||||
Out.String(confDir); Out.String(" exists, but is not a directory"); Out.Ln;
|
||||
HALT(1);
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
tmp := confDir;
|
||||
Strings.Append('/', tmp);
|
||||
Strings.Append(vpkSettings.vpkTreeDir, tmp);
|
||||
file.name := tmp;
|
||||
IF ~vpkFiles.Exists(file) THEN
|
||||
IF ~vpkFiles.mkDir(file.name) THEN
|
||||
Out.String("failed to create tree dir "); Out.String(tmp); Out.Ln; HALT(1);
|
||||
END;
|
||||
END;
|
||||
END checkEnv;
|
||||
|
||||
BEGIN
|
||||
setConfFileName;
|
||||
|
||||
END vpkEnv.
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
MODULE vpkFsHelper;
|
||||
MODULE vpkFiles;
|
||||
IMPORT SYSTEM;
|
||||
|
||||
CONST
|
||||
|
|
@ -96,4 +96,4 @@ BEGIN
|
|||
END Exists;
|
||||
|
||||
|
||||
END vpkFsHelper.
|
||||
END vpkFiles.
|
||||
28
src/unix/vpkGit.Mod
Normal file
28
src/unix/vpkGit.Mod
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
MODULE vpkGit;
|
||||
IMPORT Out, Strings, Platform, vpkEnv;
|
||||
|
||||
PROCEDURE pull*(url : ARRAY OF CHAR; dst : ARRAY OF CHAR);
|
||||
VAR i : INTEGER;
|
||||
cmd : ARRAY 120 OF CHAR;
|
||||
BEGIN
|
||||
cmd:= "git init ";
|
||||
Strings.Append(dst, cmd);
|
||||
i:=Platform.System(cmd);
|
||||
cmd := "";
|
||||
cmd := "git -C ";
|
||||
Strings.Append(dst, cmd);
|
||||
Strings.Append(" pull ", cmd);
|
||||
Strings.Append(url, cmd);
|
||||
i := Platform.System(cmd);
|
||||
Out.Int(i, 0);
|
||||
END pull;
|
||||
|
||||
PROCEDURE syncTree*(url: ARRAY OF CHAR);
|
||||
VAR
|
||||
tmp: ARRAY 256 OF CHAR;
|
||||
BEGIN
|
||||
vpkEnv.getTreeDir(tmp);
|
||||
pull(url, tmp);
|
||||
END syncTree;
|
||||
|
||||
END vpkGit.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
MODULE vipack;
|
||||
IMPORT Texts, Strings, Oberon, Out,
|
||||
vpkJsonParser, vpkGit, vpkConf, vpkLogger, vpkPackageFileParser, vpkSyncer;
|
||||
vpkConf, vpkLogger, vpkPackageFileParser, vpkSyncer;
|
||||
|
||||
PROCEDURE help();
|
||||
BEGIN
|
||||
|
|
@ -12,13 +12,13 @@ END help;
|
|||
|
||||
PROCEDURE main();
|
||||
VAR
|
||||
user, str: ARRAY 32 OF CHAR;
|
||||
i : INTEGER;
|
||||
ch : CHAR;
|
||||
S: Texts.Scanner;
|
||||
project, command: ARRAY 500 OF CHAR;
|
||||
jsonRecord: vpkJsonParser.JsonTypePointer;
|
||||
project, command: ARRAY 64 OF CHAR; (* because Texts.Scanner.s is 64 bytes long*)
|
||||
BEGIN
|
||||
(* this could go to vpkConf init section,
|
||||
but here it is more visible. though may be it doesn't have to be *)
|
||||
IF ~vpkConf.configured() THEN vpkConf.mkDefConfig END;
|
||||
|
||||
(* Getting 1 argument and outputting it *)
|
||||
Texts.OpenScanner(S, Oberon.Par.text, Oberon.Par.pos);
|
||||
Texts.Scan(S);
|
||||
|
|
@ -29,8 +29,8 @@ BEGIN
|
|||
IF Strings.Match(command, "") OR Strings.Match(command, "help")THEN
|
||||
help;
|
||||
ELSE
|
||||
vpkConf.configure;
|
||||
IF command = "sync" THEN
|
||||
|
||||
IF command = "sync" THEN
|
||||
vpkSyncer.sync;
|
||||
END;
|
||||
|
||||
|
|
@ -44,9 +44,6 @@ BEGIN
|
|||
END;
|
||||
END main;
|
||||
|
||||
|
||||
BEGIN
|
||||
|
||||
main();
|
||||
|
||||
main
|
||||
END vipack.
|
||||
|
|
|
|||
153
src/vpkConf.Mod
153
src/vpkConf.Mod
|
|
@ -1,105 +1,76 @@
|
|||
MODULE vpkConf;
|
||||
IMPORT Out, Files, Strings, Platform,
|
||||
vpkFsHelper, vpkSettings;
|
||||
vpkSettings, vpkEnv, vpkJsonParser;
|
||||
|
||||
VAR
|
||||
conf, confDir : ARRAY 256 OF CHAR;
|
||||
|
||||
PROCEDURE getHome(VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
IF ~(Platform.getEnv("HOME", path)) THEN
|
||||
Out.String("HOME variable is not found"); Out.Ln;
|
||||
HALT(1);
|
||||
END;
|
||||
END getHome;
|
||||
CONST
|
||||
open = '{"';
|
||||
close = '"}';
|
||||
is = '": "';
|
||||
newkey = '", "';
|
||||
|
||||
PROCEDURE mkConfContent(VAR path: ARRAY OF CHAR);
|
||||
(* constructing the line like:
|
||||
{"path" : "https://github.com/vishaps/vipackTree"}, "type" : "git"}
|
||||
*)
|
||||
BEGIN
|
||||
Strings.Append('{"path" : "', path);
|
||||
Strings.Append(vpkSettings.treeURL, path);
|
||||
Strings.Append('"}, "type" : "git"}', path);
|
||||
COPY("", path);
|
||||
Strings.Append(open, path);
|
||||
Strings.Append(vpkSettings.confTreeKey, path);
|
||||
Strings.Append(is, path);
|
||||
Strings.Append(vpkSettings.defTreeVal, path);
|
||||
Strings.Append(newkey, path);
|
||||
Strings.Append(vpkSettings.confTypKey, path);
|
||||
Strings.Append(is, path);
|
||||
Strings.Append(vpkSettings.defTypVal, path);
|
||||
Strings.Append(close, path);
|
||||
END mkConfContent;
|
||||
|
||||
PROCEDURE makeFile(VAR confFilePath: ARRAY OF CHAR; VAR f: Files.File; VAR r: Files.Rider);
|
||||
BEGIN
|
||||
f := Files.New(confFilePath);
|
||||
Files.Set(r, f, 0);
|
||||
END makeFile;
|
||||
|
||||
PROCEDURE writeInFile(VAR f: Files.File; r: Files.Rider; VAR text : ARRAY OF CHAR);
|
||||
BEGIN
|
||||
Files.WriteBytes(r, text, Strings.Length(text));
|
||||
END writeInFile;
|
||||
|
||||
PROCEDURE closeFile(VAR f: Files.File);
|
||||
BEGIN
|
||||
Files.Register(f);
|
||||
Files.Close(f);
|
||||
END closeFile;
|
||||
|
||||
PROCEDURE mkConfDirPath(home: ARRAY OF CHAR; VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
confDir := home;
|
||||
Strings.Append("/", path);
|
||||
Strings.Append(vpkSettings.vpkConfDir, path);
|
||||
END mkConfDirPath;
|
||||
|
||||
PROCEDURE setConfPath;
|
||||
PROCEDURE mkDefConfig*;
|
||||
VAR
|
||||
home: ARRAY 128 OF CHAR;
|
||||
content: ARRAY 96 OF CHAR;
|
||||
f: Files.File;
|
||||
r: Files.Rider;
|
||||
BEGIN
|
||||
getHome(home);
|
||||
mkConfDirPath(home, confDir);
|
||||
conf := confDir;
|
||||
Strings.Append("/", conf);
|
||||
Strings.Append(vpkSettings.vpkConfFile, conf);
|
||||
END setConfPath;
|
||||
|
||||
PROCEDURE getConfPath*(VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
COPY(conf, path);
|
||||
END getConfPath;
|
||||
|
||||
PROCEDURE getConfDir*(VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
COPY(confDir, path);
|
||||
END getConfDir;
|
||||
|
||||
PROCEDURE configure*;
|
||||
VAR
|
||||
content: ARRAY 256 OF CHAR;
|
||||
file : vpkFsHelper.fileInfo;
|
||||
fd: Files.File;
|
||||
rd: Files.Rider;
|
||||
BEGIN
|
||||
file.name := conf;
|
||||
IF ~vpkFsHelper.Exists(file) THEN
|
||||
(* Checking if ~/.vipack directory already exists *)
|
||||
file.name := confDir;
|
||||
IF ~vpkFsHelper.Exists(file) THEN (* exists!!! *)
|
||||
Out.String("Creating directory "); Out.String(confDir);Out.Ln;
|
||||
IF ~vpkFsHelper.mkDir(confDir) THEN
|
||||
Out.String("failed to create "); Out.String(confDir); Out.String(" directory"); Out.Ln;
|
||||
HALT(1);
|
||||
END;
|
||||
ELSE
|
||||
IF ~(vpkFsHelper.dir IN file.attr) THEN
|
||||
Out.String(confDir); Out.String(" exists, but is not a directory"); Out.Ln;
|
||||
HALT(1);
|
||||
END;
|
||||
END;
|
||||
(* create conf file *)
|
||||
Out.String("Creating the configuration file "); Out.String(conf);Out.Ln;
|
||||
content := "";
|
||||
makeFile(conf, fd, rd);
|
||||
vpkEnv.checkEnv;
|
||||
f := vpkEnv.getConfFile();
|
||||
Files.Set(r, f, 0);
|
||||
mkConfContent(content);
|
||||
writeInFile(fd, rd, content);
|
||||
closeFile(fd);
|
||||
ELSE
|
||||
Out.String("File already exists");Out.Ln;
|
||||
END;
|
||||
END configure;
|
||||
Files.WriteBytes(r, content, Strings.Length(content));
|
||||
Files.Register(f);
|
||||
Files.Close(f);
|
||||
END mkDefConfig;
|
||||
|
||||
PROCEDURE configured*(): BOOLEAN;
|
||||
BEGIN
|
||||
setConfPath;
|
||||
RETURN vpkEnv.checkConfig()
|
||||
END configured;
|
||||
|
||||
PROCEDURE getConfigTreeVal*(VAR tree: vpkSettings.tree);
|
||||
VAR
|
||||
f: Files.File; r: Files.Rider;
|
||||
dt: ARRAY 256 OF CHAR;
|
||||
i : INTEGER; ch: CHAR;
|
||||
jsonRecord : vpkJsonParser.JsonTypePointer;
|
||||
b: BOOLEAN;
|
||||
treeTyp: ARRAY 8 OF CHAR;
|
||||
BEGIN
|
||||
f := vpkEnv.getConfFile();
|
||||
Files.Set(r, f, 0);
|
||||
i := 0;
|
||||
WHILE ~ r.eof & (i < LEN(dt)) DO Files.Read(r, ch); dt[i] := ch; INC(i) END;
|
||||
Files.Close(f);
|
||||
jsonRecord := vpkJsonParser.Create(dt);
|
||||
b := vpkJsonParser.GetTerminal(jsonRecord, vpkSettings.confTreeKey, tree.url);
|
||||
IF ~b THEN Out.String("unable to read "); Out.String (vpkSettings.confTreeKey); Out.String(" from json"); Out.Ln; HALT(1); END;
|
||||
b := vpkJsonParser.GetTerminal(jsonRecord, vpkSettings.confTypKey, treeTyp);
|
||||
IF ~b THEN Out.String("unable to read "); Out.String (vpkSettings.confTypKey); Out.String(" from json"); Out.Ln; HALT(1); END;
|
||||
IF treeTyp = vpkSettings.confTypGitVal THEN
|
||||
tree.typ := vpkSettings.git;
|
||||
ELSIF treeTyp = vpkSettings.confTypHttpVal THEN
|
||||
tree.typ := vpkSettings.http
|
||||
ELSE
|
||||
tree.typ := vpkSettings.unkn;
|
||||
END;
|
||||
END getConfigTreeVal;
|
||||
|
||||
END vpkConf.
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
MODULE vpkFileManager;
|
||||
IMPORT Files, Out, vpkLogger, Strings, Platform;
|
||||
IMPORT Files, Out, Strings, Platform,
|
||||
vpkLogger, vpkFiles;
|
||||
|
||||
PROCEDURE WriteString(VAR r : Files.Rider; str : ARRAY OF CHAR);
|
||||
BEGIN
|
||||
Files.WriteBytes(r, str, Strings.Length(str));
|
||||
END WriteString;
|
||||
|
||||
PROCEDURE Read*(fileName: ARRAY OF CHAR; VAR returnString: ARRAY OF CHAR): BOOLEAN;
|
||||
PROCEDURE fileToString*(fileName: ARRAY OF CHAR; VAR returnString: ARRAY OF CHAR): BOOLEAN;
|
||||
VAR
|
||||
f: Files.File;
|
||||
r: Files.Rider;
|
||||
|
|
@ -32,9 +33,9 @@ BEGIN
|
|||
UNTIL r.eof OR (i>=LEN(returnString));
|
||||
|
||||
RETURN TRUE;
|
||||
END Read;
|
||||
END fileToString;
|
||||
|
||||
PROCEDURE Write*(fileName, content: ARRAY OF CHAR): BOOLEAN;
|
||||
PROCEDURE stringToFile*(fileName, content: ARRAY OF CHAR): BOOLEAN;
|
||||
VAR
|
||||
f: Files.File;
|
||||
r: Files.Rider;
|
||||
|
|
@ -60,22 +61,17 @@ BEGIN
|
|||
Files.Register(f);
|
||||
|
||||
RETURN TRUE;
|
||||
END Write;
|
||||
END stringToFile;
|
||||
|
||||
PROCEDURE CreateDirectory*(name, path: ARRAY OF CHAR): BOOLEAN;
|
||||
PROCEDURE createDir*(name, path: ARRAY OF CHAR): BOOLEAN;
|
||||
VAR
|
||||
command, path0: ARRAY 100 OF CHAR;
|
||||
errorCode: LONGINT;
|
||||
p : POINTER TO ARRAY OF CHAR;
|
||||
BEGIN
|
||||
COPY(path, path0);
|
||||
COPY("mkdir -p ", command);
|
||||
Strings.Append("/", path0);
|
||||
Strings.Append(name, path0);
|
||||
Strings.Append(path0, command);
|
||||
errorCode := Platform.System(command);
|
||||
|
||||
IF errorCode = 0 THEN RETURN TRUE
|
||||
ELSE RETURN FALSE END;
|
||||
END CreateDirectory;
|
||||
NEW(p, Strings.Length(name) + Strings.Length(path) + 1);
|
||||
COPY(path, p^);
|
||||
Strings.Append("/", p^);
|
||||
Strings.Append(name, p^);
|
||||
RETURN vpkFiles.mkDir(p^)
|
||||
END createDir;
|
||||
|
||||
END vpkFileManager.
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
MODULE vpkGit;
|
||||
IMPORT Out, Strings, Platform;
|
||||
|
||||
PROCEDURE pull*(URL : ARRAY OF CHAR; dst : ARRAY OF CHAR);
|
||||
VAR i : INTEGER;
|
||||
cmd : ARRAY 120 OF CHAR;
|
||||
BEGIN
|
||||
cmd:= "git init ";
|
||||
Strings.Append(dst, cmd);
|
||||
i:=Platform.System(cmd);
|
||||
cmd := "";
|
||||
cmd := "git -C ";
|
||||
Strings.Append(dst,cmd);
|
||||
Strings.Append(" pull ",cmd);
|
||||
Strings.Append(URL, cmd);
|
||||
i := Platform.System(cmd);
|
||||
Out.Int(i,0);
|
||||
END pull;
|
||||
|
||||
|
||||
BEGIN
|
||||
|
||||
END vpkGit.
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
MODULE vpkLogger;
|
||||
IMPORT vpkTime, Out, Strings;
|
||||
IMPORT Out, Strings, vpkTime;
|
||||
|
||||
CONST
|
||||
deca = 10;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ VAR
|
|||
success: BOOLEAN;
|
||||
BEGIN
|
||||
vpkLogger.Log("Starting install process");
|
||||
success := vpkFileManager.Read(vpkSettings.packageFileName, jsonData);
|
||||
success := vpkFileManager.fileToString(vpkSettings.packageFileName, jsonData);
|
||||
|
||||
IF ~success THEN vpkLogger.Log("Some ERROR occured while reading VERSIONFILE") END;
|
||||
ASSERT(success);
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ BEGIN
|
|||
vpkLogger.Log(path);
|
||||
vpkHttp.get(host, port, path, returnValue);
|
||||
vpkHttp.getClean(returnValue, returnValue);
|
||||
isSuccessfull := vpkFileManager.CreateDirectory(packageName, vpkSettings.installPath);
|
||||
isSuccessfull := vpkFileManager.createDir(packageName, vpkSettings.installPath);
|
||||
|
||||
IF ~isSuccessfull THEN vpkLogger.Log("Something went wrong, while downloading files") END;
|
||||
ASSERT(isSuccessfull);
|
||||
|
|
@ -26,7 +26,7 @@ BEGIN
|
|||
Strings.Append("/", localPath);
|
||||
Strings.Append(fileName, localPath);
|
||||
|
||||
isSuccessfull := vpkFileManager.Write(localPath, returnValue);
|
||||
isSuccessfull := vpkFileManager.stringToFile(localPath, returnValue);
|
||||
|
||||
END ResolveFile;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,13 +4,27 @@ CONST
|
|||
vpkConfDir* = ".vipack";
|
||||
vpkConfFile* = "vipackConf.json";
|
||||
vpkTreeDir* = "vipackTree";
|
||||
treeURL* = "https://github.com/vishaps/vipackTree";
|
||||
confTypGit* = "git";
|
||||
confType* = "type";
|
||||
confTermPath* = "path";
|
||||
|
||||
confTypKey* = "type";
|
||||
confTypGitVal* = "git";
|
||||
confTypHttpVal* = "http";
|
||||
confTreeKey* = "path";
|
||||
defTreeVal* = "https://github.com/vishaps/vipackTree";
|
||||
confTreeVal* = defTreeVal;
|
||||
defTypVal* = confTypGitVal;
|
||||
|
||||
packageFileName* = "VersionFile.json";
|
||||
host* = "localhost";
|
||||
port* = "80";
|
||||
installPath* = "dependencies";
|
||||
|
||||
http* = 0;
|
||||
git* = 1;
|
||||
unkn* = -1;
|
||||
TYPE
|
||||
tree* = RECORD
|
||||
url* : ARRAY 128 OF CHAR;
|
||||
typ* : SHORTINT
|
||||
END;
|
||||
|
||||
END vpkSettings.
|
||||
|
|
|
|||
|
|
@ -1,49 +1,25 @@
|
|||
MODULE vpkSyncer;
|
||||
IMPORT Strings, Out,
|
||||
vpkSettings, vpkConf, vpkFsHelper, vpkFileManager, vpkJsonParser, vpkGit;
|
||||
vpkSettings, vpkEnv, vpkConf, vpkFiles, vpkGit;
|
||||
|
||||
PROCEDURE mkTreePath(VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
vpkConf.getConfDir(path);
|
||||
vpkEnv.getConfDir(path);
|
||||
Strings.Append('/', path);
|
||||
Strings.Append(vpkSettings.vpkTreeDir, path);
|
||||
END mkTreePath;
|
||||
|
||||
PROCEDURE sync*;
|
||||
VAR
|
||||
dir : vpkFsHelper.fileInfo;
|
||||
jsonData: ARRAY 256 OF CHAR;
|
||||
jsonURL: ARRAY 64 OF CHAR;
|
||||
jsonType: ARRAY 8 OF CHAR;
|
||||
b: BOOLEAN;
|
||||
confPath, treePath : ARRAY 256 OF CHAR;
|
||||
jsonRecord : vpkJsonParser.JsonTypePointer;
|
||||
tree: vpkSettings.tree;
|
||||
BEGIN
|
||||
mkTreePath(treePath);
|
||||
Out.String("*****************************************"); Out.Ln;
|
||||
Out.String("TreePath = "); Out.String(treePath); Out.Ln;
|
||||
(* Check tree directory if doesn't exist create*)
|
||||
dir.name := treePath;
|
||||
IF ~vpkFsHelper.Exists(dir) THEN
|
||||
Out.String(treePath); Out.String(" directory doesn't exist, creating"); Out.Ln;
|
||||
b := vpkFsHelper.mkDir(treePath);
|
||||
END;
|
||||
IF ~(vpkFsHelper.dir IN dir.attr) THEN
|
||||
Out.String(treePath); Out.String(" exists but is not a directory"); Out.Ln;
|
||||
HALT(1);
|
||||
END;
|
||||
(* Syncing *)
|
||||
vpkConf.getConfPath(confPath);
|
||||
b := vpkFileManager.Read(confPath, jsonData);
|
||||
jsonRecord := vpkJsonParser.Create(jsonData);
|
||||
b := vpkJsonParser.GetTerminal(jsonRecord, vpkSettings.confTermPath, jsonURL);
|
||||
Out.String("URL = "); Out.String(jsonURL); Out.Ln;
|
||||
b := vpkJsonParser.GetTerminal(jsonRecord, vpkSettings.confType, jsonType);
|
||||
IF jsonType = vpkSettings.confTypGit THEN
|
||||
vpkGit.pull(jsonURL, treePath)
|
||||
ELSE
|
||||
Out.String("not a git url"); Out.Ln
|
||||
END;
|
||||
vpkConf.getConfigTreeVal(tree);
|
||||
IF tree.typ = vpkSettings.git THEN
|
||||
vpkGit.syncTree(tree.url)
|
||||
ELSE
|
||||
Out.String("TODO: not a git url"); Out.Ln
|
||||
END;
|
||||
END sync;
|
||||
|
||||
END vpkSyncer.
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
MODULE vpkUserDetails;
|
||||
IMPORT Platform;
|
||||
|
||||
PROCEDURE GetUsername*(VAR str : ARRAY OF CHAR):BOOLEAN;
|
||||
BEGIN
|
||||
RETURN Platform.getEnv("USER", str);
|
||||
END GetUsername;
|
||||
|
||||
END vpkUserDetails.
|
||||
Loading…
Add table
Add a link
Reference in a new issue