feature: add branch types, commit types, support for breaking changes

This commit is contained in:
jt
2026-09-26 18:12:14 -03:00
parent 6e760f7866
commit e9d88b8113
4 changed files with 75 additions and 15 deletions
+27 -3
View File
@@ -9,6 +9,7 @@ from rich.table import Table
from git_flow import (
BRANCH_TYPES,
COMMIT_TYPE_INCREMENT,
COMMIT_TYPES,
FLOWCONFIG_FILENAME,
FLOWCONFIG_VERSION,
@@ -155,8 +156,30 @@ def is_valid_ticket(ticket: str) -> bool:
)
CUSTOM_COMMIT_TYPE_OPTION = "otro"
def get_commit_message(commit_types: list[str] = COMMIT_TYPES) -> str:
commit_type = io_choice("Tipo de commit", commit_types)
commit_type = io_choice("Tipo de commit", commit_types + [CUSTOM_COMMIT_TYPE_OPTION])
if commit_type == CUSTOM_COMMIT_TYPE_OPTION:
commit_type = io_prompt(
"Tipo de commit personalizado",
strip=True,
validator=lambda s: re.fullmatch(r"\w+", s.strip()) is not None,
instruction="letras, números o _",
)
if commit_type not in COMMIT_TYPE_INCREMENT:
io_warning(
f"El tipo '{commit_type}' no produce un salto de versión, "
"salvo que se marque como breaking change."
)
# Los commits WIP se squashean en uno final, que es el que puede marcarse como breaking
if commit_type != "wip" and io_confirm("¿Es un breaking change?", False):
commit_type += "!"
commit_message = io_prompt(
"Mensaje de commit",
validator=lambda s: 0 < len(s) and len(s) < 100,
@@ -166,7 +189,7 @@ def get_commit_message(commit_types: list[str] = COMMIT_TYPES) -> str:
# <tipo>[(alcance)][!]: <mensaje>, para no confundir "Merge pull request 'feature: ...'" con un tipo
COMMIT_SUBJECT_RE = re.compile(r"^(\w+)(?:\([^)]*\))?!?:\s*(.*)$")
COMMIT_SUBJECT_RE = re.compile(r"^(\w+)(?:\([^)]*\))?(!)?:\s*(.*)$")
def show_commits(title: str, revision_range: str):
@@ -188,7 +211,8 @@ def show_commits(title: str, revision_range: str):
for line in lines:
timestamp, subject = line.split("\t", 1)
match = COMMIT_SUBJECT_RE.match(subject)
commit_type, message = match.groups() if match else ("-", subject)
commit_type, breaking, message = match.groups() if match else ("-", None, subject)
commit_type += breaking or ""
table.add_row(format_time_ago(now - int(timestamp)), commit_type, message)
console.print(table)