mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
simplified some modules by adding others.
This commit is contained in:
parent
dd6093e056
commit
dff47dc004
4 changed files with 159 additions and 2 deletions
2
makefile
2
makefile
|
|
@ -32,6 +32,8 @@ all:
|
||||||
../src/vpkStorage.Mod \
|
../src/vpkStorage.Mod \
|
||||||
../src/vpkSyncer.Mod \
|
../src/vpkSyncer.Mod \
|
||||||
../src/vpkRetriever.Mod \
|
../src/vpkRetriever.Mod \
|
||||||
|
../src/vpkdepTree.Mod \
|
||||||
|
../src/vpkDot.Mod \
|
||||||
../src/vpkResolver.Mod \
|
../src/vpkResolver.Mod \
|
||||||
../src/vpkInstaller.Mod \
|
../src/vpkInstaller.Mod \
|
||||||
../src/vipack.Mod -m
|
../src/vipack.Mod -m
|
||||||
|
|
|
||||||
46
src/vpkDot.Mod
Normal file
46
src/vpkDot.Mod
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
MODULE vpkDot;
|
||||||
|
IMPORT Strings, vpkdepTree, StringList;
|
||||||
|
|
||||||
|
CONST
|
||||||
|
first = "digraph dependencies {";
|
||||||
|
last = "}";
|
||||||
|
arrow = " -> ";
|
||||||
|
tab = " ";
|
||||||
|
|
||||||
|
PROCEDURE tree2dot*(VAR tree: vpkdepTree.TdepTree): StringList.TStringList;
|
||||||
|
VAR
|
||||||
|
dep : vpkdepTree.Tdep;
|
||||||
|
i, j : LONGINT;
|
||||||
|
lst : StringList.TStringList;
|
||||||
|
line: ARRAY 64 OF CHAR;
|
||||||
|
BEGIN
|
||||||
|
lst := StringList.Create();
|
||||||
|
line:= first;
|
||||||
|
lst.AppendString(lst, line);
|
||||||
|
i := 0;
|
||||||
|
REPEAT
|
||||||
|
dep := tree.Get(tree, i);
|
||||||
|
IF dep # NIL THEN
|
||||||
|
IF dep.deps # NIL THEN
|
||||||
|
j := 0;
|
||||||
|
REPEAT
|
||||||
|
IF dep.deps[j]^.name # NIL THEN
|
||||||
|
COPY("", line);
|
||||||
|
Strings.Append(tab, line);
|
||||||
|
Strings.Append(dep.name^, line);
|
||||||
|
Strings.Append(arrow, line);
|
||||||
|
Strings.Append(dep.deps[j]^.name^, line);
|
||||||
|
lst.AppendString(lst, line);
|
||||||
|
END;
|
||||||
|
INC(j)
|
||||||
|
UNTIL j = (LEN(dep.deps^) -1 );
|
||||||
|
END
|
||||||
|
END;
|
||||||
|
INC(i)
|
||||||
|
UNTIL i = tree.Count ;
|
||||||
|
line := last;
|
||||||
|
lst.AppendString(lst, line);
|
||||||
|
RETURN lst;
|
||||||
|
END tree2dot;
|
||||||
|
|
||||||
|
END vpkDot.
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
MODULE vpkInstaller;
|
MODULE vpkInstaller;
|
||||||
IMPORT StringList, vpkResolver;
|
IMPORT StringList, vpkResolver, vpkdepTree, vpkDot;
|
||||||
|
|
||||||
PROCEDURE install*(VAR unit: ARRAY OF CHAR);
|
PROCEDURE install*(VAR unit: ARRAY OF CHAR);
|
||||||
|
VAR
|
||||||
|
tree: vpkdepTree.TdepTree;
|
||||||
|
lst: StringList.TStringList;
|
||||||
BEGIN
|
BEGIN
|
||||||
vpkResolver.resolve(unit);
|
tree := vpkResolver.resolve(unit);
|
||||||
|
lst := vpkDot.tree2dot(tree);
|
||||||
|
|
||||||
END install;
|
END install;
|
||||||
|
|
||||||
|
|
|
||||||
105
src/vpkdepTree.Mod
Normal file
105
src/vpkdepTree.Mod
Normal file
|
|
@ -0,0 +1,105 @@
|
||||||
|
MODULE vpkdepTree;
|
||||||
|
IMPORT Out, strutils, StringList;
|
||||||
|
TYPE
|
||||||
|
|
||||||
|
pstring = strutils.pstring;
|
||||||
|
pstrings = strutils.pstrings;
|
||||||
|
|
||||||
|
Tdep* = POINTER TO TdepDesc;
|
||||||
|
Tdeps* = POINTER TO ARRAY OF Tdep;
|
||||||
|
|
||||||
|
TdepTree* = POINTER TO TdepTreeDesc;
|
||||||
|
|
||||||
|
TdepTreeDesc* = RECORD
|
||||||
|
First- : Tdep;
|
||||||
|
Last- : Tdep;
|
||||||
|
Create* : PROCEDURE () : TdepTree;
|
||||||
|
Free* : PROCEDURE (l : TdepTree);
|
||||||
|
Clear* : PROCEDURE (l : TdepTree);
|
||||||
|
Add* : PROCEDURE (l : TdepTree; s : Tdep);
|
||||||
|
Get* : PROCEDURE (l : TdepTree; i : LONGINT): Tdep;
|
||||||
|
Empty* : PROCEDURE (l : TdepTree) : BOOLEAN;
|
||||||
|
Count* : LONGINT;
|
||||||
|
END;
|
||||||
|
|
||||||
|
TdepDesc* = RECORD
|
||||||
|
prev-, next-: Tdep;
|
||||||
|
name* : pstring;
|
||||||
|
deps* : Tdeps;
|
||||||
|
END;
|
||||||
|
|
||||||
|
PROCEDURE list(VAR s : StringList.TStringList);
|
||||||
|
VAR e : StringList.Node;
|
||||||
|
i : INTEGER;
|
||||||
|
BEGIN
|
||||||
|
NEW(e);
|
||||||
|
i := 0;
|
||||||
|
REPEAT
|
||||||
|
e := s.Get(s, i);
|
||||||
|
IF e # NIL THEN Out.String (e.obj(StringList.TString).str^); Out.Ln END;
|
||||||
|
(*Out.String (e.string); Out.Ln;*)
|
||||||
|
INC(i);
|
||||||
|
UNTIL i = s.Count - 1;
|
||||||
|
END list;
|
||||||
|
|
||||||
|
PROCEDURE Free*(l : TdepTree);
|
||||||
|
BEGIN
|
||||||
|
END Free;
|
||||||
|
|
||||||
|
PROCEDURE Clear*(l : TdepTree);
|
||||||
|
BEGIN
|
||||||
|
l.First := NIL;
|
||||||
|
l.Count := 0;
|
||||||
|
END Clear;
|
||||||
|
|
||||||
|
PROCEDURE Empty* (l : TdepTree) : BOOLEAN;
|
||||||
|
BEGIN
|
||||||
|
RETURN l.First = NIL
|
||||||
|
END Empty;
|
||||||
|
|
||||||
|
PROCEDURE Add* (l : TdepTree; d: Tdep);
|
||||||
|
BEGIN
|
||||||
|
IF l.First = NIL THEN
|
||||||
|
l.First := d;
|
||||||
|
ELSE
|
||||||
|
l.Last.next := d;
|
||||||
|
END;
|
||||||
|
l.Last := d;
|
||||||
|
INC(l.Count);
|
||||||
|
END Add;
|
||||||
|
|
||||||
|
PROCEDURE Get*(l: TdepTree; inx: LONGINT): Tdep;
|
||||||
|
VAR
|
||||||
|
i: LONGINT;
|
||||||
|
d: Tdep;
|
||||||
|
BEGIN
|
||||||
|
NEW(d); d := NIL;
|
||||||
|
i := 0;
|
||||||
|
IF (inx < l.Count) & (inx >= 0) THEN
|
||||||
|
i := 0;
|
||||||
|
d := l.First;
|
||||||
|
WHILE i # inx DO
|
||||||
|
IF d # NIL THEN d := d.next END;
|
||||||
|
INC(i);
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
RETURN d;
|
||||||
|
END Get;
|
||||||
|
|
||||||
|
PROCEDURE Create* () : TdepTree;
|
||||||
|
VAR l : TdepTree;
|
||||||
|
BEGIN
|
||||||
|
NEW(l);
|
||||||
|
l.First := NIL;
|
||||||
|
l.Last := NIL;
|
||||||
|
l.Count := 0;
|
||||||
|
l.Add := Add;
|
||||||
|
l.Get := Get;
|
||||||
|
l.Clear := Clear;
|
||||||
|
l.Free := Free;
|
||||||
|
l.Empty := Empty;
|
||||||
|
RETURN(l);
|
||||||
|
END Create;
|
||||||
|
|
||||||
|
|
||||||
|
END vpkdepTree.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue