App.__find_dir() Support --topdir-format make:XXX #21

Merged
Jan Lindemann merged 1 commit from jan/feature/20260617-app-find-dir-support-topdir-format-make-xxx into master 2026-06-17 19:02:49 +02:00 AGit

View file

@ -130,7 +130,17 @@ class App(Base):
pretty: bool = True,
) -> str | None:
def format_pd(name: str, pd: str, pretty: bool):
def __format_relpath(path: str):
if path.startswith('./'):
return path[2:]
if path.endswith('/.'):
return path[:-2]
return path
def __relpath(target: str, base: str):
return __format_relpath(os.path.relpath(target, base))
def __format_pd(name: str, pd: str, pretty: bool):
if not pretty:
return pd
if self.__topdir_fmt == 'absolute':
@ -138,7 +148,11 @@ class App(Base):
if self.__topdir_fmt == 'unaltered':
return pd
if self.__topdir_fmt == 'relative':
return os.path.relpath(pd, self.__pretty_topdir)
return __relpath(pd, self.__topdir)
if self.__topdir_fmt.startswith('make:'):
relpath = __relpath(pd, self.__topdir)
var = self.__topdir_fmt.split(':')[1]
return __format_relpath(f'$({var})/{relpath}')
if name == self.__top_name:
return self.__pretty_topdir
raise NotImplementedError(
@ -149,11 +163,11 @@ class App(Base):
if pd is None:
return None
if not search_subdirs and not search_absdirs:
return format_pd(name, pd, pretty)
return __format_pd(name, pd, pretty)
for sd in search_subdirs:
path = pd + '/' + sd
if os.path.isdir(path):
ret = format_pd(name, pd, pretty)
ret = __format_pd(name, pd, pretty)
if sd and sd[0] != '/':
if ret == '.':
ret = ''