diff --git a/doc/utils/filesystem.rst b/doc/utils/filesystem.rst index 6ae30928..a145e197 100644 --- a/doc/utils/filesystem.rst +++ b/doc/utils/filesystem.rst @@ -4,6 +4,7 @@ File system operation utils .. autofunction:: moulinette.utils.filesystem.read_file .. autofunction:: moulinette.utils.filesystem.read_json .. autofunction:: moulinette.utils.filesystem.read_yaml +.. autofunction:: moulinette.utils.filesystem.read_toml .. autofunction:: moulinette.utils.filesystem.write_to_file .. autofunction:: moulinette.utils.filesystem.append_to_file .. autofunction:: moulinette.utils.filesystem.write_to_json diff --git a/moulinette/utils/filesystem.py b/moulinette/utils/filesystem.py index 02066757..884c7afc 100644 --- a/moulinette/utils/filesystem.py +++ b/moulinette/utils/filesystem.py @@ -1,10 +1,13 @@ import os import yaml +import toml import errno import shutil import json import grp + from pwd import getpwnam +from collections import OrderedDict from moulinette import m18n from moulinette.core import MoulinetteError @@ -77,6 +80,28 @@ def read_yaml(file_path): return loaded_yaml +def read_toml(file_path): + """ + Safely read a toml file + + Keyword argument: + file_path -- Path to the toml file + """ + + # Read file + file_content = read_file(file_path) + + # Try to load toml to check if it's syntaxically correct + try: + loaded_toml = toml.loads(file_content, _dict=OrderedDict) + except Exception as e: + raise MoulinetteError(errno.EINVAL, + m18n.g('corrupted_toml', + ressource=file_path, error=str(e))) + + return loaded_toml + + def read_ldif(file_path, filtred_entries=[]): """ Safely read a LDIF file and create struct in the same style than