From f6a4c1f0bc4dc2d180535dfa60399ce4c31836e9 Mon Sep 17 00:00:00 2001 From: Norayr Chilingarian Date: Sun, 14 Jun 2020 21:51:26 +0400 Subject: [PATCH] now the resolver client should install the retriever procedure. --- makefile | 2 +- src/vpkInstaller.Mod | 4 ++-- src/vpkResolver.Mod | 11 +++++++---- src/vpkdepTree.Mod | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/makefile b/makefile index 7dc6a42..5f4236f 100644 --- a/makefile +++ b/makefile @@ -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 diff --git a/src/vpkInstaller.Mod b/src/vpkInstaller.Mod index e48079b..17c8624 100644 --- a/src/vpkInstaller.Mod +++ b/src/vpkInstaller.Mod @@ -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; diff --git a/src/vpkResolver.Mod b/src/vpkResolver.Mod index adb8421..d0780e8 100644 --- a/src/vpkResolver.Mod +++ b/src/vpkResolver.Mod @@ -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; diff --git a/src/vpkdepTree.Mod b/src/vpkdepTree.Mod index 5e86a9d..623bc0c 100644 --- a/src/vpkdepTree.Mod +++ b/src/vpkdepTree.Mod @@ -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;