mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
commit
049495a336
9 changed files with 377 additions and 158 deletions
|
|
@ -1,4 +1,4 @@
|
|||
DEPEND = github.com/norayr/lists github.com/norayr/Internet github.com/norayr/opts github.com/norayr/skprLogger github.com/norayr/skprJson codeberg.org/sts-q/vishaps-ssqJson
|
||||
DEPEND = github.com/norayr/dbg github.com/norayr/strutils github.com/norayr/Internet github.com/norayr/http github.com/norayr/lists github.com/norayr/opts github.com/norayr/skprLogger github.com/norayr/skprJson codeberg.org/sts-q/vishaps-ssqJson
|
||||
|
||||
VOC = /opt/voc/bin/voc
|
||||
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||
|
|
@ -48,13 +48,10 @@ buildThis:
|
|||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkLinuxFiles.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkTime.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkLogger.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkHttp.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkEnv.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkGit.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkCharacterStack.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkJsonParser.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkConf.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkStorage.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkConf.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkSyncer.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkdepTree.Mod
|
||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkDot.Mod
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ MODULE vpkEnv;
|
|||
IMPORT Files, Platform, Strings, Out, vpkSettings, vpkFiles, strTypes;
|
||||
|
||||
VAR
|
||||
conf, confDir : ARRAY 256 OF CHAR;
|
||||
pkgTreeDir: POINTER TO ARRAY OF CHAR;
|
||||
conf-, confDir- : ARRAY 256 OF CHAR;
|
||||
pkgTreeDir-: POINTER TO ARRAY OF CHAR;
|
||||
|
||||
PROCEDURE getHome*(VAR path: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
MODULE vpkConf;
|
||||
IMPORT Out, Files, Strings, Platform,
|
||||
vpkSettings, vpkEnv, vpkJsonParser;
|
||||
vpkSettings, vpkEnv, Json;
|
||||
|
||||
CONST
|
||||
open = '{"';
|
||||
|
|
@ -44,7 +44,7 @@ PROCEDURE configured*(): BOOLEAN;
|
|||
BEGIN
|
||||
RETURN vpkEnv.checkConfig()
|
||||
END configured;
|
||||
|
||||
(*
|
||||
PROCEDURE getConfigTreeVal*(VAR tree: vpkSettings.tree);
|
||||
VAR
|
||||
f: Files.File; r: Files.Rider;
|
||||
|
|
@ -78,6 +78,74 @@ BEGIN
|
|||
tree.typ := vpkSettings.unkn;
|
||||
END;
|
||||
END getConfigTreeVal;
|
||||
*)
|
||||
|
||||
PROCEDURE getConfigTreeVal*(VAR tree: vpkSettings.tree);
|
||||
CONST
|
||||
defConfSize=512;
|
||||
VAR
|
||||
f: Files.File; r: Files.Rider;
|
||||
jsonstr, errstr: Json.jString;
|
||||
jsonTree, pathValue, typeValue, branchValue: Json.Value;
|
||||
rootObj: Json.Obj;
|
||||
Path, Type, Git, HTTP: Json.jString;
|
||||
b: BOOLEAN;
|
||||
i: INTEGER;
|
||||
BEGIN
|
||||
COPY("", tree.branch);
|
||||
COPY("", tree.url);
|
||||
|
||||
f := vpkEnv.getConfFile();
|
||||
Files.Set(r, f, 0);
|
||||
NEW(jsonstr, defConfSize);
|
||||
NEW(errstr, 4096); (* Adjust size as needed *)
|
||||
i := 0;
|
||||
REPEAT
|
||||
Files.Read(r, jsonstr^[i]);
|
||||
INC(i)
|
||||
UNTIL r.eof OR (i>=LEN(jsonstr^));
|
||||
Files.Close(f);
|
||||
b := Json.Parse(jsonTree, jsonstr^, errstr^);
|
||||
IF b THEN
|
||||
IF jsonTree IS Json.Obj THEN
|
||||
rootObj := jsonTree(Json.Obj);
|
||||
NEW(Path, Strings.Length(vpkSettings.rmtTreeKey)+1);
|
||||
COPY(vpkSettings.rmtTreeKey, Path^);
|
||||
|
||||
IF Json.ObjSelect(pathValue, rootObj, Path) THEN
|
||||
IF pathValue IS Json.Str THEN
|
||||
Out.String("aaa");
|
||||
(*this crashes voc *)
|
||||
(* tree.url := pathValue(Json.Str).str^;*)
|
||||
COPY(pathValue(Json.Str).str^, tree.url);
|
||||
END;
|
||||
END;
|
||||
|
||||
|
||||
NEW(Type, Strings.Length(vpkSettings.rmtTypKey)+1);
|
||||
COPY(vpkSettings.rmtTypKey, Type^);
|
||||
IF Json.ObjSelect(typeValue, rootObj, Type) THEN
|
||||
IF typeValue IS Json.Str THEN
|
||||
NEW(Git, Strings.Length(vpkSettings.rmtTypGitVal)+1);
|
||||
NEW(HTTP, Strings.Length(vpkSettings.rmtTypHttpVal)+1);
|
||||
IF typeValue(Json.Str).str^ = "git" THEN
|
||||
tree.typ := vpkSettings.git;
|
||||
ELSIF typeValue(Json.Str).str^ = "http" THEN
|
||||
tree.typ := vpkSettings.http;
|
||||
ELSE
|
||||
tree.typ := vpkSettings.unkn;
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
|
||||
ELSE
|
||||
Out.String("JSON root is not an object."); Out.Ln;
|
||||
END;
|
||||
ELSE
|
||||
Out.String("JSON parsing failed: "); Out.String(errstr^); Out.Ln;
|
||||
END;
|
||||
END getConfigTreeVal;
|
||||
|
||||
|
||||
PROCEDURE setTreeDir*(VAR a: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
MODULE vpkDot;
|
||||
IMPORT Strings, vpkdepTree, StringList;
|
||||
IMPORT Out, Strings, vpkdepTree, StringList;
|
||||
|
||||
CONST
|
||||
first = "digraph dependencies {";
|
||||
|
|
@ -19,11 +19,15 @@ BEGIN
|
|||
lst.AppendString(lst, line);
|
||||
i := 0;
|
||||
REPEAT
|
||||
Out.String("entered repeat"); Out.Ln;
|
||||
dep := tree.Get(tree, i);
|
||||
IF dep # NIL THEN
|
||||
Out.String("dep # nil"); Out.Ln;
|
||||
IF dep.deps # NIL THEN
|
||||
Out.String("dep.deps # nil"); Out.Ln;
|
||||
j := 0;
|
||||
REPEAT
|
||||
Out.String("othe repeat");Out.Ln;
|
||||
IF dep.deps[j]^.name # NIL THEN
|
||||
COPY("", line);
|
||||
Strings.Append(tab, line);
|
||||
|
|
@ -31,9 +35,12 @@ BEGIN
|
|||
Strings.Append(arrow, line);
|
||||
Strings.Append(dep.deps[j]^.name^, line);
|
||||
lst.AppendString(lst, line);
|
||||
Out.String("appends over"); Out.Ln;
|
||||
END;
|
||||
INC(j)
|
||||
UNTIL j = (LEN(dep.deps^) -1 );
|
||||
INC(j);
|
||||
Out.String("j="); Out.Int(j,0); Out.Ln;
|
||||
Out.String("len dep.deps"); Out.Int(LEN(dep.deps^), 0); Out.Ln;
|
||||
UNTIL j = (LEN(dep.deps^));
|
||||
END
|
||||
END;
|
||||
INC(i)
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ BEGIN
|
|||
res := Platform.System(cmd^);
|
||||
IF res # 0 THEN Out.String("failed to run build command"); Out.Ln END;
|
||||
INC(j)
|
||||
UNTIL j = keys.Count - 1;
|
||||
UNTIL j = keys.Count;
|
||||
ELSE
|
||||
Out.String("no build info found for the package: "); Out.String(dep.name^); Out.Ln;
|
||||
END;
|
||||
|
|
|
|||
|
|
@ -1,109 +1,228 @@
|
|||
MODULE vpkJsonDepRetriever;
|
||||
IMPORT Out, StringList, strUtils, vpkJsonParser, vpkStorage, vpkSettings, vpkdepTree;
|
||||
IMPORT Strings, Out,
|
||||
StringList, strUtils, Json, vpkStorage, vpkSettings, vpkdepTree;
|
||||
|
||||
CONST
|
||||
ErrmessSize = 4096;
|
||||
|
||||
PROCEDURE getBuildInfo*(VAR d: vpkdepTree.Tdep; VAR k, v: StringList.TStringList): BOOLEAN;
|
||||
VAR
|
||||
p: strUtils.pstring;
|
||||
jsonRecord, build : vpkJsonParser.JsonTypePointer;
|
||||
keys, values: StringList.TStringList;
|
||||
jsonstr, errstr: strUtils.pstring;
|
||||
tree, buildValue, command, file: Json.Value;
|
||||
rootObj, buildStep: Json.Obj;
|
||||
buildArray: Json.Arr;
|
||||
cm, fl, bl: Json.jString;
|
||||
b: BOOLEAN;
|
||||
BEGIN
|
||||
k := NIL; v := NIL;
|
||||
b := FALSE;
|
||||
p := NIL;
|
||||
vpkStorage.json2pstring(d.name^, p);
|
||||
IF p # NIL THEN
|
||||
jsonRecord := vpkJsonParser.Create(p^);
|
||||
build := jsonRecord.GetNonTerminal(jsonRecord, vpkSettings.bldType);
|
||||
IF build # NIL THEN
|
||||
keys := NIL; values := NIL;
|
||||
jsonstr := NIL;
|
||||
vpkStorage.json2pstring(d.name^, jsonstr);
|
||||
IF jsonstr # NIL THEN
|
||||
NEW(errstr, ErrmessSize);
|
||||
b := Json.Parse(tree, jsonstr^, errstr^);
|
||||
(*build := jsonRecord.GetNonTerminal(jsonRecord, vpkSettings.bldType);*)
|
||||
IF b THEN
|
||||
(*keys := NIL; values := NIL;
|
||||
build.GetTerminalKeys(build, keys);
|
||||
build.GetTerminalValues(build, values);
|
||||
k := keys; v := values;
|
||||
RETURN TRUE
|
||||
k := keys; v := values;*)
|
||||
IF tree IS Json.Obj THEN
|
||||
rootObj := tree(Json.Obj);
|
||||
NEW(bl, Strings.Length(vpkSettings.bldType)+1); (* +1 for 0X *)
|
||||
COPY(vpkSettings.bldType, bl^);
|
||||
IF Json.ObjSelect(buildValue, rootObj, bl) THEN
|
||||
IF buildValue IS Json.Arr THEN
|
||||
buildArray := buildValue(Json.Arr);
|
||||
WHILE buildArray # NIL DO
|
||||
buildStep := buildArray.value(Json.Obj);
|
||||
NEW(cm, Strings.Length(vpkSettings.bldCommand)+1); (* +1 for 0X *)
|
||||
NEW(fl, Strings.Length(vpkSettings.bldFile)+1); (* +1 for 0X *)
|
||||
COPY(vpkSettings.bldCommand, cm^);
|
||||
COPY(vpkSettings.bldFile, fl^);
|
||||
Out.String("cm^ is"); Out.String(cm^); Out.Ln;
|
||||
Out.String("fl^ is"); Out.String(fl^); Out.Ln;
|
||||
IF Json.ObjSelect(command, buildStep, cm) &
|
||||
Json.ObjSelect(file, buildStep, fl) THEN
|
||||
Out.String("COMMAND FOUND"); Out.Ln;
|
||||
Out.String("FILE FOUND"); Out.Ln;
|
||||
IF (command IS Json.Str) & (file IS Json.Str) THEN
|
||||
Out.String("Command: "); Out.String(command(Json.Str).str^);
|
||||
Out.String(", File: "); Out.String(file(Json.Str).str^); Out.Ln;
|
||||
IF k = NIL THEN k := StringList.Create() END;
|
||||
IF v = NIL THEN v := StringList.Create() END;
|
||||
k.AppendString(k, command(Json.Str).str^);
|
||||
v.AppendString(v, file(Json.Str).str^);
|
||||
ELSE
|
||||
RETURN FALSE
|
||||
END
|
||||
ELSE
|
||||
RETURN FALSE
|
||||
Out.String("command and file must be strings"); Out.Ln;
|
||||
HALT(5);
|
||||
END;
|
||||
END;
|
||||
buildArray := buildArray.next;
|
||||
END;
|
||||
ELSE
|
||||
Out.String("Build section is not an array."); Out.Ln;
|
||||
END;
|
||||
ELSE
|
||||
Out.String("Build section not found."); Out.Ln;
|
||||
END;
|
||||
ELSE
|
||||
Out.String("JSON root is not an object."); Out.Ln;
|
||||
END;
|
||||
ELSE
|
||||
Out.String("JSON parsing failed: "); Out.String(errstr^); Out.Ln;
|
||||
END;
|
||||
END;
|
||||
RETURN b;
|
||||
END getBuildInfo;
|
||||
|
||||
PROCEDURE getURIandType*(VAR d: vpkdepTree.Tdep; VAR URI: ARRAY OF CHAR; VAR type: ARRAY OF CHAR; VAR branch: ARRAY OF CHAR);
|
||||
VAR
|
||||
jsonRecord, remote: vpkJsonParser.JsonTypePointer;
|
||||
p: strUtils.pstring;
|
||||
k, v: StringList.pstring;
|
||||
keys, values: StringList.TStringList;
|
||||
i: LONGINT;
|
||||
jsonstr, errstr: strUtils.pstring;
|
||||
tree, singleValue, remoteValue, uriValue, typeValue, branchValue: Json.Value;
|
||||
rootObj, someObj, remoteObj: Json.Obj;
|
||||
err: ARRAY ErrmessSize OF CHAR;
|
||||
b, fndRemSec: BOOLEAN;
|
||||
key, val, u, t, br, remote: Json.jString;
|
||||
BEGIN
|
||||
Out.String("ENTERED GET URI AND TYPE"); Out.Ln;
|
||||
strUtils.zeroStr(URI);
|
||||
strUtils.zeroStr(type);
|
||||
strUtils.zeroStr(branch);
|
||||
p := NIL;
|
||||
vpkStorage.json2pstring(d.name^, p);
|
||||
IF p # NIL THEN
|
||||
jsonRecord := vpkJsonParser.Create(p^);
|
||||
remote := jsonRecord.GetNonTerminal(jsonRecord, vpkSettings.rmtType);
|
||||
IF remote # NIL THEN
|
||||
keys := NIL; values := NIL;
|
||||
remote.GetTerminalKeys(remote, keys);
|
||||
remote.GetTerminalValues(remote, values);
|
||||
i := 0;
|
||||
jsonstr := NIL;
|
||||
vpkStorage.json2pstring(d.name^, jsonstr);
|
||||
IF jsonstr # NIL THEN
|
||||
Out.String("JSONSTR # NIL"); Out.Ln;
|
||||
NEW(errstr, ErrmessSize);
|
||||
b := Json.Parse(tree, jsonstr^, err);
|
||||
IF b THEN
|
||||
Out.String("b IS TRUE"); Out.Ln;
|
||||
IF tree IS Json.Obj THEN
|
||||
Out.String("tree IS Json.Obj"); Out.Ln;
|
||||
rootObj := tree(Json.Obj);
|
||||
NEW(u, Strings.Length(vpkSettings.rmtTreeKey) + 1); COPY(vpkSettings.rmtTreeKey, u^);
|
||||
NEW(t, Strings.Length(vpkSettings.rmtTypKey) + 1); COPY(vpkSettings.rmtTypKey, t^);
|
||||
NEW(br, Strings.Length(vpkSettings.rmtTreeBranchKey) + 1); COPY(vpkSettings.rmtTreeBranchKey, br^);
|
||||
NEW(remote, Strings.Length(vpkSettings.rmtType)+1);
|
||||
COPY(vpkSettings.rmtType, remote^);
|
||||
fndRemSec := FALSE;
|
||||
REPEAT
|
||||
k := keys.GetString(keys, i);
|
||||
v := values.GetString(values, i);
|
||||
IF k^ = vpkSettings.rmtTypKey THEN COPY(v^, type) END;
|
||||
IF k^ = vpkSettings.rmtTreeKey THEN COPY(v^, URI) END;
|
||||
IF k^ = vpkSettings.rmtTreeBranchKey THEN COPY(v^, branch) END;
|
||||
INC(i);
|
||||
UNTIL i = keys.Count - 1;
|
||||
IF rootObj.name^ = remote^ THEN
|
||||
fndRemSec := TRUE;
|
||||
Out.String("REMOTE SECT FOUND"); Out.Ln;
|
||||
END;
|
||||
IF ~fndRemSec THEN rootObj := rootObj.next END
|
||||
UNTIL (rootObj = NIL) OR fndRemSec;
|
||||
Out.String("exited the loop");
|
||||
|
||||
IF fndRemSec THEN
|
||||
WHILE rootObj # NIL DO
|
||||
Out.String("entered while rootobj # nil"); Out.Ln;
|
||||
Out.String("rootobj.name "); Out.String(rootObj.name^); Out.Ln;
|
||||
remoteValue := rootObj.value;
|
||||
IF remoteValue IS Json.Obj THEN
|
||||
Out.String(" remotevalue is jsonobj"); Out.Ln;
|
||||
singleValue := remoteValue(Json.Obj);
|
||||
WHILE singleValue # NIL DO
|
||||
IF singleValue IS Json.Obj THEN
|
||||
Out.String("singlevalue is jsonobj"); Out.Ln;
|
||||
someObj := singleValue(Json.Obj);
|
||||
key := someObj.name;
|
||||
Out.String("key is "); Out.String(key^); Out.Ln;
|
||||
val := someObj.value(Json.Str).str;
|
||||
Out.String("val is "); Out.String(val^); Out.Ln;
|
||||
Out.Ln;
|
||||
IF key^ = vpkSettings.rmtTypKey THEN COPY(val^, type) END;
|
||||
IF key^ = vpkSettings.rmtTreeBranchKey THEN COPY(val^, branch) END;
|
||||
IF key^ = vpkSettings.rmtTreeKey THEN COPY(val^, URI) END;
|
||||
END; (* if singlevalue is json.obj *)
|
||||
singleValue := someObj.next;
|
||||
END (* while singlevalue # nil *)
|
||||
END; (* if remotevalue is json.obj *)
|
||||
rootObj := rootObj.next
|
||||
END; (* while rootObj # NIL *)
|
||||
ELSE
|
||||
Out.String("malformed json: no 'Remote' section"); Out.Ln;
|
||||
HALT(63);
|
||||
END
|
||||
Out.String("Remote section not found."); Out.Ln;
|
||||
END;
|
||||
ELSE
|
||||
Out.String("no json file for "); Out.String(d.name^); Out.Ln;
|
||||
Out.String("program is not expected to pass unexistent name, something is wrong in other module"); Out.Ln;
|
||||
HALT(64);
|
||||
END
|
||||
Out.String("JSON root is not an object."); Out.Ln;
|
||||
END;
|
||||
ELSE
|
||||
Out.String("JSON parsing failed: "); Out.String(err); Out.Ln;
|
||||
END;
|
||||
ELSE
|
||||
Out.String("No JSON string provided."); Out.Ln;
|
||||
END;
|
||||
END getURIandType;
|
||||
|
||||
(* returns -1 if no such dependency found, otherwise returns length of depstr string list *)
|
||||
PROCEDURE getDeps*(VAR d: vpkdepTree.Tdep; VAR depstrlist: StringList.TStringList): LONGINT;
|
||||
VAR
|
||||
jsonRecord, dependencies: vpkJsonParser.JsonTypePointer;
|
||||
p: strUtils.pstring;
|
||||
b: BOOLEAN;
|
||||
pkgName : ARRAY 32 OF CHAR;
|
||||
jsonstr, errstr: strUtils.pstring;
|
||||
tree, depsValue, singleDep: Json.Value;
|
||||
rootObj, depObj: Json.Obj;
|
||||
depName, depVersion: Json.jString;
|
||||
foundDepSection: BOOLEAN;
|
||||
BEGIN
|
||||
depstrlist := NIL;
|
||||
p := NIL;
|
||||
vpkStorage.json2pstring(d.name^, p);
|
||||
IF p # NIL THEN
|
||||
jsonRecord := vpkJsonParser.Create(p^);
|
||||
b := jsonRecord.GetTerminal(jsonRecord, vpkSettings.pkgTypKey, pkgName);
|
||||
IF b THEN
|
||||
dependencies := NIL;
|
||||
Out.String("searching dependencies for '"); Out.String(d.name^); Out.String("'... ");
|
||||
dependencies := jsonRecord.GetNonTerminal(jsonRecord, vpkSettings.depTypKey);
|
||||
IF dependencies # NIL THEN
|
||||
Out.String("found!"); Out.Ln;
|
||||
dependencies.GetTerminalKeys(dependencies, depstrlist);
|
||||
StringList.list(depstrlist);
|
||||
RETURN depstrlist.Count
|
||||
ELSE
|
||||
Out.String("...has no dependencies"); Out.Ln;
|
||||
RETURN 0
|
||||
END
|
||||
ELSE
|
||||
RETURN -2 (* json doesn't contain 'Package' key, malformed *)
|
||||
jsonstr := NIL;
|
||||
vpkStorage.json2pstring(d.name^, jsonstr);
|
||||
IF jsonstr # NIL THEN
|
||||
NEW(errstr, ErrmessSize);
|
||||
IF Json.Parse(tree, jsonstr^, errstr^) THEN
|
||||
IF tree IS Json.Obj THEN
|
||||
rootObj := tree(Json.Obj); Out.String("entering first while"); Out.Ln;
|
||||
(* searching for dependencies section *)
|
||||
foundDepSection := FALSE;
|
||||
REPEAT
|
||||
IF rootObj.name^ = "Dependencies" THEN
|
||||
foundDepSection := TRUE;
|
||||
Out.String("dependency section found"); Out.Ln;
|
||||
END;
|
||||
ELSE
|
||||
RETURN -1 (* no such json file found *)
|
||||
IF ~foundDepSection THEN rootObj := rootObj.next END
|
||||
UNTIL (rootObj = NIL) OR foundDepSection;
|
||||
Out.String("exited the loop"); Out.Ln;
|
||||
IF foundDepSection THEN
|
||||
WHILE rootObj # NIL DO
|
||||
Out.String("entered"); Out.Ln;
|
||||
Out.String("rootobj.name "); Out.String(rootObj.name^); Out.Ln;
|
||||
(*IF rootObj.name^ = "Dependencies" THEN Out.String("yes name deps");Out.Ln;*)
|
||||
depsValue := rootObj.value;
|
||||
IF depsValue IS Json.Obj THEN Out.String("depsvalue is jsonobj"); Out.Ln;
|
||||
singleDep := depsValue(Json.Obj);
|
||||
WHILE singleDep # NIL DO
|
||||
IF singleDep IS Json.Obj THEN Out.String("singledep is json obj"); Out.Ln;
|
||||
depObj := singleDep(Json.Obj);
|
||||
depName := depObj.name;
|
||||
Out.String("name "); Out.String(depName^); Out.Ln;
|
||||
Out.String("assigning depVersion"); Out.Ln;
|
||||
depVersion := depObj.value(Json.Str).str;
|
||||
Out.String("version "); Out.String(depVersion^); Out.Ln;
|
||||
Out.String("assigning depstrlist"); Out.Ln;
|
||||
IF depstrlist = NIL THEN depstrlist := StringList.Create() END;
|
||||
depstrlist.AppendString(depstrlist, depName^);
|
||||
Out.String("lets find next"); Out.Ln;
|
||||
singleDep := depObj.next; (* Move to the next dependency *)
|
||||
END;
|
||||
END; (* End of inner WHILE loop for dependencies *)
|
||||
Out.String("returning "); Out.Int(depstrlist.Count, 0); Out.Ln;
|
||||
RETURN depstrlist.Count;
|
||||
END; (* End of IF depsValue IS Json.Obj *)
|
||||
(*END;*) (* End of IF rootObj.name^ = "Dependencies" *)
|
||||
rootObj := rootObj.next; (* Move to the next JSON object *)
|
||||
END; (* End of WHILE rootObj # NIL loop *)
|
||||
ELSE
|
||||
Out.String("returnig 0"); Out.Ln;
|
||||
RETURN 0; (* found no dependencies *)
|
||||
END;
|
||||
END; (* End of IF tree IS Json.Obj *)
|
||||
ELSE
|
||||
Out.String("JSON parsing failed: "); Out.String(errstr^); Out.Ln;
|
||||
END; (* End of IF Json.Parse *)
|
||||
ELSE
|
||||
Out.String("dependency '"); Out.String(d.name^); Out.String("' not found."); Out.Ln;
|
||||
RETURN -1; (* No such JSON file found *)
|
||||
END; (* End of IF jsonstr # NIL *)
|
||||
RETURN 0;
|
||||
END getDeps;
|
||||
|
||||
|
||||
|
||||
|
||||
END vpkJsonDepRetriever.
|
||||
|
|
|
|||
|
|
@ -58,7 +58,9 @@ VAR
|
|||
i: INTEGER;
|
||||
rtrvRes: LONGINT;
|
||||
BEGIN
|
||||
Out.String("entered mkDepTree, d.name^ is "); Out.String(d.name^); Out.Ln;
|
||||
vpkdepTree.Add(met, d);
|
||||
Out.String("EXITED vpkdepTree.Add"); Out.Ln;
|
||||
IF d.RetrieveDeps = NIL THEN Out.String("dep retriever method not installed"); Out.Ln; HALT(1) END;
|
||||
rtrvRes := d.RetrieveDeps(d, depStrs);
|
||||
IF rtrvRes = -1 THEN
|
||||
|
|
@ -68,36 +70,48 @@ BEGIN
|
|||
Out.Ln; Out.String(d.name^); Out.String(".json malformed: no 'Package' section."); Out.Ln;
|
||||
HALT(62);
|
||||
END;
|
||||
|
||||
Out.String("checking if depStrs in NIL"); Out.Ln;
|
||||
IF depStrs # NIL THEN
|
||||
(*IF rtrvRes > 0 THEN*)
|
||||
Out.String("no, continueing"); Out.Ln;
|
||||
NEW (deps, depStrs.Count);
|
||||
i := 0;
|
||||
REPEAT
|
||||
p := depStrs.GetString(depStrs, i);
|
||||
IF p # NIL THEN
|
||||
Out.String("p#nil"); Out.Ln;
|
||||
t := NIL;
|
||||
t := met.GetByName(met, p^);
|
||||
IF t = NIL THEN
|
||||
Out.String("t#nil"); Out.Ln;
|
||||
t := vpkdepTree.CreateDep(p^);
|
||||
t.InstallRetriever(t, rtvr);
|
||||
END;
|
||||
IF t = NIL THEN Out.String("t=nil"); Out.Ln END;
|
||||
deps[i] := t;
|
||||
Out.String("assigned t to deps[i]"); Out.Ln;
|
||||
IF ~treeContainsByName(t, depTree) THEN
|
||||
Out.String("not tree contains by name is true "); Out.Ln;
|
||||
IF treeContainsByName(t, met) THEN
|
||||
Out.Ln; Out.String("curcular dependency: ");
|
||||
Out.String(d.name^); Out.String(" requires "); Out.String(t.name^); Out.Ln;
|
||||
Out.String("unable to continue."); Out.Ln;
|
||||
HALT(60)
|
||||
ELSE
|
||||
Out.String("entering mkdeptree recursively"); Out.Ln;
|
||||
mkDepTree(t, depTree, met);
|
||||
Out.String("exited mkdeptryy recursively"); Out.Ln;
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
INC(i);
|
||||
UNTIL i = depStrs.Count - 1;
|
||||
INC(i); Out.String("i="); Out.Int(i, 0); Out.Ln;
|
||||
Out.String("depstrscount="); Out.Int(depStrs.Count, 0); Out.Ln;
|
||||
UNTIL i = depStrs.Count;
|
||||
d.AssignDeps(d, deps);
|
||||
END;
|
||||
Out.String("addcopy"); Out.Ln;
|
||||
vpkdepTree.AddCopy(depTree, d);
|
||||
Out.String("exited addcopy"); Out.Ln;
|
||||
END mkDepTree;
|
||||
|
||||
PROCEDURE resolve*(first: ARRAY OF CHAR; r: vpkdepTree.retriever): TdepTree;
|
||||
|
|
@ -106,12 +120,14 @@ VAR
|
|||
met: TdepTree;
|
||||
dep: Tdep;
|
||||
BEGIN
|
||||
Out.String("first : "); Out.String(first); Out.Ln;
|
||||
rtvr := r;
|
||||
depTree := vpkdepTree.Create();
|
||||
met := vpkdepTree.Create(); (* for deps that we already met *)
|
||||
dep := vpkdepTree.CreateDep(first);
|
||||
dep.InstallRetriever(dep, rtvr);
|
||||
mkDepTree(dep, depTree, met);
|
||||
Out.String("exiting resolve()"); Out.Ln;
|
||||
RETURN depTree
|
||||
END resolve;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,41 +1,22 @@
|
|||
MODULE vpkSettings;
|
||||
IMPORT Platform, Out;
|
||||
CONST
|
||||
vpkConfDir* = ".vipack";
|
||||
vpkConfFile* = "vipackConf.json";
|
||||
vpkTreeDir* = "vipackTree";
|
||||
vpkPkgDir* = "vpkLocal";
|
||||
vpkDepDir* = "deps";
|
||||
vpkBldDir* = "build";
|
||||
|
||||
graphName* = "deps.dot";
|
||||
|
||||
rmtType* = "Remote";
|
||||
rmtTypKey* = "type";
|
||||
rmtTypGitVal* = "git";
|
||||
rmtTypHttpVal* = "http";
|
||||
rmtTypHttpsVal* = "https";
|
||||
rmtTypGemiVal* = "gemini";
|
||||
rmtTreeKey* = "path";
|
||||
rmtTreeBranchKey* = "branch";
|
||||
bldType* = "Build";
|
||||
defTreeVal* = "https://github.com/vishaps/vipackTree";
|
||||
(*defTreeVal* = "git@github.com:vishaps/vipackTree";*)
|
||||
confTreeVal* = defTreeVal;
|
||||
defTypVal* = rmtTypGitVal;
|
||||
|
||||
pkgTypKey* = "Package";
|
||||
depTypKey* = "Dependencies";
|
||||
|
||||
packageFileName* = "VersionFile.json";
|
||||
host* = "localhost";
|
||||
port* = "80";
|
||||
|
||||
http* = 0;
|
||||
https* = 1;
|
||||
gemini* = 2;
|
||||
git* = 3;
|
||||
unkn* = -1;
|
||||
|
||||
VAR
|
||||
vpkConfDir-, vpkConfFile-, vpkTreeDir-, vpkPkgDir-, vpkDepDir-, vpkBldDir-,
|
||||
graphName-,
|
||||
rmtType-, rmtTypKey-, rmtTypGitVal-, rmtTypHttpVal-, rmtTypHttpsVal-,
|
||||
rmtTypGemiVal-, rmtTreeKey-, rmtTreeBranchKey-,
|
||||
bldType-, bldCommand-, bldFile-,
|
||||
defTreeVal-, confTreeVal-,
|
||||
defTypVal-, pkgTypKey-, depTypKey-, packageFileName-,
|
||||
host-, port-: ARRAY 128 OF CHAR;
|
||||
|
||||
TYPE
|
||||
tree* = RECORD
|
||||
url* : ARRAY 128 OF CHAR;
|
||||
|
|
@ -43,6 +24,37 @@ TYPE
|
|||
branch*: ARRAY 128 OF CHAR;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
vpkConfDir := ".vipack";
|
||||
vpkConfFile := "vipackConf.json";
|
||||
vpkTreeDir := "vipackTree";
|
||||
vpkPkgDir := "vpkLocal";
|
||||
vpkDepDir := "deps";
|
||||
vpkBldDir := "build";
|
||||
|
||||
graphName := "deps.dot";
|
||||
|
||||
rmtType := "Remote";
|
||||
rmtTypKey := "type";
|
||||
rmtTypGitVal := "git";
|
||||
rmtTypHttpVal := "http";
|
||||
rmtTypHttpsVal := "https";
|
||||
rmtTypGemiVal := "gemini";
|
||||
rmtTreeKey := "path";
|
||||
rmtTreeBranchKey := "branch";
|
||||
bldType := "Build";
|
||||
bldCommand := "command";
|
||||
bldFile := "file";
|
||||
defTreeVal := "https://github.com/vishaps/vipackTree";
|
||||
(*defTreeVal := "git@github.com:vishaps/vipackTree";*)
|
||||
confTreeVal := defTreeVal;
|
||||
defTypVal := rmtTypGitVal;
|
||||
|
||||
pkgTypKey := "Package";
|
||||
depTypKey := "Dependencies";
|
||||
|
||||
packageFileName := "VersionFile.json";
|
||||
host := "localhost";
|
||||
port := "80";
|
||||
|
||||
END vpkSettings.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ BEGIN
|
|||
Files.WriteBytes(r, str, Strings.Length(str));
|
||||
END WriteString;
|
||||
|
||||
PROCEDURE fileToString*(VAR fileName: ARRAY OF CHAR; VAR returnString: strUtils.pstring);
|
||||
PROCEDURE fileToString*(fileName: ARRAY OF CHAR; VAR returnString: strUtils.pstring);
|
||||
VAR
|
||||
f: Files.File;
|
||||
r: Files.Rider;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue