diff --git a/config-generator.py b/config-generator.py index 03f2a2c..a2b6f6e 100644 --- a/config-generator.py +++ b/config-generator.py @@ -67,6 +67,30 @@ if settings["fa_dhall_update"] == True: print('Einstellung "fa_dhall_file" ist leer, es wurde kein Pfad zur bffh.dhall angegeben.') print('Bitte das Feld ausfüllen oder "fa_dhall_update" auf "False" setzen.') +if settings["fa_dhall_create"] == True: + + fa_dhall_directory = settings["fa_dhall_directory"].replace('\\', '/') + + # Rollen + target = fa_dhall_directory + '/' + 'roles.dhall' + target = target.replace('//', '/') + write_file(target, export_roles) + + # Maschinen + target = fa_dhall_directory + '/' + 'machines.dhall' + target = target.replace('//', '/') + write_file(target, export_machines) + + # Aktoren + target = fa_dhall_directory + '/' + 'actors.dhall' + target = target.replace('//', '/') + write_file(target, export_actors) + + # Aktorenverbindung + target = fa_dhall_directory + '/' + 'actorconnections.dhall' + target = target.replace('//', '/') + write_file(target, export_actorconnections) + # Mermaid-Code if settings["generate_mermaid"] == True: print(' --- Mermaid-Code erzeugen') diff --git a/generator/core.py b/generator/core.py index ad9a7ad..a8aecdb 100644 --- a/generator/core.py +++ b/generator/core.py @@ -469,20 +469,29 @@ def generate_roles(machines): def generate_bffh_roles(roles): data = [] - - # Rollen - data.append(space + 'roles = {') + # Anfang Datenstruktur + if settings["fa_dhall_create"] == False: + data.append(space + 'roles = {') + else: + data.append('{') + + # Inhalt for role in roles: - data.append(space * 2 + f'{role}' + ' = {') - data.append(space * 3 + 'permissions = [') + data.append(space * 1 + extraspace + f'{role}' + ' =') + data.append(space * 1 + extraspace + '{') + data.append(space * 2 + extraspace + 'permissions = [') for perm in roles[role]["perms"]: data.append(space * 4 + f'"{perm}",') - data.append(space * 3 + ']') - data.append(space * 2 + '},') + data.append(space * 2 + extraspace + ']') + data.append(space * 1 + extraspace + '},') data.append(' ') - data.append(space + '},') + # Ende Datenstruktur + if settings["fa_dhall_create"] == False: + data.append(space + '},') + else: + data.append('}') return data @@ -491,22 +500,34 @@ def generate_bffh_machines(machines): data = [] - data.append(space + 'machines = {') + # Anfang Datenstruktur + if settings["fa_dhall_create"] == False: + data.append(space + 'machines = {') + else: + data.append('{') + + # Inhalt for id, m in machines.items(): specs = m.get_machine() - data.append(space * 2 + f'{specs["fa_id"]}' + ' = {') - data.append(space * 3 + f'name = "{specs["name"]}",') - data.append(space * 3 + f'description = "{specs["desc"]}",') - data.append(space * 3 + f'wiki = "{specs["wikiurl"]}",') - data.append(space * 3 + f'category = "{specs["category"]}",') + data.append(space * 1 + extraspace + f'{specs["fa_id"]}' + ' =') + data.append(space * 1 + extraspace + '{') + data.append(space * 2 + extraspace + f'name = "{specs["name"]}",') + data.append(space * 2 + extraspace + f'description = "{specs["desc"]}",') + data.append(space * 2 + extraspace + f'wiki = "{specs["wikiurl"]}",') + data.append(space * 2 + extraspace + f'category = "{specs["category"]}",') for i in range(len(specs["perms"])): - data.append(space * 3 + f'{specs["perms_names"][i]} = "{specs["perms"][i]}",') + data.append(space * 2 + extraspace + f'{specs["perms_names"][i]} = "{specs["perms"][i]}",') - data.append(space * 2 + '},') + data.append(space * 1 + extraspace + '},') data.append(' ') - data.append(space + '},') + + # Ende Datenstruktur + if settings["fa_dhall_create"] == False: + data.append(space + '},') + else: + data.append('}') return data @@ -515,8 +536,13 @@ def generate_bffh_actors(machines): data = [] - data.append(space + 'actors = {') + # Anfang Datenstruktur + if settings["fa_dhall_create"] == False: + data.append(space + 'actors = {') + else: + data.append('{') + # Inhalt for id, m in machines.items(): specs = m.get_machine() @@ -525,11 +551,11 @@ def generate_bffh_actors(machines): # 2do Actor Library Funktionalität - data.append(f' {actor_handle} =') - data.append(' {') - data.append(f' module = "{actor_library[specs["actor_type"]]["module"]}",') - data.append(' params =') - data.append(' {') + data.append(space * 1 + extraspace + f'{actor_handle} =') + data.append(space * 1 + extraspace + '{') + data.append(space * 2 + extraspace + f'module = "{actor_library[specs["actor_type"]]["module"]}",') + data.append(space * 2 + extraspace + 'params =') + data.append(space * 2 + extraspace + '{') # Aktor-ID der aktuellen Maschine speichern replace = { @@ -539,11 +565,17 @@ def generate_bffh_actors(machines): for key, value in actor_library[specs["actor_type"]]["params"].items(): template = Template(value) string = template.substitute(replace) - data.append(f' {key} = {string},') - data.append(' }') - data.append(' },') + data.append(space * 3 + extraspace + f'{key} = {string},') + + data.append(space * 2 + extraspace + '}') + data.append(space * 1 + extraspace + '},') data.append(' ') - data.append(space + '}, ') + + # Ende Datenstruktur + if settings["fa_dhall_create"] == False: + data.append(space + '},') + else: + data.append('}') return data @@ -553,16 +585,25 @@ def generate_bffh_actorconnections(machines): data = [] - data.append(space + 'actor_connections = [') + # Anfang Datenstruktur + if settings["fa_dhall_create"] == False: + data.append(space + 'actor_connections = [') + else: + data.append('[') + # Inhalt for id, m in machines.items(): specs = m.get_machine() if len(specs["actor_id"]) > 0 and len(specs["actor_type"]) > 0: actor_fullid = specs["actor_type"] + '_' + specs["actor_id"] - data.append(space * 2 + '{ ' + f'machine = "{specs["fa_id"]}", actor = "{actor_fullid}"' + ' },') + data.append(space * 1 + extraspace + '{ ' + f'machine = "{specs["fa_id"]}", actor = "{actor_fullid}"' + ' },') - data.append(space + '],') + # Ende Datenstruktur + if settings["fa_dhall_create"] == False: + data.append(space + '],') + else: + data.append(']') return data diff --git a/generator/globals.py b/generator/globals.py index 5ab836f..cb882b6 100644 --- a/generator/globals.py +++ b/generator/globals.py @@ -5,6 +5,11 @@ from generator.helpers import load_actors settings = config_load('settings.ini', 'generator') actor_library = load_actors('actors.ini') +if settings["fa_dhall_create"] == False: + extraspace = '\t' +else: + extraspace = '' + icon_admin = "👑" icon_manager = "🛠️" # icon_user = "🧍" diff --git a/settings.ini b/settings.ini index 9f08119..812de48 100644 --- a/settings.ini +++ b/settings.ini @@ -23,11 +23,15 @@ manager_subarea = False ; Automatisches Einfügen aller erzeugten Daten (Maschinen, Rolle, Aktoren, Aktor-Verbindungen) in die bffh.dhall ; Die Datei muss über Platzhalter verfügen, siehe Beispieldatei ( /docs/bffh-vorlage.dhall ) -fa_dhall_update = True +fa_dhall_update = False ; Pfad zur bffh.dall von FabAccess. Der Pfad muss vollständig sein und die bffh.dhall beinhalten. ; Beispiel: D:\FabAccess\config\bffh\bffh.dhall bzw. /home/fabaccess/bffh/bffh.dhall -fa_dhall_file = F:\Git\fabaccess-docker\config\bffh\bffh.dhall +fa_dhall_file = F:\fabaccess-docker\config\bffh\bffh.dhall + +; Erzeugt DHALL-Dateien für Rollen, Maschinen, Aktoren und Aktorenverbindungen +fa_dhall_create = True +fa_dhall_directory = F:\fabaccess-docker\config\bffh\ ; Mermaid-Code erzeugen generate_mermaid = True