This commit is contained in:
Wolfram 2024-12-02 11:32:22 +01:00
parent a4dafd856e
commit 89f1909848
4 changed files with 106 additions and 32 deletions

View File

@ -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')

View File

@ -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

View File

@ -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 = "🧍"

View File

@ -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