flow
This commit is contained in:
37
core/paths.py
Normal file
37
core/paths.py
Normal file
@@ -0,0 +1,37 @@
|
||||
"""XDG-compliant path constants for DevFlow."""
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def _xdg(env_var: str, fallback: str) -> Path:
|
||||
return Path(os.environ.get(env_var, fallback))
|
||||
|
||||
|
||||
HOME = Path.home()
|
||||
|
||||
CONFIG_DIR = _xdg("XDG_CONFIG_HOME", str(HOME / ".config")) / "devflow"
|
||||
DATA_DIR = _xdg("XDG_DATA_HOME", str(HOME / ".local" / "share")) / "devflow"
|
||||
STATE_DIR = _xdg("XDG_STATE_HOME", str(HOME / ".local" / "state")) / "devflow"
|
||||
|
||||
MANIFEST_FILE = CONFIG_DIR / "manifest.yaml"
|
||||
CONFIG_FILE = CONFIG_DIR / "config"
|
||||
|
||||
DOTFILES_DIR = DATA_DIR / "dotfiles"
|
||||
PACKAGES_DIR = DATA_DIR / "packages"
|
||||
SCRATCH_DIR = DATA_DIR / "scratch"
|
||||
PROJECTS_DIR = HOME / "projects"
|
||||
|
||||
LINKED_STATE = STATE_DIR / "linked.json"
|
||||
INSTALLED_STATE = STATE_DIR / "installed.json"
|
||||
|
||||
# Self-hosted flow config paths (from dotfiles repo)
|
||||
DOTFILES_FLOW_CONFIG = DOTFILES_DIR / "flow" / ".config" / "flow"
|
||||
DOTFILES_MANIFEST = DOTFILES_FLOW_CONFIG / "manifest.yaml"
|
||||
DOTFILES_CONFIG = DOTFILES_FLOW_CONFIG / "config"
|
||||
|
||||
|
||||
def ensure_dirs() -> None:
|
||||
"""Create all required directories if they don't exist."""
|
||||
for d in (CONFIG_DIR, DATA_DIR, STATE_DIR, PACKAGES_DIR, SCRATCH_DIR):
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
Reference in New Issue
Block a user