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.database import Database
|
||||||
from pilgrim.service.servicemanager import ServiceManager
|
from pilgrim.service.servicemanager import ServiceManager
|
||||||
from pilgrim.ui.ui import UIApp
|
from pilgrim.ui.ui import UIApp
|
||||||
|
from pathlib import Path
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
class Application:
|
class Application:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
self.config_dir = self._ensure_config_directory()
|
||||||
self.database = Database()
|
self.database = Database()
|
||||||
session = self.database.session()
|
session = self.database.session()
|
||||||
session_manager = ServiceManager()
|
session_manager = ServiceManager()
|
||||||
session_manager.set_session(session)
|
session_manager.set_session(session)
|
||||||
self.ui = UIApp(session_manager)
|
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):
|
def run(self):
|
||||||
self.database.create()
|
self.database.create()
|
||||||
self.ui.run()
|
self.ui.run()
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,42 @@
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
from pathlib import Path
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
Base = declarative_base()
|
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:
|
class Database:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
db_path = get_database_path()
|
||||||
self.engine = create_engine(
|
self.engine = create_engine(
|
||||||
"sqlite:///database.db",
|
f"sqlite:///{db_path}",
|
||||||
echo=False,
|
echo=False,
|
||||||
connect_args={"check_same_thread": False},
|
connect_args={"check_same_thread": False},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue