]> git.phdru.name Git - m_librarian.git/commitdiff
Feat(config): Environment variables are expanded in paths
authorOleg Broytman <phd@phdru.name>
Sun, 10 Jun 2018 21:51:29 +0000 (00:51 +0300)
committerOleg Broytman <phd@phdru.name>
Sun, 10 Jun 2018 23:31:08 +0000 (02:31 +0300)
docs-ru/news.rst
docs/news.rst
m_librarian/config.py
m_librarian/download.py
m_librarian/web/app.py
scripts/ml-search.py

index 3269fa19534d65bd4ad1acf23339afbab1a5b6ce..558bc5c8334ead8f2efd401e9f8acf6b95fd1d68 100644 (file)
@@ -10,6 +10,9 @@ Version 0.1.4 (2018-05-??)
 
 * Файл конфигурации, все секции и все ключи сделаны необязательными.
 
+* В файле конфигурации подставляются переменные окружения в ключах,
+  указывающих пути.
+
 Version 0.1.3 (2018-05-25)
 --------------------------
 
index 6c12e087f8016d77942b5982504b2379c5423e6b..8fd1e7b42f82f23a2589ecd6ea02b97b7b51f342 100644 (file)
@@ -10,6 +10,8 @@ Version 0.1.4 (2018-06-??)
 
 * Config file, all sections and all key are now completely optional.
 
+* Environment variables are expanded in paths in config file.
+
 Version 0.1.3 (2018-05-25)
 --------------------------
 
index cbf76b7aab2c8e168ae734d6b09f8055519c181d..9fff40781d63a58db98004704c0c2aa6deeac1d0 100755 (executable)
@@ -63,6 +63,10 @@ class ConfigWrapper(object):
             return default
         # Do not catch ValueError here, it must be propagated
 
+    def getpath(self, section, option, default=os.path.curdir):
+        path = self.get(section, option, default=default)
+        return os.path.expanduser(os.path.expandvars(path))
+
 
 def get_config(config_path=None):
     global _ml_config
index 7e27561be25f413e8b054d34239c36c2740962bd..6304658062b79bf2ef68a3550c2981d44eb094e2 100755 (executable)
@@ -67,7 +67,7 @@ def download(book, dest_path=None, lib_path=None, a_format=None):
     if lib_path is None:
         global _library_path
         if _library_path is None:
-            _library_path = get_config().get('library', 'path') or '.'
+            _library_path = get_config().getpath('library', 'path')
         lib_path = _library_path
 
     global format, compile_format, compiled_format
index 9991bb714f6fc9ea0653152f60a71929c4b2c0cd..42c5c5a632bee899df2105b1be5c214cd453557c 100644 (file)
@@ -106,7 +106,7 @@ def send_static(filename):
 @cheetah_view('download.tmpl')
 def download_books():
     books_ids = request.forms.getall('books')
-    download_path = get_config().get('download', 'path') or '.'
+    download_path = get_config().getpath('download', 'path')
     if books_ids:
         for id in books_ids:
             book = Book.get(int(id))
index 5cc0bc4a1b1a24aab281389f77f018be3cd67b59..24db982fafb1b4cf80ef45741e0ec1d5b76380f5 100755 (executable)
@@ -203,8 +203,7 @@ def _search_books(case_sensitive, search_type, args):
         if args.get or args.get_many:
             download_to = args.download_to
             if download_to is None:
-                download_to = get_config().get('download', 'path') \
-                    or os.path.curdir
+                download_to = get_config().getpath('download', 'path')
             download(book, download_to, args.path, args.format)
         count += 1
     print_count(count)