| """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 [], [] | |