Skip to content

Commit

Permalink
added tool to increment the tool version supported by the package
Browse files Browse the repository at this point in the history
  • Loading branch information
tclose committed Mar 22, 2024
1 parent c1cfe3b commit 9392a5a
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 3 deletions.
File renamed without changes.
69 changes: 69 additions & 0 deletions tools/increment_tool_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/usr/bin/env python3
from pathlib import Path
import inspect
from importlib import import_module
import click
from looseversion import LooseVersion
from pydra.engine.core import TaskBase


PKG_DIR = Path(__file__).parent.parent
TASKS_DIR = PKG_DIR / "pydra" / "tasks" / "ants"
VERSION_GRANULARITY = (
2 # Number of version parts to include: 1 - major, 2 - minor, 3 - micro
)


@click.command(
help="""Increment the latest version or create a new sub-package for interfaces for
a new release of AFNI depending on whether one already exists or not.
NEW_VERSION the version of AFNI to create a new sub-package for
"""
)
@click.argument("new_version", type=LooseVersion)
def increment_tool_version(new_version: LooseVersion):

# Get the name of the sub-package, e.g. "v2_5"
new_subpkg_name = "_".join(str(p) for p in new_version.version[:VERSION_GRANULARITY]) # type: ignore
if not new_subpkg_name.startswith("v"):
new_subpkg_name = "v" + new_subpkg_name
sub_pkg_dir = TASKS_DIR / new_subpkg_name
if not sub_pkg_dir.exists():

prev_version = sorted(
(
p.name
for p in TASKS_DIR.iterdir()
if p.is_dir() and p.name.startswith("v")
),
key=lambda x: LooseVersion(".".join(x.split("_"))).version,
)[-1]
prev_ver_mod = import_module(f"pydra.tasks.ants.{prev_version}")

mod_attrs = [getattr(prev_ver_mod, a) for a in dir(prev_ver_mod)]
task_classes = [
a for a in mod_attrs if inspect.isclass(a) and issubclass(a, TaskBase)
]

code_str = (
f"from pydra.tasks.ants import {prev_version}\n"
"from . import _tool_version\n"
)

for task_cls in task_classes:
code_str += (
f"\n\nclass {task_cls.__name__}({prev_version}.{task_cls.__name__}):\n"
" TOOL_VERSION = _tool_version.TOOL_VERSION\n"
)

sub_pkg_dir.mkdir(exist_ok=True)
with open(sub_pkg_dir / "__init__.py", "w") as f:
f.write(code_str)

with open(sub_pkg_dir / "_tool_version.py", "w") as f:
f.write(f'TOOL_VERSION = "{new_version}"\n')


if __name__ == "__main__":
increment_tool_version()
5 changes: 2 additions & 3 deletions tools/rename_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ def load_gitignore(repo):

cmd, new_name, *_ = sys.argv

for root, dirs, files in os.walk(PACKAGE_ROOT):
for root_, dirs, files in os.walk(PACKAGE_ROOT):
ignore = load_gitignore(PACKAGE_ROOT).search
for d in [d for d in dirs if ignore(f"{d}/")]:
dirs.remove(d)
for f in [f for f in files if ignore(f)]:
files.remove(f)

root = Path(root)
root = Path(root_)
for src in list(dirs):
if "CHANGEME" in src:
dst = src.replace("CHANGEME", new_name)
Expand All @@ -40,7 +40,6 @@ def load_gitignore(repo):
dirs.remove(src)
dirs.append(dst)
for fname in files:
f = root / fname
text = Path.read_text(root / fname)
if "CHANGEME" in text:
print(f"Rewriting: {root / fname}")
Expand Down
3 changes: 3 additions & 0 deletions tools/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
click >= 8.1.3
looseversion >= 1.1
pydra >= 0.23

0 comments on commit 9392a5a

Please sign in to comment.