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/vpkSyncer.Mod \
|
||||
../src/vpkRetriever.Mod \
|
||||
../src/vpkdepTree.Mod \
|
||||
../src/vpkDot.Mod \
|
||||
../src/vpkResolver.Mod \
|
||||
../src/vpkInstaller.Mod \
|
||||
../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;
|
||||
IMPORT StringList, vpkResolver;
|
||||
IMPORT StringList, vpkResolver, vpkdepTree, vpkDot;
|
||||
|
||||
PROCEDURE install*(VAR unit: ARRAY OF CHAR);
|
||||
VAR
|
||||
tree: vpkdepTree.TdepTree;
|
||||
lst: StringList.TStringList;
|
||||
BEGIN
|
||||
vpkResolver.resolve(unit);
|
||||
tree := vpkResolver.resolve(unit);
|
||||
lst := vpkDot.tree2dot(tree);
|
||||
|
||||
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