diff --git a/src/git_flow/__init__.py b/src/git_flow/__init__.py index 454bea0..049ad89 100644 --- a/src/git_flow/__init__.py +++ b/src/git_flow/__init__.py @@ -21,6 +21,9 @@ COMMIT_TYPES = [ "wip", ] +WIP_BRANCH_PREFIX = "wip/" +TRASH_BRANCH_PREFIX = "trash/" + # Commits con estos valores incrementan el componente correspondiente SEMVER_MAJOR = 3 SEMVER_MINOR = 2 diff --git a/src/git_flow/command/branch.py b/src/git_flow/command/branch.py index c5f72c1..73d1818 100644 --- a/src/git_flow/command/branch.py +++ b/src/git_flow/command/branch.py @@ -1,5 +1,5 @@ from argparse import ArgumentParser, Namespace -from git_flow import COLOR_WHITE_BOLD, COLOR_GREEN, COLOR_RED, COLOR_RESET, GitFlowError +from git_flow import COLOR_WHITE_BOLD, COLOR_GREEN, COLOR_RED, COLOR_RESET, TRASH_BRANCH_PREFIX, WIP_BRANCH_PREFIX, GitFlowError from git_flow.command.base import Command from git_flow.git import Git @@ -18,7 +18,25 @@ class BranchCommand(Command): parser.add_argument( "environment", nargs="?", - help="Entorno de las ramas a listar. Puede ser vacio para listar ramas de todos los entornos, un entorno válido, o 'trash' para listar las ramas eliminadas.", + help="Entorno de las ramas a listar. Por defecto, es el entorno actual.", + ) + + parser.add_argument( + "--trash", + action="store_true", + help=f"Listar ramas en la 'papelera de reciclaje' (ramas que empiezan con '{TRASH_BRANCH_PREFIX}')" + ) + + parser.add_argument( + "--wip", + action="store_true", + help=f"Listar ramas 'en progreso' (ramas que empiezan con '{WIP_BRANCH_PREFIX}')" + ) + + parser.add_argument( + "--all", + action="store_true", + help=f"Listar ramas de todos los entornos" ) return parser @@ -28,20 +46,26 @@ class BranchCommand(Command): self.current_branch = Git.get_current_branch() self.environments = self.flowconfig["flow.branches"].split(",") + (current_environment, _) = self.get_branch_env_and_type(self.current_branch) - if args.environment is None: + if args.trash: + self.show_branches(TRASH_BRANCH_PREFIX) + elif args.wip: + self.show_branches(WIP_BRANCH_PREFIX) + elif args.all: self.show_envs() self.show_all_branches() + elif args.environment is None: + self.show_envs() + self.show_env_branches(current_environment) elif args.environment in self.environments: self.show_envs() self.show_env_branches(args.environment) - elif args.environment == "trash": - self.show_trash_branches() else: raise GitFlowError(f"'{args.environment}' no es un entorno válido.") - def show_trash_branches(self): - branches = self.get_trash_branches() + def show_branches(self, prefix: str): + branches = self.get_branches(prefix) if not branches: print("No hay ramas a mostrar.") @@ -51,14 +75,14 @@ class BranchCommand(Command): prefix = (COLOR_RED + "*") if branch == self.current_branch else " " print(prefix + " " + branch + COLOR_RESET) - def get_trash_branches(self): - return Git("for-each-ref", "refs/heads/trash/", format=BRANCH_FORMAT).lines() + def get_branches(self, prefix: str): + return Git("for-each-ref", "refs/heads/" + prefix, format=BRANCH_FORMAT).lines() def show_all_branches(self): for environment in self.environments: self.show_env_branches(environment, len(self.environments) > 1) - trash = len(self.get_trash_branches()) + trash = len(self.get_branches(TRASH_BRANCH_PREFIX)) if trash: print() @@ -75,7 +99,7 @@ class BranchCommand(Command): is_first_env = environment == self.environments[0] pattern = "refs/heads/" if is_first_env else "refs/heads/release/" + environment + "/" pattern += "*/*" - exclude = ["refs/heads/trash/", "refs/heads/release/"] if is_first_env else [] + exclude = ["refs/heads/" + TRASH_BRANCH_PREFIX, "refs/heads/release/"] if is_first_env else [] branches = Git("for-each-ref", pattern, exclude=exclude, format=BRANCH_FORMAT).lines() print(COLOR_WHITE_BOLD + (environment if show_env else "Ramas") + COLOR_RESET) diff --git a/src/git_flow/command/commit.py b/src/git_flow/command/commit.py index 2966fe3..73c1fdd 100644 --- a/src/git_flow/command/commit.py +++ b/src/git_flow/command/commit.py @@ -1,6 +1,6 @@ from argparse import Namespace from datetime import datetime -from git_flow import COMMIT_TYPES, GitFlowError +from git_flow import COMMIT_TYPES, TRASH_BRANCH_PREFIX, WIP_BRANCH_PREFIX, GitFlowError from git_flow.command.base import Command from git_flow.git import Git @@ -31,8 +31,8 @@ class CommitCommand(Command): ) message = commit_type + ": " + commit_message - if branch.startswith("wip/"): - original_branch = branch.removeprefix("wip/") + if branch.startswith(WIP_BRANCH_PREFIX): + original_branch = branch.removeprefix(WIP_BRANCH_PREFIX) Git("commit", m=message).exec(print="Creando commit en rama WIP") if commit_type != "wip": @@ -40,10 +40,10 @@ class CommitCommand(Command): Git("switch", original_branch).exec(print="Volviendo a rama original") Git("merge", branch, squash=True).exec(print="Squasheando commits WIP en uno solo") Git("commit", m=message).exec(print="Creando commit final de rama WIP") - Git("branch", branch, "trash/" + branch + "/" + suffix, move=True).exec(print="Backup de rama WIP") + Git("branch", branch, TRASH_BRANCH_PREFIX + branch + "/" + suffix, move=True).exec(print="Backup de rama WIP") else: if commit_type == "wip": - Git("switch", "wip/" + branch, create=True).exec(print="Creando nueva rama WIP") + Git("switch", WIP_BRANCH_PREFIX + branch, create=True).exec(print="Creando nueva rama WIP") Git("commit", m=message).exec(print="Creando commit") diff --git a/src/git_flow/command/new.py b/src/git_flow/command/new.py index 2f142b5..4ed6233 100644 --- a/src/git_flow/command/new.py +++ b/src/git_flow/command/new.py @@ -44,7 +44,7 @@ class NewCommand(Command): persistent=True, ) - ticket = self.prompt("[Opcional] Ingrese el ID del ticket (por ejemplo: ABC-123 o #123):") + ticket = self.prompt("[Opcional] Ingrese el ID del ticket (por ejemplo ABC-123 o #123)") ticket = ticket[1:] if ticket.startswith("#") else ticket keywords = ticket + ' ' + keywords keywords = filter(lambda k: len(k) > 0, keywords.split(" "))