summary refs log tree commit diff
path: root/synapse/config/_base.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/config/_base.py')
-rw-r--r--synapse/config/_base.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/synapse/config/_base.py b/synapse/config/_base.py
index 08de6ee5ec..91c0229d81 100644
--- a/synapse/config/_base.py
+++ b/synapse/config/_base.py
@@ -21,6 +21,10 @@ import os
 import yaml
 
 
+class ConfigError(Exception):
+    pass
+
+
 class Config(object):
     def __init__(self, args):
         pass
@@ -29,8 +33,25 @@ class Config(object):
     def abspath(file_path):
         return os.path.abspath(file_path) if file_path else file_path
 
-    @staticmethod
-    def read_file(file_path):
+    @classmethod
+    def check_file(cls, file_path, config_name):
+        if file_path is None:
+            raise ConfigError(
+                "Missing config for %s."
+                " Try running again with --generate-config"
+                % (config_name,)
+            )
+        if not os.path.exists(file_path):
+            raise ConfigError(
+                "File % config for %s doesn't exist."
+                " Try running again with --generate-config"
+                % (config_name,)
+            )
+        return cls.abspath(file_path)
+
+    @classmethod
+    def read_file(cls, file_path, config_name):
+        cls.check_file(file_path, config_name)
         with open(file_path) as file_stream:
             return file_stream.read()