mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-06 04:52:26 +00:00
resolver improved: handles no such json, malformed jsons.
This commit is contained in:
parent
85bc6ea77a
commit
f1c4ca6ec3
5 changed files with 30 additions and 22 deletions
|
|
@ -1,16 +1,15 @@
|
|||
MODULE vpkJsonDepRetriever;
|
||||
IMPORT StringList, strutils, vpkJsonParser, vpkStorage, vpkSettings, vpkdepTree;
|
||||
IMPORT Out, StringList, strutils, vpkJsonParser, vpkStorage, vpkSettings, vpkdepTree;
|
||||
|
||||
|
||||
PROCEDURE getDeps*(VAR d: vpkdepTree.Tdep): StringList.TStringList;
|
||||
(* 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;
|
||||
result: StringList.TStringList;
|
||||
pkgName : ARRAY 32 OF CHAR;
|
||||
BEGIN
|
||||
result := NIL;
|
||||
depstrlist := NIL;
|
||||
p := NIL;
|
||||
vpkStorage.json2pstring(d.name^, p);
|
||||
IF p # NIL THEN
|
||||
|
|
@ -18,14 +17,22 @@ BEGIN
|
|||
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
|
||||
dependencies.GetTerminalKeys(dependencies, result);
|
||||
RETURN result
|
||||
Out.String("found!"); Out.Ln;
|
||||
dependencies.GetTerminalKeys(dependencies, depstrlist);
|
||||
RETURN depstrlist.Count
|
||||
ELSE
|
||||
Out.String("...has no dependencies"); Out.Ln;
|
||||
RETURN 0
|
||||
END
|
||||
END
|
||||
ELSE
|
||||
RETURN -2 (* json doesn't contain 'type' key, malformed *)
|
||||
END;
|
||||
ELSE
|
||||
RETURN -1 (* no such json file found *)
|
||||
END;
|
||||
RETURN result
|
||||
END getDeps;
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue