Skip to content

Commit

Permalink
chore: rename what to gitlab_resource
Browse files Browse the repository at this point in the history
Naming a variable `what` makes it difficult to understand what it is
used for.

Rename it to `gitlab_resource` as that is what is being stored.

The Gitlab documentation talks about them being resources:
https://docs.gitlab.com/ee/api/api_resources.html

This will improve code readability.
  • Loading branch information
JohnVillalovos committed Jun 4, 2022
1 parent 6189437 commit c86e471
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 22 deletions.
14 changes: 8 additions & 6 deletions gitlab/cli.py
Expand Up @@ -91,14 +91,16 @@ def die(msg: str, e: Optional[Exception] = None) -> None:
sys.exit(1)


def what_to_cls(what: str, namespace: ModuleType) -> Type[RESTObject]:
def gitlab_resource_to_cls(
gitlab_resource: str, namespace: ModuleType
) -> Type[RESTObject]:
classes = CaseInsensitiveDict(namespace.__dict__)
lowercase_class = what.replace("-", "")
lowercase_class = gitlab_resource.replace("-", "")

return classes[lowercase_class]


def cls_to_what(cls: RESTObject) -> str:
def cls_to_gitlab_resource(cls: RESTObject) -> str:
dasherized_uppercase = camel_upperlower_regex.sub(r"\1-\2", cls.__name__)
dasherized_lowercase = camel_lowerupper_regex.sub(r"\1-\2", dasherized_uppercase)
return dasherized_lowercase.lower()
Expand Down Expand Up @@ -322,7 +324,7 @@ def main() -> None:
fields = [x.strip() for x in args.fields.split(",")]
debug = args.debug
action = args.whaction
what = args.what
gitlab_resource = args.gitlab_resource

args_dict = vars(args)
# Remove CLI behavior-related args
Expand All @@ -331,7 +333,7 @@ def main() -> None:
"config_file",
"verbose",
"debug",
"what",
"gitlab_resource",
"whaction",
"version",
"output",
Expand Down Expand Up @@ -359,4 +361,4 @@ def main() -> None:
if debug:
gl.enable_debug()

gitlab.v4.cli.run(gl, what, action, args_dict, verbose, output, fields)
gitlab.v4.cli.run(gl, gitlab_resource, action, args_dict, verbose, output, fields)
18 changes: 9 additions & 9 deletions gitlab/v4/cli.py
Expand Up @@ -29,13 +29,13 @@

class GitlabCLI:
def __init__(
self, gl: gitlab.Gitlab, what: str, action: str, args: Dict[str, str]
self, gl: gitlab.Gitlab, gitlab_resource: str, action: str, args: Dict[str, str]
) -> None:
self.cls: Type[gitlab.base.RESTObject] = cli.what_to_cls(
what, namespace=gitlab.v4.objects
self.cls: Type[gitlab.base.RESTObject] = cli.gitlab_resource_to_cls(
gitlab_resource, namespace=gitlab.v4.objects
)
self.cls_name = self.cls.__name__
self.what = what.replace("-", "_")
self.gitlab_resource = gitlab_resource.replace("-", "_")
self.action = action.lower()
self.gl = gl
self.args = args
Expand Down Expand Up @@ -81,7 +81,7 @@ def _process_from_parent_attrs(self) -> None:

def run(self) -> Any:
# Check for a method that matches object + action
method = f"do_{self.what}_{self.action}"
method = f"do_{self.gitlab_resource}_{self.action}"
if hasattr(self, method):
return getattr(self, method)()

Expand Down Expand Up @@ -333,7 +333,7 @@ def _populate_sub_parser_by_class(

def extend_parser(parser: argparse.ArgumentParser) -> argparse.ArgumentParser:
subparsers = parser.add_subparsers(
title="object", dest="what", help="Object to manipulate."
title="object", dest="gitlab_resource", help="Object to manipulate."
)
subparsers.required = True

Expand All @@ -347,7 +347,7 @@ def extend_parser(parser: argparse.ArgumentParser) -> argparse.ArgumentParser:
classes.add(cls._obj_cls)

for cls in sorted(classes, key=operator.attrgetter("__name__")):
arg_name = cli.cls_to_what(cls)
arg_name = cli.cls_to_gitlab_resource(cls)
object_group = subparsers.add_parser(arg_name)

object_subparsers = object_group.add_subparsers(
Expand Down Expand Up @@ -497,14 +497,14 @@ def display_list(

def run(
gl: gitlab.Gitlab,
what: str,
gitlab_resource: str,
action: str,
args: Dict[str, Any],
verbose: bool,
output: str,
fields: List[str],
) -> None:
g_cli = GitlabCLI(gl=gl, what=what, action=action, args=args)
g_cli = GitlabCLI(gl=gl, gitlab_resource=gitlab_resource, action=action, args=args)
data = g_cli.run()

printer: Union[JSONPrinter, LegacyPrinter, YAMLPrinter] = PRINTERS[output]()
Expand Down
14 changes: 7 additions & 7 deletions tests/unit/test_cli.py
Expand Up @@ -29,7 +29,7 @@


@pytest.mark.parametrize(
"what,expected_class",
"gitlab_resource,expected_class",
[
("class", "Class"),
("test-class", "TestClass"),
Expand All @@ -39,18 +39,18 @@
("ldap-group", "LDAPGroup"),
],
)
def test_what_to_cls(what, expected_class):
def test_gitlab_resource_to_cls(gitlab_resource, expected_class):
def _namespace():
pass

ExpectedClass = type(expected_class, (), {})
_namespace.__dict__[expected_class] = ExpectedClass

assert cli.what_to_cls(what, _namespace) == ExpectedClass
assert cli.gitlab_resource_to_cls(gitlab_resource, _namespace) == ExpectedClass


@pytest.mark.parametrize(
"class_name,expected_what",
"class_name,expected_gitlab_resource",
[
("Class", "class"),
("TestClass", "test-class"),
Expand All @@ -61,10 +61,10 @@ def _namespace():
("LDAPGroup", "ldap-group"),
],
)
def test_cls_to_what(class_name, expected_what):
def test_cls_to_gitlab_resource(class_name, expected_gitlab_resource):
TestClass = type(class_name, (), {})

assert cli.cls_to_what(TestClass) == expected_what
assert cli.cls_to_gitlab_resource(TestClass) == expected_gitlab_resource


@pytest.mark.parametrize(
Expand Down Expand Up @@ -125,7 +125,7 @@ def test_base_parser():
def test_v4_parse_args():
parser = cli._get_parser()
args = parser.parse_args(["project", "list"])
assert args.what == "project"
assert args.gitlab_resource == "project"
assert args.whaction == "list"


Expand Down

0 comments on commit c86e471

Please sign in to comment.