aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/cli/DOM.py
blob: 6bd6c8a7e9da5900c21fbbfa2472b4d58351573c (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
61
62
63
#!/usr/bin/env python3

from sys import argv
from sys import exit as sysexit

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):
    _exitcode = 0

    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:
        try:
            app = Application()
            app.addFile(Path(item), "default_lib")
            app.prettyPrint()
        except GHDLBaseException as ex:
            print(ex)
            _exitcode = 1

    return _exitcode


if __name__ == "__main__":
    sysexit(main(argv[1:]))