CodeMind / src /diff_analyzer.py
devjas1
feat: Inital commit from recovered state
80b95e8
raw
history blame
1.18 kB
"""Extract staged diffs from Git -> Gives raw material for commit msg generation"""
import subprocess
def get_staged_diff_chunks():
"""
Retrieves the list of staged files and their corresponding diff chunks.
Returns:
tuple: A tuple containing a list of staged file names and a list of diff chunks.
"""
try:
result = subprocess.run(
["git", "diff", "--cached"], capture_output=True, text=True, check=True
)
diff = result.stdout
chunks = diff.split("\n@@") if diff else [] # Crude chunking
file_list_result = subprocess.run(
["git", "diff", "--name-only", "--cached"],
capture_output=True,
text=True,
check=True,
)
file_list = (
file_list_result.stdout.splitlines() if file_list_result.stdout else []
)
return file_list, chunks
except FileNotFoundError:
print("Error: Git is not installed or not found in PATH.")
return [], []
except subprocess.CalledProcessError as e:
print(f"Error running git command: {e}")
return [], []