now the resolver client should install the retriever procedure.

This commit is contained in:
Norayr Chilingarian 2020-06-14 21:51:26 +04:00
parent db0a32e674
commit f6a4c1f0bc
4 changed files with 11 additions and 8 deletions

View file

@ -32,9 +32,9 @@ all:
../src/vpkStorage.Mod \
../src/vpkSyncer.Mod \
../src/vpkdepTree.Mod \
../src/vpkJsonDepRetriever.Mod \
../src/vpkDot.Mod \
../src/vpkResolver.Mod \
../src/vpkJsonDepRetriever.Mod \
../src/vpkInstaller.Mod \
../src/vipack.Mod -m

View file

@ -1,5 +1,5 @@
MODULE vpkInstaller;
IMPORT Out, StringList, vpkResolver, vpkdepTree, vpkDot, vpkSettings;
IMPORT Out, StringList, vpkResolver, vpkdepTree, vpkDot, vpkSettings, vpkJsonDepRetriever;
PROCEDURE install*(VAR unit: ARRAY OF CHAR);
VAR
@ -9,7 +9,7 @@ VAR
i : LONGINT;
BEGIN
Out.String("resolving dependencies...");
tree := vpkResolver.resolve(unit);
tree := vpkResolver.resolve(unit, vpkJsonDepRetriever.getDeps);
Out.String(" done!"); Out.Ln;
lst := vpkDot.tree2dot(tree);
Out.String("dependency graph:"); Out.Ln;

View file

@ -1,5 +1,5 @@
MODULE vpkResolver;
IMPORT Out, StringList, vpkdepTree, vpkJsonDepRetriever;
IMPORT Out, StringList, vpkdepTree;
TYPE
Tdep = vpkdepTree.Tdep;
@ -7,6 +7,8 @@ TYPE
TdepTree = vpkdepTree.TdepTree;
VAR rtvr: vpkdepTree.retriever;
PROCEDURE treeContains(VAR d: Tdep; VAR depTree: TdepTree): BOOLEAN;
VAR
res: BOOLEAN;
@ -46,7 +48,7 @@ BEGIN
t := met.GetByName(met, e.obj(StringList.TString).str^);
IF t = NIL THEN
t := vpkdepTree.CreateDep(e.obj(StringList.TString).str^);
t.InstallRetriever(t, vpkJsonDepRetriever.getDeps);
t.InstallRetriever(t, rtvr);
END;
deps[i] := t;
IF ~treeContains(t, depTree) THEN
@ -67,16 +69,17 @@ BEGIN
depTree.Add(depTree, d);
END mkDepTree;
PROCEDURE resolve*(first: ARRAY OF CHAR): TdepTree;
PROCEDURE resolve*(first: ARRAY OF CHAR; r: vpkdepTree.retriever): TdepTree;
VAR
depTree: TdepTree;
met: TdepTree;
dep: Tdep;
BEGIN
rtvr := r;
depTree := vpkdepTree.Create();
met := vpkdepTree.Create(); (* for deps that we already met *)
dep := vpkdepTree.CreateDep(first);
dep.InstallRetriever(dep, vpkJsonDepRetriever.getDeps);
dep.InstallRetriever(dep, rtvr);
mkDepTree(dep, depTree, met);
RETURN depTree
END resolve;

View file

@ -31,7 +31,7 @@ TYPE
deps- : Tdeps;
Create* : PROCEDURE (VAR name: ARRAY OF CHAR): Tdep;
AssignDeps* : PROCEDURE (VAR d: Tdep; VAR deps: Tdeps);
RetrieveDeps* : retriever;
RetrieveDeps- : retriever;
InstallRetriever*: PROCEDURE(VAR d: Tdep; r: retriever);
END;