Skip to content

Commit 129f740

Browse files
committed
[feat] Add unregister command
1 parent a376bed commit 129f740

File tree

4 files changed

+50
-2
lines changed

4 files changed

+50
-2
lines changed

urartu/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.0.13
1+
2.0.14

urartu/commands/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from .launch import Launch
77
from .register import Register
8+
from .unregister import Unregister
89

910

1011
def parse_args() -> Tuple[argparse.ArgumentParser, argparse.Namespace]:

urartu/commands/unregister.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import argparse
2+
import logging
3+
import re
4+
5+
from .command import Command
6+
from ..utils.registry import Registry
7+
8+
9+
@Command.register("unregister")
10+
class Unregister(Command):
11+
"""
12+
Unregisters/deletes a module by given name.
13+
"""
14+
15+
def add_subparser(self, parser: argparse._SubParsersAction) -> argparse.ArgumentParser:
16+
description = """urartu: unregister"""
17+
subparser = parser.add_parser(
18+
self.name,
19+
description=description,
20+
help="Unregister a project from the registry",
21+
)
22+
23+
subparser.add_argument("--name", type=str, help="name of the project/module")
24+
25+
subparser.set_defaults(fire=self._unregister)
26+
27+
return subparser
28+
29+
def _unregister(self, args: argparse.Namespace):
30+
module_name = re.sub(r"[^A-Za-z0-9]+", "", args.name)
31+
32+
if Registry.remove_entry(module_name):
33+
logging.info(f"Module '{module_name}' is unregistered successfully")

urartu/utils/registry.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@
88
class Registry:
99
REGISTRY_FILE_PATH = registry_file_path
1010

11+
@staticmethod
12+
def remove_entry(module_name):
13+
file_content = Registry.load_file_content()
14+
15+
if module_name not in file_content:
16+
raise ValueError(f"Module with name '{module_name}' does not exists in the registery")
17+
else:
18+
file_content.pop(module_name)
19+
20+
with open(Registry.REGISTRY_FILE_PATH, "w") as file:
21+
yaml.dump(file_content, file)
22+
23+
return True
24+
1125
@staticmethod
1226
def add_entry(module_name, module_root_dir):
1327
file_content = Registry.load_file_content()
@@ -36,7 +50,7 @@ def load_file_content():
3650
else:
3751
with open(Registry.REGISTRY_FILE_PATH, "r") as file:
3852
file_content = yaml.safe_load(file)
39-
53+
4054
if file_content is None:
4155
return {}
4256
# raise RuntimeError(

0 commit comments

Comments
 (0)