mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
refactoring to use sts-q's json module. compiles.
This commit is contained in:
parent
f303281641
commit
bf32bf4a8f
6 changed files with 316 additions and 87 deletions
39
GNUmakefile
39
GNUmakefile
|
|
@ -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
|
VOC = /opt/voc/bin/voc
|
||||||
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||||
|
|
@ -19,28 +19,28 @@ all: get_deps build_deps buildThis
|
||||||
|
|
||||||
get_deps:
|
get_deps:
|
||||||
@for i in $(DEPEND); do \
|
@for i in $(DEPEND); do \
|
||||||
if [ -d "$(DPS)/$${i}" ]; then \
|
if [ -d "$(DPS)/$${i}" ]; then \
|
||||||
cd "$(DPS)/$${i}"; \
|
cd "$(DPS)/$${i}"; \
|
||||||
git pull; \
|
git pull; \
|
||||||
cd - ; \
|
cd - ; \
|
||||||
else \
|
else \
|
||||||
mkdir -p "$(DPS)/$${i}"; \
|
mkdir -p "$(DPS)/$${i}"; \
|
||||||
cd "$(DPS)/$${i}"; \
|
cd "$(DPS)/$${i}"; \
|
||||||
cd .. ; \
|
cd .. ; \
|
||||||
git clone "https://$${i}"; \
|
git clone "https://$${i}"; \
|
||||||
cd - ; \
|
cd - ; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
build_deps:
|
build_deps:
|
||||||
mkdir -p $(BLD)
|
mkdir -p $(BLD)
|
||||||
cd $(BLD); \
|
cd $(BLD); \
|
||||||
for i in $(DEPEND); do \
|
for i in $(DEPEND); do \
|
||||||
if [ -f "$(DPS)/$${i}/GNUmakefile" ]; then \
|
if [ -f "$(DPS)/$${i}/GNUmakefile" ]; then \
|
||||||
make -f "$(DPS)/$${i}/GNUmakefile" BUILD=$(BLD); \
|
make -f "$(DPS)/$${i}/GNUmakefile" BUILD=$(BLD); \
|
||||||
else \
|
else \
|
||||||
make -f "$(DPS)/$${i}/Makefile" BUILD=$(BLD); \
|
make -f "$(DPS)/$${i}/Makefile" BUILD=$(BLD); \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
buildThis:
|
buildThis:
|
||||||
|
|
@ -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/vpkLinuxFiles.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkTime.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/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/vpkEnv.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkGit.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/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/vpkSyncer.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkdepTree.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkdepTree.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkDot.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;
|
IMPORT Files, Platform, Strings, Out, vpkSettings, vpkFiles, strTypes;
|
||||||
|
|
||||||
VAR
|
VAR
|
||||||
conf, confDir : ARRAY 256 OF CHAR;
|
conf-, confDir- : ARRAY 256 OF CHAR;
|
||||||
pkgTreeDir: POINTER TO ARRAY OF CHAR;
|
pkgTreeDir-: POINTER TO ARRAY OF CHAR;
|
||||||
|
|
||||||
PROCEDURE getHome*(VAR path: ARRAY OF CHAR);
|
PROCEDURE getHome*(VAR path: ARRAY OF CHAR);
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
@ -35,7 +35,7 @@ VAR
|
||||||
BEGIN
|
BEGIN
|
||||||
len := 9 + Strings.Length(depName) + Strings.Length(path0);
|
len := 9 + Strings.Length(depName) + Strings.Length(path0);
|
||||||
(* 5 chars are ../, /, /, plus a couple of chars *)
|
(* 5 chars are ../, /, /, plus a couple of chars *)
|
||||||
NEW(p, len);
|
NEW(p, len);
|
||||||
COPY("../", p^);
|
COPY("../", p^);
|
||||||
Strings.Append(vpkSettings.vpkDepDir, p^);
|
Strings.Append(vpkSettings.vpkDepDir, p^);
|
||||||
Strings.Append("/", p^);
|
Strings.Append("/", p^);
|
||||||
|
|
@ -58,7 +58,7 @@ VAR
|
||||||
ln : INTEGER;
|
ln : INTEGER;
|
||||||
BEGIN
|
BEGIN
|
||||||
ln := 3 + Strings.Length(prefix) + Strings.Length(vpkSettings.vpkBldDir);
|
ln := 3 + Strings.Length(prefix) + Strings.Length(vpkSettings.vpkBldDir);
|
||||||
NEW(builddir, ln);
|
NEW(builddir, ln);
|
||||||
COPY(prefix, builddir^);
|
COPY(prefix, builddir^);
|
||||||
createIfNotThere(builddir^);
|
createIfNotThere(builddir^);
|
||||||
Strings.Append("/", builddir^);
|
Strings.Append("/", builddir^);
|
||||||
|
|
@ -211,7 +211,7 @@ BEGIN
|
||||||
HALT(1);
|
HALT(1);
|
||||||
END;
|
END;
|
||||||
END;
|
END;
|
||||||
END;
|
END;
|
||||||
tmp := confDir;
|
tmp := confDir;
|
||||||
Strings.Append('/', tmp);
|
Strings.Append('/', tmp);
|
||||||
Strings.Append(vpkSettings.vpkTreeDir, tmp);
|
Strings.Append(vpkSettings.vpkTreeDir, tmp);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
MODULE vpkConf;
|
MODULE vpkConf;
|
||||||
IMPORT Out, Files, Strings, Platform,
|
IMPORT Out, Files, Strings, Platform,
|
||||||
vpkSettings, vpkEnv, vpkJsonParser;
|
vpkSettings, vpkEnv, Json;
|
||||||
|
|
||||||
CONST
|
CONST
|
||||||
open = '{"';
|
open = '{"';
|
||||||
|
|
@ -44,7 +44,7 @@ PROCEDURE configured*(): BOOLEAN;
|
||||||
BEGIN
|
BEGIN
|
||||||
RETURN vpkEnv.checkConfig()
|
RETURN vpkEnv.checkConfig()
|
||||||
END configured;
|
END configured;
|
||||||
|
(*
|
||||||
PROCEDURE getConfigTreeVal*(VAR tree: vpkSettings.tree);
|
PROCEDURE getConfigTreeVal*(VAR tree: vpkSettings.tree);
|
||||||
VAR
|
VAR
|
||||||
f: Files.File; r: Files.Rider;
|
f: Files.File; r: Files.Rider;
|
||||||
|
|
@ -78,6 +78,74 @@ BEGIN
|
||||||
tree.typ := vpkSettings.unkn;
|
tree.typ := vpkSettings.unkn;
|
||||||
END;
|
END;
|
||||||
END getConfigTreeVal;
|
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);
|
PROCEDURE setTreeDir*(VAR a: ARRAY OF CHAR);
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,75 @@
|
||||||
MODULE vpkJsonDepRetriever;
|
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;
|
PROCEDURE getBuildInfo*(VAR d: vpkdepTree.Tdep; VAR k, v: StringList.TStringList): BOOLEAN;
|
||||||
VAR
|
VAR
|
||||||
p: strUtils.pstring;
|
jsonstr, errstr: strUtils.pstring;
|
||||||
jsonRecord, build : vpkJsonParser.JsonTypePointer;
|
tree, buildValue, command, file: Json.Value;
|
||||||
keys, values: StringList.TStringList;
|
rootObj, buildStep: Json.Obj;
|
||||||
|
buildArray: Json.Arr;
|
||||||
|
cm, fl, bl: Json.jString;
|
||||||
b: BOOLEAN;
|
b: BOOLEAN;
|
||||||
BEGIN
|
BEGIN
|
||||||
b := FALSE;
|
b := FALSE;
|
||||||
p := NIL;
|
jsonstr := NIL;
|
||||||
vpkStorage.json2pstring(d.name^, p);
|
vpkStorage.json2pstring(d.name^, jsonstr);
|
||||||
IF p # NIL THEN
|
IF jsonstr # NIL THEN
|
||||||
jsonRecord := vpkJsonParser.Create(p^);
|
NEW(errstr, ErrmessSize);
|
||||||
build := jsonRecord.GetNonTerminal(jsonRecord, vpkSettings.bldType);
|
b := Json.Parse(tree, jsonstr^, errstr^);
|
||||||
IF build # NIL THEN
|
(*build := jsonRecord.GetNonTerminal(jsonRecord, vpkSettings.bldType);*)
|
||||||
keys := NIL; values := NIL;
|
IF b THEN
|
||||||
|
(*keys := NIL; values := NIL;
|
||||||
build.GetTerminalKeys(build, keys);
|
build.GetTerminalKeys(build, keys);
|
||||||
build.GetTerminalValues(build, values);
|
build.GetTerminalValues(build, values);
|
||||||
k := keys; v := values;
|
k := keys; v := values;*)
|
||||||
RETURN TRUE
|
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
|
||||||
|
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^);
|
||||||
|
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
|
ELSE
|
||||||
RETURN FALSE
|
Out.String("JSON parsing failed: "); Out.String(errstr^); Out.Ln;
|
||||||
END
|
END;
|
||||||
ELSE
|
|
||||||
RETURN FALSE
|
|
||||||
END;
|
END;
|
||||||
|
RETURN b;
|
||||||
END getBuildInfo;
|
END getBuildInfo;
|
||||||
|
(*
|
||||||
PROCEDURE getURIandType*(VAR d: vpkdepTree.Tdep; VAR URI: ARRAY OF CHAR; VAR type: ARRAY OF CHAR; VAR branch: ARRAY OF CHAR);
|
PROCEDURE getURIandType*(VAR d: vpkdepTree.Tdep; VAR URI: ARRAY OF CHAR; VAR type: ARRAY OF CHAR; VAR branch: ARRAY OF CHAR);
|
||||||
VAR
|
VAR
|
||||||
jsonRecord, remote: vpkJsonParser.JsonTypePointer;
|
jsonRecord, remote: vpkJsonParser.JsonTypePointer;
|
||||||
|
|
@ -52,9 +94,9 @@ BEGIN
|
||||||
REPEAT
|
REPEAT
|
||||||
k := keys.GetString(keys, i);
|
k := keys.GetString(keys, i);
|
||||||
v := values.GetString(values, i);
|
v := values.GetString(values, i);
|
||||||
IF k^ = vpkSettings.rmtTypKey THEN COPY(v^, type) END;
|
IF k^ = vpkSettings.rmtTypKey THEN COPY(v^, type) END;
|
||||||
IF k^ = vpkSettings.rmtTreeKey THEN COPY(v^, URI) END;
|
IF k^ = vpkSettings.rmtTreeKey THEN COPY(v^, URI) END;
|
||||||
IF k^ = vpkSettings.rmtTreeBranchKey THEN COPY(v^, branch) END;
|
IF k^ = vpkSettings.rmtTreeBranchKey THEN COPY(v^, branch) END;
|
||||||
INC(i);
|
INC(i);
|
||||||
UNTIL i = keys.Count - 1;
|
UNTIL i = keys.Count - 1;
|
||||||
ELSE
|
ELSE
|
||||||
|
|
@ -67,7 +109,69 @@ BEGIN
|
||||||
HALT(64);
|
HALT(64);
|
||||||
END
|
END
|
||||||
END getURIandType;
|
END getURIandType;
|
||||||
|
*)
|
||||||
|
|
||||||
|
PROCEDURE getURIandType*(VAR d: vpkdepTree.Tdep; VAR URI: ARRAY OF CHAR; VAR type: ARRAY OF CHAR; VAR branch: ARRAY OF CHAR);
|
||||||
|
VAR
|
||||||
|
jsonstr, errstr: strUtils.pstring;
|
||||||
|
tree, remoteValue, uriValue, typeValue, branchValue: Json.Value;
|
||||||
|
rootObj, remoteObj: Json.Obj;
|
||||||
|
err: ARRAY ErrmessSize OF CHAR;
|
||||||
|
b: BOOLEAN;
|
||||||
|
u, t, br, remote: Json.jString;
|
||||||
|
BEGIN
|
||||||
|
strUtils.zeroStr(URI);
|
||||||
|
strUtils.zeroStr(type);
|
||||||
|
strUtils.zeroStr(branch);
|
||||||
|
jsonstr := NIL;
|
||||||
|
vpkStorage.json2pstring(d.name^, jsonstr);
|
||||||
|
IF jsonstr # NIL THEN
|
||||||
|
NEW(errstr, ErrmessSize);
|
||||||
|
b := Json.Parse(tree, jsonstr^, err);
|
||||||
|
IF b THEN
|
||||||
|
IF tree IS Json.Obj THEN
|
||||||
|
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^);
|
||||||
|
IF Json.ObjSelect(remoteValue, rootObj, remote) THEN
|
||||||
|
IF remoteValue IS Json.Obj THEN
|
||||||
|
remoteObj := remoteValue(Json.Obj);
|
||||||
|
IF Json.ObjSelect(uriValue, remoteObj, u) THEN
|
||||||
|
IF uriValue IS Json.Str THEN
|
||||||
|
COPY(uriValue(Json.Str).str^, URI);
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
IF Json.ObjSelect(typeValue, remoteObj, t) THEN
|
||||||
|
IF typeValue IS Json.Str THEN
|
||||||
|
COPY(typeValue(Json.Str).str^, type);
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
IF Json.ObjSelect(branchValue, remoteObj, br) THEN
|
||||||
|
IF branchValue IS Json.Str THEN
|
||||||
|
COPY(branchValue(Json.Str).str^, branch);
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
ELSE
|
||||||
|
Out.String("Remote section is not an object."); Out.Ln;
|
||||||
|
END;
|
||||||
|
ELSE
|
||||||
|
Out.String("Remote 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(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 *)
|
(* 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;
|
PROCEDURE getDeps*(VAR d: vpkdepTree.Tdep; VAR depstrlist: StringList.TStringList): LONGINT;
|
||||||
VAR
|
VAR
|
||||||
|
|
@ -84,7 +188,7 @@ BEGIN
|
||||||
b := jsonRecord.GetTerminal(jsonRecord, vpkSettings.pkgTypKey, pkgName);
|
b := jsonRecord.GetTerminal(jsonRecord, vpkSettings.pkgTypKey, pkgName);
|
||||||
IF b THEN
|
IF b THEN
|
||||||
dependencies := NIL;
|
dependencies := NIL;
|
||||||
Out.String("searching dependencies for '"); Out.String(d.name^); Out.String("'... ");
|
Out.String("searching dependencies for '"); Out.String(d.name^); Out.String("'... ");
|
||||||
dependencies := jsonRecord.GetNonTerminal(jsonRecord, vpkSettings.depTypKey);
|
dependencies := jsonRecord.GetNonTerminal(jsonRecord, vpkSettings.depTypKey);
|
||||||
IF dependencies # NIL THEN
|
IF dependencies # NIL THEN
|
||||||
Out.String("found!"); Out.Ln;
|
Out.String("found!"); Out.Ln;
|
||||||
|
|
@ -102,6 +206,54 @@ BEGIN
|
||||||
RETURN -1 (* no such json file found *)
|
RETURN -1 (* no such json file found *)
|
||||||
END;
|
END;
|
||||||
END getDeps;
|
END getDeps;
|
||||||
|
*)
|
||||||
|
|
||||||
|
PROCEDURE getDeps*(VAR d: vpkdepTree.Tdep; VAR depstrlist: StringList.TStringList): LONGINT;
|
||||||
|
VAR
|
||||||
|
jsonstr, errstr: strUtils.pstring;
|
||||||
|
tree, depsValue, dep: Json.Value;
|
||||||
|
rootObj: Json.Obj;
|
||||||
|
depName: Json.jString;
|
||||||
|
b: BOOLEAN;
|
||||||
|
BEGIN
|
||||||
|
depstrlist := NIL;
|
||||||
|
jsonstr := NIL;
|
||||||
|
vpkStorage.json2pstring(d.name^, jsonstr);
|
||||||
|
IF jsonstr # NIL THEN
|
||||||
|
NEW(errstr, ErrmessSize);
|
||||||
|
b := Json.Parse(tree, jsonstr^, errstr^);
|
||||||
|
IF b THEN
|
||||||
|
IF tree IS Json.Obj THEN
|
||||||
|
rootObj := tree(Json.Obj);
|
||||||
|
NEW(depName, Strings.Length(vpkSettings.depTypKey) + 1);
|
||||||
|
COPY(vpkSettings.depTypKey, depName^);
|
||||||
|
IF Json.ObjSelect(depsValue, rootObj, depName) THEN
|
||||||
|
IF depsValue IS Json.Obj THEN
|
||||||
|
dep := depsValue(Json.Obj).value;
|
||||||
|
WHILE dep # NIL DO
|
||||||
|
IF dep IS Json.Obj THEN
|
||||||
|
depstrlist.AppendString(depstrlist, dep(Json.Obj).name^);
|
||||||
|
END;
|
||||||
|
dep := dep(Json.Obj).next;
|
||||||
|
END;
|
||||||
|
RETURN depstrlist.Count;
|
||||||
|
ELSE
|
||||||
|
Out.String("Dependencies section is not an object."); Out.Ln;
|
||||||
|
END;
|
||||||
|
ELSE
|
||||||
|
Out.String("Dependencies 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;
|
||||||
|
ELSE
|
||||||
|
RETURN -1; (* no such json file found *)
|
||||||
|
END;
|
||||||
|
RETURN 0;
|
||||||
|
END getDeps;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,41 +1,22 @@
|
||||||
MODULE vpkSettings;
|
MODULE vpkSettings;
|
||||||
IMPORT Platform, Out;
|
IMPORT Platform, Out;
|
||||||
CONST
|
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;
|
http* = 0;
|
||||||
https* = 1;
|
https* = 1;
|
||||||
gemini* = 2;
|
gemini* = 2;
|
||||||
git* = 3;
|
git* = 3;
|
||||||
unkn* = -1;
|
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
|
TYPE
|
||||||
tree* = RECORD
|
tree* = RECORD
|
||||||
url* : ARRAY 128 OF CHAR;
|
url* : ARRAY 128 OF CHAR;
|
||||||
|
|
@ -43,6 +24,37 @@ TYPE
|
||||||
branch*: ARRAY 128 OF CHAR;
|
branch*: ARRAY 128 OF CHAR;
|
||||||
END;
|
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.
|
END vpkSettings.
|
||||||
|
|
|
||||||
|
|
@ -7,17 +7,17 @@ BEGIN
|
||||||
Files.WriteBytes(r, str, Strings.Length(str));
|
Files.WriteBytes(r, str, Strings.Length(str));
|
||||||
END WriteString;
|
END WriteString;
|
||||||
|
|
||||||
PROCEDURE fileToString*(VAR fileName: ARRAY OF CHAR; VAR returnString: strUtils.pstring);
|
PROCEDURE fileToString*(fileName: ARRAY OF CHAR; VAR returnString: strUtils.pstring);
|
||||||
VAR
|
VAR
|
||||||
f: Files.File;
|
f: Files.File;
|
||||||
r: Files.Rider;
|
r: Files.Rider;
|
||||||
i, j: LONGINT;
|
i, j: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
returnString := NIL;
|
returnString := NIL;
|
||||||
f := Files.Old(fileName);
|
f := Files.Old(fileName);
|
||||||
IF f # NIL THEN
|
IF f # NIL THEN
|
||||||
Files.Set(r, f, 0);
|
Files.Set(r, f, 0);
|
||||||
i := Files.Length(f);
|
i := Files.Length(f);
|
||||||
NEW(returnString, i);
|
NEW(returnString, i);
|
||||||
j := 0;
|
j := 0;
|
||||||
REPEAT
|
REPEAT
|
||||||
|
|
@ -41,7 +41,7 @@ VAR
|
||||||
BEGIN
|
BEGIN
|
||||||
f := Files.New(fileName);
|
f := Files.New(fileName);
|
||||||
|
|
||||||
IF f = NIL THEN
|
IF f = NIL THEN
|
||||||
vpkLogger.Log(fileName);
|
vpkLogger.Log(fileName);
|
||||||
vpkLogger.Log(" not found");
|
vpkLogger.Log(" not found");
|
||||||
vpkLogger.Ln;
|
vpkLogger.Ln;
|
||||||
|
|
@ -67,7 +67,7 @@ BEGIN
|
||||||
vpkEnv.getTreeDir(fi.name);
|
vpkEnv.getTreeDir(fi.name);
|
||||||
Strings.Append("/", fi.name);
|
Strings.Append("/", fi.name);
|
||||||
Strings.Append(json, fi.name);
|
Strings.Append(json, fi.name);
|
||||||
Strings.Append(".json", fi.name);
|
Strings.Append(".json", fi.name);
|
||||||
IF vpkFiles.Exists(fi) THEN
|
IF vpkFiles.Exists(fi) THEN
|
||||||
fileToString(fi.name, pstr);
|
fileToString(fi.name, pstr);
|
||||||
END
|
END
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue