diff --git a/pyard/db.py b/pyard/db.py index b6d82ab..e08b506 100644 --- a/pyard/db.py +++ b/pyard/db.py @@ -20,8 +20,10 @@ # > http://www.fsf.org/licensing/licenses/lgpl.html # > http://www.opensource.org/licenses/lgpl-license.php # +import os import pathlib import sqlite3 +import sys from typing import Tuple, Dict, Set, List from .mappings import ARSMapping, CodeMappings, AlleleGroups @@ -67,8 +69,25 @@ def create_db_connection(data_dir, imgt_version, ro=False): if not pathlib.Path(data_dir).exists(): pathlib.Path(data_dir).mkdir(parents=True, exist_ok=True) - if not pathlib.Path(db_filename).exists(): - print(f"Creating {db_filename} as cache.") + # Check for permission to read/write + if pathlib.Path(db_filename).exists(): + # Check file is readable + if not os.access(db_filename, os.R_OK): + print( + f"Permission Error reading {db_filename}" + "Please specify accessible --data-dir." + ) + sys.exit(1) + else: + # Check directory is writeable + if os.access(data_dir, os.W_OK): + print(f"Creating {db_filename} as cache.") + else: + print( + f"Directory {data_dir} is not writeable." + "Please specify accessible --data-dir." + ) + sys.exit(1) # Open the database for read/write file_uri = f"file:{db_filename}" diff --git a/pyard/misc.py b/pyard/misc.py index 4b4302f..ae988f3 100644 --- a/pyard/misc.py +++ b/pyard/misc.py @@ -19,6 +19,7 @@ # > http://www.fsf.org/licensing/licenses/lgpl.html # > http://www.opensource.org/licenses/lgpl-license.php # +import os import pathlib import tempfile from typing import List @@ -142,7 +143,8 @@ def get_imgt_version(imgt_version): def get_default_db_directory(): - return pathlib.Path(tempfile.gettempdir()) / "pyard" + username = os.getlogin() + return pathlib.Path(tempfile.gettempdir()) / f"pyard-{username}" def validate_reduction_type(ars_type):