mirror of https://github.com/gmbrax/Pilgrim.git
				
				
				
			Changed the base directory where the data generated by the program to be at the home directory and also added a check to ensure the creation of the program directory
This commit is contained in:
		
							parent
							
								
									394f813f6f
								
							
						
					
					
						commit
						d114357d50
					
				|  | @ -1,16 +1,47 @@ | |||
| from pilgrim.database import Database | ||||
| from pilgrim.service.servicemanager import ServiceManager | ||||
| from pilgrim.ui.ui import UIApp | ||||
| from pathlib import Path | ||||
| import os | ||||
| import sys | ||||
| 
 | ||||
| 
 | ||||
| class Application: | ||||
|     def __init__(self): | ||||
|         self.config_dir = self._ensure_config_directory() | ||||
|         self.database = Database() | ||||
|         session = self.database.session() | ||||
|         session_manager = ServiceManager() | ||||
|         session_manager.set_session(session) | ||||
|         self.ui = UIApp(session_manager) | ||||
| 
 | ||||
|     def _ensure_config_directory(self) -> Path: | ||||
|         """ | ||||
|         Ensures the ~/.pilgrim directory exists and has the correct permissions. | ||||
|         Creates it if it doesn't exist. | ||||
|         Returns the Path object for the config directory. | ||||
|         """ | ||||
|         home = Path.home() | ||||
|         config_dir = home / ".pilgrim" | ||||
|          | ||||
|         try: | ||||
|             # Create directory if it doesn't exist | ||||
|             config_dir.mkdir(exist_ok=True) | ||||
|              | ||||
|             # Ensure correct permissions (rwx for user only) | ||||
|             os.chmod(config_dir, 0o700) | ||||
|              | ||||
|             # Create an empty .gitignore if it doesn't exist | ||||
|             gitignore = config_dir / ".gitignore" | ||||
|             if not gitignore.exists(): | ||||
|                 gitignore.write_text("*\n") | ||||
|              | ||||
|             return config_dir | ||||
|              | ||||
|         except Exception as e: | ||||
|             print(f"Error setting up Pilgrim configuration directory: {str(e)}", file=sys.stderr) | ||||
|             sys.exit(1) | ||||
| 
 | ||||
|     def run(self): | ||||
|         self.database.create() | ||||
|         self.ui.run() | ||||
|  |  | |||
|  | @ -1,14 +1,42 @@ | |||
| from sqlalchemy import create_engine | ||||
| from sqlalchemy.ext.declarative import declarative_base | ||||
| from sqlalchemy.orm import sessionmaker | ||||
| from pathlib import Path | ||||
| import os | ||||
| import shutil | ||||
| 
 | ||||
| Base = declarative_base() | ||||
| 
 | ||||
| def get_database_path() -> Path: | ||||
|     """ | ||||
|     Get the database file path following XDG Base Directory specification. | ||||
|     Creates the directory if it doesn't exist. | ||||
|     """ | ||||
|     # Get home directory | ||||
|     home = Path.home() | ||||
|      | ||||
|     # Create .pilgrim directory if it doesn't exist | ||||
|     pilgrim_dir = home / ".pilgrim" | ||||
|     pilgrim_dir.mkdir(exist_ok=True) | ||||
|      | ||||
|     # Database file path | ||||
|     db_path = pilgrim_dir / "database.db" | ||||
|      | ||||
|     # If database doesn't exist in new location but exists in current directory, | ||||
|     # migrate it | ||||
|     if not db_path.exists(): | ||||
|         current_db = Path("database.db") | ||||
|         if current_db.exists(): | ||||
|             shutil.copy2(current_db, db_path) | ||||
|             print(f"Database migrated from {current_db} to {db_path}") | ||||
|      | ||||
|     return db_path | ||||
| 
 | ||||
| class Database: | ||||
|     def __init__(self): | ||||
|         db_path = get_database_path() | ||||
|         self.engine = create_engine( | ||||
|             "sqlite:///database.db", | ||||
|             f"sqlite:///{db_path}", | ||||
|             echo=False, | ||||
|             connect_args={"check_same_thread": False}, | ||||
|         ) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue