Skip to content

Commit

Permalink
support custom meta_dir location
Browse files Browse the repository at this point in the history
  • Loading branch information
PhilippvK committed Apr 25, 2024
1 parent 84ad68c commit 80f9854
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 17 deletions.
31 changes: 27 additions & 4 deletions seal5/flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import glob
import tarfile
from pathlib import Path
from typing import Optional, List, Dict, Tuple
from typing import Optional, List, Dict, Tuple, Union

import git

Expand Down Expand Up @@ -67,6 +67,21 @@ def handle_directory(directory: Optional[Path]):
return path


def handle_meta_dir(meta_dir: Optional[Union[str, Path]], directory: Path, name: str):
# TODO: handle environment vars
if meta_dir is None:
meta_dir = "default"
if meta_dir == "default":
meta_dir = directory / ".seal5"
elif meta_dir == "user":
# config_dir = get_seal5_user_config_dir()
raise NotImplementedError("store meta dirs in .config/seal5/meta")
if isinstance(meta_dir, str):
meta_dir = Path(meta_dir)
# assert meta_dir.parent.is_dir()
return meta_dir


def create_seal5_directories(path: Path, directories: list):
logger.debug("Creating Seal5 directories")
if not isinstance(path, Path):
Expand All @@ -85,14 +100,17 @@ def add_test_cfg(tests_dir: Path):


class Seal5Flow:
def __init__(self, directory: Optional[Path] = None, name: str = "default"):
def __init__(
self, directory: Optional[Path] = None, meta_dir: Optional[Union[str, Path]] = None, name: str = "default"
):
self.directory: Path = handle_directory(directory)
self.meta_dir: Path = handle_meta_dir(meta_dir, directory, name)
self.name: str = name
self.state: Seal5State = Seal5State.UNKNOWN
self.passes: List[Seal5Pass] = [] # TODO: implement PassManager
self.repo: Optional[git.Repo] = git.Repo(self.directory) if self.directory.is_dir() else None
self.check()
self.settings = Seal5Settings.from_dict(DEFAULT_SETTINGS)
self.settings = Seal5Settings.from_dict({"meta_dir": self.meta_dir, **DEFAULT_SETTINGS})
# self.settings: Seal5Settings = Seal5Settings(directory=self.directory)
self.settings.directory = str(self.directory)
if self.settings.settings_file.is_file():
Expand Down Expand Up @@ -235,7 +253,12 @@ def initialize(
else:
if force:
self.repo, sha, version_info = llvm.clone_llvm_repo(
self.directory, clone_url, ref=clone_ref, refresh=True, label=self.name, git_settings=self.settings.git
self.directory,
clone_url,
ref=clone_ref,
refresh=True,
label=self.name,
git_settings=self.settings.git,
)
if self.settings.meta_dir.is_dir():
if force is False and not utils.ask_user(
Expand Down
27 changes: 14 additions & 13 deletions seal5/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,7 @@ class ToolsSettings(YAMLSettings):
@dataclass
class Seal5Settings(YAMLSettings):
directory: Optional[str] = None
meta_dir: Optional[str] = None
logging: Optional[LoggingSettings] = None
filter: Optional[FilterSettings] = None
llvm: Optional[LLVMSettings] = None
Expand Down Expand Up @@ -576,52 +577,52 @@ def model_names(self):
return [Path(path).stem for path in self.inputs]

@property
def meta_dir(self):
return Path(self.directory) / ".seal5"
def _meta_dir(self):
return Path(self.meta_dir)

@property
def settings_file(self):
return self.meta_dir / "settings.yml"
return self._meta_dir / "settings.yml"

@property
def deps_dir(self):
return self.meta_dir / "deps"
return self._meta_dir / "deps"

@property
def build_dir(self):
return self.meta_dir / "build"
return self._meta_dir / "build"

@property
def install_dir(self):
return self.meta_dir / "install"
return self._meta_dir / "install"

@property
def logs_dir(self):
return self.meta_dir / "logs"
return self._meta_dir / "logs"

@property
def models_dir(self):
return self.meta_dir / "models"
return self._meta_dir / "models"

@property
def inputs_dir(self):
return self.meta_dir / "inputs"
return self._meta_dir / "inputs"

@property
def temp_dir(self):
return self.meta_dir / "temp"
return self._meta_dir / "temp"

@property
def gen_dir(self):
return self.meta_dir / "gen"
return self._meta_dir / "gen"

@property
def tests_dir(self):
return self.meta_dir / "tests"
return self._meta_dir / "tests"

@property
def patches_dir(self): # TODO: maybe merge with gen_dir
return self.meta_dir / "patches"
return self._meta_dir / "patches"

@property
def log_file_path(self):
Expand Down

0 comments on commit 80f9854

Please sign in to comment.