1
0
Fork 0
mirror of https://git.sr.ht/~kivikakk/niar synced 2024-12-22 12:52:25 +00:00

project: add NIAR_WORKING_DIRECTORY support.

This commit is contained in:
Asherah Connor 2024-08-08 09:49:33 +03:00
parent 96df013632
commit bf3738f777
2 changed files with 20 additions and 10 deletions

View file

@ -2,6 +2,10 @@
## 0.1.3 (unreleased)
New:
* project: `NIAR_WORKING_DIRECTORY` can be used to override the origin.
## 0.1.2
New:

View file

@ -1,3 +1,4 @@
import os
import sys
from pathlib import Path
from typing import Optional
@ -100,16 +101,21 @@ class Project:
]
def __init_subclass__(cls):
# We expect to be called from project-root/module/__init.py__ or similar;
# cls.origin is project-root. Keep going up until we find pyproject.toml.
origin = Path(sys._getframe(1).f_code.co_filename).absolute().parent
while True:
if (origin / "pyproject.toml").is_file():
cls.origin = origin
break
if not any(origin.parents):
assert False, "could not find pyproject.toml"
origin = origin.parent
if origin := os.getenv("NIAR_WORKING_DIRECTORY"):
cls.origin = Path(origin).absolute()
else:
# We expect to be called from project-root/module/__init.py__ or similar;
# cls.origin is project-root. Keep going up until we find pyproject.toml.
origin = Path(sys._getframe(1).f_code.co_filename).absolute().parent
while True:
if (origin / "pyproject.toml").is_file():
cls.origin = origin
break
if not any(origin.parents):
assert False, "could not find pyproject.toml"
origin = origin.parent
os.chdir(cls.origin)
extras = cls.__dict__.keys() - {"__module__", "__doc__", "origin"}
for prop in cls.PROPS: