- Writing custom git flow scripts - finishing up without extensive testing

This commit is contained in:
Josako
2025-12-11 09:47:19 +01:00
parent fe9fc047ff
commit 2c8347c91b
8 changed files with 389 additions and 24 deletions

View File

@@ -1,6 +1,6 @@
from __future__ import annotations
from ..core import config, git_api, output
from ..core import config, git_api, hooks, output
def _feature_branch_name(name: str) -> str:
@@ -20,6 +20,15 @@ def handle_feature_start(args) -> int:
output.info(f"Aanmaken van feature branch '{branch_name}' vanaf '{cfg.develop_branch}'")
git_api.create_branch(branch_name, cfg.develop_branch)
output.success(f"Feature branch '{branch_name}' is aangemaakt en gecheckt out.")
# Hooks na succesvol aanmaken van een feature branch
hooks.run_hooks(
"feature_start",
{
"branch": branch_name,
"base_branch": cfg.develop_branch,
},
)
return 0
except git_api.GitError as exc:
output.error(str(exc))
@@ -36,11 +45,26 @@ def handle_feature_finish(args) -> int:
if name is None:
current = git_api.get_current_branch()
if not current.startswith(cfg.feature_prefix):
if current.startswith(cfg.feature_prefix):
feature_branch = current
else:
# Geen naam en we zitten niet op een feature-branch: toon een lijst
# met beschikbare feature-branches om de gebruiker te helpen kiezen.
branches = git_api.list_local_branches_with_prefix(cfg.feature_prefix)
if not branches:
raise git_api.GitError(
"Er zijn geen lokale feature branches gevonden. "
"Maak eerst een feature branch aan of geef een naam op."
)
output.heading("Beschikbare feature branches")
for b in branches:
output.plain(f"- {b}")
raise git_api.GitError(
"Je zit niet op een feature branch. Geef de feature-naam expliciet door (zonder prefix)."
"Je zit niet op een feature branch. Kies een van de bovenstaande namen "
"en voer het commando opnieuw uit, bv.: gitflow feature finish <naam-zonder-prefix>."
)
feature_branch = current
else:
feature_branch = _feature_branch_name(name)
@@ -64,6 +88,23 @@ def handle_feature_finish(args) -> int:
) from exc
output.success(f"Feature branch '{feature_branch}' is gemerged naar '{cfg.develop_branch}'.")
# Optionele cleanup van de feature branch
if cfg.delete_feature_after_finish:
output.info(f"Opruimen van lokale feature branch '{feature_branch}'")
try:
git_api._run_git(["branch", "-d", feature_branch]) # type: ignore[attr-defined]
except git_api.GitError as exc:
output.warning(f"Kon feature branch '{feature_branch}' niet verwijderen: {exc}")
# Hooks na succesvolle feature-finish
hooks.run_hooks(
"feature_finish",
{
"branch": feature_branch,
"base_branch": cfg.develop_branch,
},
)
return 0
except git_api.GitError as exc:
output.error(str(exc))