mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-06 21:12:25 +00:00
now the retriever function is the installable method of dep object.
This commit is contained in:
parent
e6823cb373
commit
db0a32e674
4 changed files with 22 additions and 9 deletions
2
makefile
2
makefile
|
|
@ -31,8 +31,8 @@ all:
|
||||||
../src/vpkConf.Mod \
|
../src/vpkConf.Mod \
|
||||||
../src/vpkStorage.Mod \
|
../src/vpkStorage.Mod \
|
||||||
../src/vpkSyncer.Mod \
|
../src/vpkSyncer.Mod \
|
||||||
../src/vpkRetriever.Mod \
|
|
||||||
../src/vpkdepTree.Mod \
|
../src/vpkdepTree.Mod \
|
||||||
|
../src/vpkJsonDepRetriever.Mod \
|
||||||
../src/vpkDot.Mod \
|
../src/vpkDot.Mod \
|
||||||
../src/vpkResolver.Mod \
|
../src/vpkResolver.Mod \
|
||||||
../src/vpkInstaller.Mod \
|
../src/vpkInstaller.Mod \
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
MODULE vpkRetriever;
|
MODULE vpkJsonDepRetriever;
|
||||||
IMPORT StringList, strutils, vpkJsonParser, vpkStorage, vpkSettings;
|
IMPORT StringList, strutils, vpkJsonParser, vpkStorage, vpkSettings, vpkdepTree;
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE getDeps*(VAR name: ARRAY OF CHAR): StringList.TStringList;
|
PROCEDURE getDeps*(VAR d: vpkdepTree.Tdep): StringList.TStringList;
|
||||||
VAR
|
VAR
|
||||||
jsonRecord, dependencies: vpkJsonParser.JsonTypePointer;
|
jsonRecord, dependencies: vpkJsonParser.JsonTypePointer;
|
||||||
p: strutils.pstring;
|
p: strutils.pstring;
|
||||||
|
|
@ -12,7 +12,7 @@ VAR
|
||||||
BEGIN
|
BEGIN
|
||||||
result := NIL;
|
result := NIL;
|
||||||
p := NIL;
|
p := NIL;
|
||||||
vpkStorage.json2pstring(name, p);
|
vpkStorage.json2pstring(d.name^, p);
|
||||||
IF p # NIL THEN
|
IF p # NIL THEN
|
||||||
jsonRecord := vpkJsonParser.Create(p^);
|
jsonRecord := vpkJsonParser.Create(p^);
|
||||||
b := jsonRecord.GetTerminal(jsonRecord, vpkSettings.pkgTypKey, pkgName);
|
b := jsonRecord.GetTerminal(jsonRecord, vpkSettings.pkgTypKey, pkgName);
|
||||||
|
|
@ -29,4 +29,4 @@ BEGIN
|
||||||
END getDeps;
|
END getDeps;
|
||||||
|
|
||||||
|
|
||||||
END vpkRetriever.
|
END vpkJsonDepRetriever.
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
MODULE vpkResolver;
|
MODULE vpkResolver;
|
||||||
IMPORT Out, StringList, vpkdepTree, vpkRetriever;
|
IMPORT Out, StringList, vpkdepTree, vpkJsonDepRetriever;
|
||||||
|
|
||||||
TYPE
|
TYPE
|
||||||
Tdep = vpkdepTree.Tdep;
|
Tdep = vpkdepTree.Tdep;
|
||||||
|
|
@ -35,8 +35,8 @@ VAR
|
||||||
i: INTEGER;
|
i: INTEGER;
|
||||||
BEGIN
|
BEGIN
|
||||||
met.Add(met, d);
|
met.Add(met, d);
|
||||||
|
IF d.RetrieveDeps = NIL THEN Out.String("dep retriever method not installed"); Out.Ln; HALT(1) END;
|
||||||
depStrs := vpkRetriever.getDeps(d.name^);
|
depStrs := d.RetrieveDeps(d);
|
||||||
IF depStrs # NIL THEN
|
IF depStrs # NIL THEN
|
||||||
NEW (deps, depStrs.Count);
|
NEW (deps, depStrs.Count);
|
||||||
i := 0;
|
i := 0;
|
||||||
|
|
@ -46,6 +46,7 @@ BEGIN
|
||||||
t := met.GetByName(met, e.obj(StringList.TString).str^);
|
t := met.GetByName(met, e.obj(StringList.TString).str^);
|
||||||
IF t = NIL THEN
|
IF t = NIL THEN
|
||||||
t := vpkdepTree.CreateDep(e.obj(StringList.TString).str^);
|
t := vpkdepTree.CreateDep(e.obj(StringList.TString).str^);
|
||||||
|
t.InstallRetriever(t, vpkJsonDepRetriever.getDeps);
|
||||||
END;
|
END;
|
||||||
deps[i] := t;
|
deps[i] := t;
|
||||||
IF ~treeContains(t, depTree) THEN
|
IF ~treeContains(t, depTree) THEN
|
||||||
|
|
@ -75,6 +76,7 @@ BEGIN
|
||||||
depTree := vpkdepTree.Create();
|
depTree := vpkdepTree.Create();
|
||||||
met := vpkdepTree.Create(); (* for deps that we already met *)
|
met := vpkdepTree.Create(); (* for deps that we already met *)
|
||||||
dep := vpkdepTree.CreateDep(first);
|
dep := vpkdepTree.CreateDep(first);
|
||||||
|
dep.InstallRetriever(dep, vpkJsonDepRetriever.getDeps);
|
||||||
mkDepTree(dep, depTree, met);
|
mkDepTree(dep, depTree, met);
|
||||||
RETURN depTree
|
RETURN depTree
|
||||||
END resolve;
|
END resolve;
|
||||||
|
|
|
||||||
|
|
@ -23,12 +23,16 @@ TYPE
|
||||||
Count* : LONGINT;
|
Count* : LONGINT;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
retriever- = PROCEDURE (VAR d: Tdep): StringList.TStringList;
|
||||||
|
|
||||||
TdepDesc* = RECORD
|
TdepDesc* = RECORD
|
||||||
prev-, next-: Tdep;
|
prev-, next-: Tdep;
|
||||||
name- : pstring;
|
name- : pstring;
|
||||||
deps- : Tdeps;
|
deps- : Tdeps;
|
||||||
Create* : PROCEDURE (VAR name: ARRAY OF CHAR): Tdep;
|
Create* : PROCEDURE (VAR name: ARRAY OF CHAR): Tdep;
|
||||||
AssignDeps* : PROCEDURE (VAR d: Tdep; VAR deps: Tdeps);
|
AssignDeps* : PROCEDURE (VAR d: Tdep; VAR deps: Tdeps);
|
||||||
|
RetrieveDeps* : retriever;
|
||||||
|
InstallRetriever*: PROCEDURE(VAR d: Tdep; r: retriever);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
PROCEDURE AssignDeps*(VAR d: Tdep; VAR deps: Tdeps);
|
PROCEDURE AssignDeps*(VAR d: Tdep; VAR deps: Tdeps);
|
||||||
|
|
@ -36,6 +40,11 @@ BEGIN
|
||||||
d.deps := deps
|
d.deps := deps
|
||||||
END AssignDeps;
|
END AssignDeps;
|
||||||
|
|
||||||
|
PROCEDURE InstallRetriever*(VAR d: Tdep; r: retriever);
|
||||||
|
BEGIN
|
||||||
|
d.RetrieveDeps := r
|
||||||
|
END InstallRetriever;
|
||||||
|
|
||||||
PROCEDURE CreateDep*(VAR name: ARRAY OF CHAR): Tdep;
|
PROCEDURE CreateDep*(VAR name: ARRAY OF CHAR): Tdep;
|
||||||
VAR
|
VAR
|
||||||
dep: Tdep;
|
dep: Tdep;
|
||||||
|
|
@ -44,6 +53,8 @@ BEGIN
|
||||||
NEW(dep.name, Strings.Length(name) + 1);
|
NEW(dep.name, Strings.Length(name) + 1);
|
||||||
COPY(name, dep.name^);
|
COPY(name, dep.name^);
|
||||||
dep.AssignDeps := AssignDeps;
|
dep.AssignDeps := AssignDeps;
|
||||||
|
dep.InstallRetriever := InstallRetriever;
|
||||||
|
dep.RetrieveDeps := NIL;
|
||||||
RETURN dep
|
RETURN dep
|
||||||
END CreateDep;
|
END CreateDep;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue