From bf6dc52a1781ac6c0555ce1e877e84a7a18eab2d Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Wed, 13 Aug 2025 01:19:05 +0100 Subject: [PATCH] Move Git utilities to ``blurb._git`` --- src/blurb/_add.py | 3 ++- src/blurb/_git.py | 29 +++++++++++++++++++++++++++++ src/blurb/_release.py | 5 +++-- src/blurb/blurb.py | 26 +------------------------- 4 files changed, 35 insertions(+), 28 deletions(-) create mode 100644 src/blurb/_git.py diff --git a/src/blurb/_add.py b/src/blurb/_add.py index cad6efd..7487e8b 100644 --- a/src/blurb/_add.py +++ b/src/blurb/_add.py @@ -9,8 +9,9 @@ import tempfile from blurb._cli import subcommand,error,prompt +from blurb._git import flush_git_add_files, git_add_files from blurb._template import sections, template -from blurb.blurb import Blurbs, BlurbError, flush_git_add_files, git_add_files +from blurb.blurb import Blurbs, BlurbError TYPE_CHECKING = False if TYPE_CHECKING: diff --git a/src/blurb/_git.py b/src/blurb/_git.py new file mode 100644 index 0000000..3311e02 --- /dev/null +++ b/src/blurb/_git.py @@ -0,0 +1,29 @@ +import os +import subprocess + +git_add_files: list[str] = [] +git_rm_files: list[str] = [] + + +def flush_git_add_files() -> None: + if not git_add_files: + return + args = ('git', 'add', '--force', *git_add_files) + subprocess.run(args, check=True) + git_add_files.clear() + + +def flush_git_rm_files() -> None: + if not git_rm_files: + return + args = ('git', 'rm', '--quiet', '--force', *git_rm_files) + subprocess.run(args, check=False) + + # clean up + for path in git_rm_files: + try: + os.unlink(path) + except FileNotFoundError: + pass + + git_rm_files.clear() diff --git a/src/blurb/_release.py b/src/blurb/_release.py index 8128a40..8f5f708 100644 --- a/src/blurb/_release.py +++ b/src/blurb/_release.py @@ -5,8 +5,9 @@ import blurb.blurb from blurb._cli import error, subcommand -from blurb.blurb import (Blurbs, flush_git_add_files, flush_git_rm_files, - git_rm_files, git_add_files, glob_blurbs, nonceify) +from blurb._git import (flush_git_add_files, flush_git_rm_files, + git_rm_files, git_add_files) +from blurb.blurb import Blurbs, glob_blurbs, nonceify @subcommand diff --git a/src/blurb/blurb.py b/src/blurb/blurb.py index 803835d..3fff901 100755 --- a/src/blurb/blurb.py +++ b/src/blurb/blurb.py @@ -49,12 +49,12 @@ from pathlib import Path import re import shutil -import subprocess import sys import textwrap import time from blurb._cli import main, subcommand +from blurb._git import git_add_files, flush_git_add_files from blurb._template import ( next_filename_unsanitize_sections, sanitize_section, sanitize_section_legacy, sections, unsanitize_section, @@ -673,30 +673,6 @@ def print(*a, sep=" "): builtins.print(output, "is already up to date") -git_add_files = [] -def flush_git_add_files(): - if git_add_files: - subprocess.run(["git", "add", "--force", *git_add_files]).check_returncode() - git_add_files.clear() - -git_rm_files = [] -def flush_git_rm_files(): - if git_rm_files: - try: - subprocess.run(["git", "rm", "--quiet", "--force", *git_rm_files]).check_returncode() - except subprocess.CalledProcessError: - pass - - # clean up - for path in git_rm_files: - try: - os.unlink(path) - except FileNotFoundError: - pass - - git_rm_files.clear() - - @subcommand def populate(): """