aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/cli/DOM.py
blob: abf1f0af8ea0cd0d8670cd9963e20ed7ec78cad1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env python3

from sys import argv

from pathlib import Path

from pydecor import export

from pyGHDL.dom import Misc
from pyGHDL import GHDLBaseException

__all__ = []
__api__ = __all__

from pyGHDL.dom.formatting.prettyprint import PrettyPrint


@export
class Application:
    _design: Misc.Design

    def __init__(self):
        self._design = Misc.Design()

    def addFile(self, filename: Path, library: str):
        document = Misc.Document(filename)
        self._design.Documents.append(document)

    def prettyPrint(self):
        buffer = []

        PP = PrettyPrint()

        for doc in self._design.Documents:
            for line in PP.formatDocument(doc):
                buffer.append(line)

        print("\n".join(buffer))


def main():
    items = argv[1:]
    if len(items) < 1:
        print("Please, provide the files to be analyzed as CLI arguments.")
        print("Using <testsuite/pyunit/SimpleEntity.vhdl> for demo purposes.\n")
        items = ["testsuite/pyunit/SimpleEntity.vhdl"]

    for item in items:
        print("·", item)
        try:
            app = Application()
            app.addFile(Path(item), "default_lib")
        except GHDLBaseException as ex:
            print(ex)

        app.prettyPrint()


if __name__ == "__main__":
    main()