Skip to content

Commit

Permalink
[feat] Add unregister command
Browse files Browse the repository at this point in the history
  • Loading branch information
tamohannes committed Jul 2, 2024
1 parent a376bed commit 129f740
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 2 deletions.
2 changes: 1 addition & 1 deletion urartu/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.13
2.0.14
1 change: 1 addition & 0 deletions urartu/commands/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from .launch import Launch
from .register import Register
from .unregister import Unregister


def parse_args() -> Tuple[argparse.ArgumentParser, argparse.Namespace]:
Expand Down
33 changes: 33 additions & 0 deletions urartu/commands/unregister.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import argparse
import logging
import re

from .command import Command
from ..utils.registry import Registry


@Command.register("unregister")
class Unregister(Command):
"""
Unregisters/deletes a module by given name.
"""

def add_subparser(self, parser: argparse._SubParsersAction) -> argparse.ArgumentParser:
description = """urartu: unregister"""
subparser = parser.add_parser(
self.name,
description=description,
help="Unregister a project from the registry",
)

subparser.add_argument("--name", type=str, help="name of the project/module")

subparser.set_defaults(fire=self._unregister)

return subparser

def _unregister(self, args: argparse.Namespace):
module_name = re.sub(r"[^A-Za-z0-9]+", "", args.name)

if Registry.remove_entry(module_name):
logging.info(f"Module '{module_name}' is unregistered successfully")
16 changes: 15 additions & 1 deletion urartu/utils/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,20 @@
class Registry:
REGISTRY_FILE_PATH = registry_file_path

@staticmethod
def remove_entry(module_name):
file_content = Registry.load_file_content()

if module_name not in file_content:
raise ValueError(f"Module with name '{module_name}' does not exists in the registery")
else:
file_content.pop(module_name)

with open(Registry.REGISTRY_FILE_PATH, "w") as file:
yaml.dump(file_content, file)

return True

@staticmethod
def add_entry(module_name, module_root_dir):
file_content = Registry.load_file_content()
Expand Down Expand Up @@ -36,7 +50,7 @@ def load_file_content():
else:
with open(Registry.REGISTRY_FILE_PATH, "r") as file:
file_content = yaml.safe_load(file)

if file_content is None:
return {}
# raise RuntimeError(
Expand Down

0 comments on commit 129f740

Please sign in to comment.