From b85758a1796c8e956146390cc013c9a4a59bf610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke?= Date: Sat, 25 Aug 2018 02:45:26 +0200 Subject: [PATCH] Make dialog loading more strict (#1692) While creating dialog files temporary files may be loaded and confuse skill creators. --- mycroft/dialog/__init__.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mycroft/dialog/__init__.py b/mycroft/dialog/__init__.py index 5017e285ff..37eb564709 100644 --- a/mycroft/dialog/__init__.py +++ b/mycroft/dialog/__init__.py @@ -17,6 +17,7 @@ from io import open import os import re +from pathlib import Path from mycroft.util import resolve_resource_file from mycroft.util.log import LOG @@ -106,16 +107,15 @@ class DialogLoader(object): Returns: a loaded instance of a dialog renderer """ - if not os.path.exists(dialog_dir) or not os.path.isdir(dialog_dir): + directory = Path(dialog_dir) + if not directory.exists() or not directory.is_dir(): LOG.warning("No dialog found: " + dialog_dir) return self.__renderer - for f in sorted( - filter(lambda x: os.path.isfile( - os.path.join(dialog_dir, x)), os.listdir(dialog_dir))): - dialog_entry_name = os.path.splitext(f)[0] - self.__renderer.load_template_file( - dialog_entry_name, os.path.join(dialog_dir, f)) + for dialog_entry in directory.glob('*.dialog'): + if dialog_entry.is_file(): + self.__renderer.load_template_file(dialog_entry.stem, + dialog_entry) return self.__renderer