-
Notifications
You must be signed in to change notification settings - Fork 0
/
modules.py
69 lines (62 loc) · 2.87 KB
/
modules.py
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
64
65
66
67
68
69
#!/usr/bin/python
# -*- coding: utf-8 -*-# ***************************************************************************
# * Copyright (c) 2015-2024 by Pierre-Henri WUILLEMIN *
# * {prenom.nom}_at_lip6.fr *
# * *
# * "act" is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU General Public License as published by *
# * the Free Software Foundation; either version 2 of the License, or *
# * (at your option) any later version. *
# * *
# * This program is distributed in the hope that it will be useful, *
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
# * GNU General Public License for more details. *
# * *
# * You should have received a copy of the GNU General Public License *
# * along with this program; if not, write to the *
# * Free Software Foundation, Inc., *
# * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
# **************************************************************************
import re
import sys
from .configuration import cfg
from .utils import setifyString, notif
def parseModulesTxt() -> dict[str, str]:
modules = {}
module_line = re.compile(r"^\s*list\s*\(\s*APPEND\s*MODULES\s*\"(.*)\"\s*\)(\s*#\s*(.*))?")
with open(cfg.modulesFile, "r", encoding="utf8") as f:
for line in f:
rep = module_line.search(line)
if rep:
module = rep.groups(0)[0]
descr = rep.groups(0)[2]
if descr == 0:
descr = module
modules[module] = descr
return modules
def check_modules(current: dict[str, str]):
setM = setifyString(current['modules'])
if 'pyAgrum' in current['targets']:
notif('Forcing the compilation of all modules for wrappers')
cde = 'ALL'
elif 'ALL' in setM or 'all' in setM:
cde = 'ALL'
else:
if not setM.issubset(set(cfg.modules)):
cde = 'LIST'
else:
cde = '+'.join(setM)
if cde == 'ALL':
current['modules'] = '+'.join(sorted(cfg.modules))
elif cde == 'LIST':
print("Modules must be one of the following:")
print(" - ALL")
for x in sorted(cfg.modules):
print(" - " + x + " (" + cfg.moduleLabels[x] + ")")
print("\nCurrent configuration contains the following modules which are outside of the scope:")
for x in sorted(list(setM - set(cfg.modules))):
print(f" - {x} (unknown module)")
sys.exit(1)
else:
current['modules'] = cde