mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-06 04:52:26 +00:00
66 lines
1.9 KiB
Modula-2
66 lines
1.9 KiB
Modula-2
MODULE vpkInstaller;
|
|
IMPORT Out, StringList, vpkResolver, vpkdepTree, vpkDot, vpkSettings, vpkJsonDepRetriever, vpkSyncer;
|
|
|
|
PROCEDURE resolve*(VAR unit: ARRAY OF CHAR): vpkdepTree.TdepTree;
|
|
VAR
|
|
tree: vpkdepTree.TdepTree;
|
|
lst: StringList.TStringList;
|
|
dep: vpkdepTree.Tdep;
|
|
i : LONGINT;
|
|
BEGIN
|
|
Out.Ln; Out.String("resolving dependencies..."); Out.Ln;
|
|
tree := vpkResolver.resolve(unit, vpkJsonDepRetriever.getDeps);
|
|
Out.String(" done! (:"); Out.Ln; Out.Ln;
|
|
lst := vpkDot.tree2dot(tree);
|
|
Out.String("dependency graph:"); Out.Ln;
|
|
Out.String("-----------------"); Out.Ln;
|
|
StringList.DumpOut(lst);
|
|
lst.Dump(lst, vpkSettings.graphName);
|
|
Out.String("-----------------"); Out.Ln;
|
|
Out.String("(use 'dot -Tpng deps.dot > deps.png' to get the graph image)"); Out.Ln; Out.Ln;
|
|
Out.String("dependencies will be installed in the following order:"); Out.Ln;
|
|
i := 0;
|
|
REPEAT
|
|
dep := vpkdepTree.Get(tree, i);
|
|
Out.String(dep.name^); Out.Ln;
|
|
INC(i)
|
|
UNTIL i = tree.Count;
|
|
RETURN tree
|
|
END resolve;
|
|
|
|
PROCEDURE fetch*(VAR package, prefix, pkgTree: ARRAY OF CHAR);
|
|
VAR
|
|
depTree: vpkdepTree.TdepTree;
|
|
dep: vpkdepTree.Tdep;
|
|
i: LONGINT;
|
|
URI: ARRAY 128 OF CHAR;
|
|
typ: ARRAY 16 OF CHAR;
|
|
BEGIN
|
|
depTree := resolve(package);
|
|
i := 0;
|
|
REPEAT
|
|
dep := vpkdepTree.Get(depTree, i);
|
|
vpkJsonDepRetriever.getURIandType(dep, URI, typ);
|
|
vpkSyncer.fetch(dep.name^, URI, typ, prefix);
|
|
INC(i)
|
|
UNTIL i = depTree.Count;
|
|
END fetch;
|
|
|
|
PROCEDURE build*(VAR package, prefix, tree: ARRAY OF CHAR);
|
|
VAR
|
|
depTree: vpkdepTree.TdepTree;
|
|
dep: vpkdepTree.Tdep;
|
|
i: LONGINT;
|
|
URI: ARRAY 128 OF CHAR;
|
|
typ: ARRAY 16 OF CHAR;
|
|
BEGIN
|
|
depTree := resolve(package);
|
|
i := 0;
|
|
REPEAT
|
|
dep := vpkdepTree.Get(depTree, i);
|
|
vpkJsonDepRetriever.getURIandType(dep, URI, typ);
|
|
vpkSyncer.fetch(dep.name^, URI, typ, prefix);
|
|
INC(i);
|
|
UNTIL i = depTree.Count;
|
|
END build;
|
|
END vpkInstaller.
|