From 123a27d6b1d1c04408b3501431eecf34693db577 Mon Sep 17 00:00:00 2001
From: Gautam Peri <gautam@allspice.io>
Date: Wed, 12 Mar 2025 14:46:40 -0500
Subject: [PATCH] Minor error catching updates Pt 1

---
 push_to_allspice_unix.py    | 34 +++++++++++++++++++++++-----------
 push_to_allspice_windows.py | 16 ++++++----------
 2 files changed, 29 insertions(+), 21 deletions(-)

diff --git a/push_to_allspice_unix.py b/push_to_allspice_unix.py
index cee6975..8b5c2d9 100644
--- a/push_to_allspice_unix.py
+++ b/push_to_allspice_unix.py
@@ -36,7 +36,7 @@ def initialize_git_repo():
     else:
         git_init_output = os.popen("git init .").read().strip()
         print(add_indent(git_init_output, 15, '➖'))
-        
+
 ################################################################################
 def add_allspice_remote():
     print(add_indent("Adding AllSpice remote", 8, '➕'))
@@ -50,7 +50,7 @@ def add_allspice_remote():
 
 ################################################################################
 def fetch_from_allspice():
-    print(add_indent("Fetching from AllSpice remote", 8, '🔄'))        
+    print(add_indent("Fetching from AllSpice remote", 8, '🔄'))
     git_fetch_process = subprocess.Popen(['git fetch'], stdout = subprocess.PIPE, stderr = subprocess.PIPE, text = True, shell = True)
     std_out, std_err = git_fetch_process.communicate()
     if std_out or std_err:
@@ -100,6 +100,18 @@ def get_list_of_untracked_files():
         print(add_indent("None", 15, '🔹'))
     return untracked_files
 
+################################################################################
+def get_list_of_added_files_not_yet_committed():
+    print(add_indent("Added files for commit found:", 8, '▪️'))
+    git_changes_to_be_committed_output = os.popen("git diff --cached --name-only").read().strip()
+    added_files = git_changes_to_be_committed_output.split('\n') if git_changes_to_be_committed_output else []
+    if added_files:
+        for cur_file in added_files:
+            print(add_indent(str(cur_file), 15, '📄'))
+    else:
+        print(add_indent("None", 15, '🔹'))
+    return added_files
+
 ################################################################################
 def add_modified_or_untracked_files_for_commit():
     git_add_output = os.popen("git add .").read().strip()
@@ -121,7 +133,7 @@ def commit_changes(commit_message):
 
 ################################################################################
 def push_commit_to_allspice():
-    print(add_indent("Pushing to AllSpice on the develop branch...", 8, '📤'))
+    print(add_indent("Pushing changes to AllSpice on the develop branch...", 8, '📤'))
     git_push_process = subprocess.Popen(['git push'], stdout = subprocess.PIPE, stderr = subprocess.PIPE, text = True, shell = True)
     std_out, std_err = git_push_process.communicate()
     print(add_indent(std_err.strip(), 15, '➖'))
@@ -160,22 +172,22 @@ if __name__ == "__main__":
         modified_files = get_list_of_modified_files()
         # Get list of untracked files
         untracked_files = get_list_of_untracked_files()
-        # If there are any untracked or modified files, start pushing to AllSpice
+        # If there are any untracked or modified files, add them for commit
         if modified_files or untracked_files:
             # Add files to commit
             add_modified_or_untracked_files_for_commit()
+        # If there added files to be committed, prompt for a commit message and commit
+        # This step/check ensures that any previously halted commits are taken care of
+        added_files = get_list_of_added_files_not_yet_committed()
+        if added_files:
             # Ask user for a commit message
             commit_message = prompt_user_for_commit_message()
             # Prepare a commit with the commit message
             commit_changes(commit_message)
-            # Push commit to allspice
-            push_commit_to_allspice()
-            print(add_indent("Completed processing project folder " + proj_dir, 8, '☑️'))
-        else:
-            print(add_indent("Nothing new to push to AllSpice", 8, '🤖'))
-            print(add_indent("Completed processing project folder " + proj_dir, 8, '☑️'))
+        # Push commit to allspice
+        push_commit_to_allspice()
+        print(add_indent("Completed processing project folder " + proj_dir, 8, '☑️'))
         # Change directory back to depot root
         os.chdir("..")
         print("\n--------------------------------------------------\n")
     print("✅ Perforce->AllSpice sync completed!")
-            
\ No newline at end of file
diff --git a/push_to_allspice_windows.py b/push_to_allspice_windows.py
index a055b03..809a978 100644
--- a/push_to_allspice_windows.py
+++ b/push_to_allspice_windows.py
@@ -1,5 +1,5 @@
  # -*- coding: utf-8 -*-
- 
+
 import os
 import sys
 import time
@@ -39,7 +39,7 @@ def initialize_git_repo():
     else:
         git_init_process = subprocess.run("git init", capture_output=True, text=True, shell=True)
         print(add_indent(git_init_process.stdout.strip(), 15, '>>'))
-        
+
 ################################################################################
 def add_allspice_remote():
     print(add_indent("Adding AllSpice remote", 8, '-'))
@@ -125,7 +125,7 @@ def commit_changes(commit_message):
 
 ################################################################################
 def push_commit_to_allspice():
-    print(add_indent("Pushing to AllSpice on the develop branch...", 8, '-'))    
+    print(add_indent("Pushing changes to AllSpice on the develop branch...", 8, '-'))
     git_push_process = subprocess.run("git push", capture_output=True, text=True, shell=True)
     print(add_indent(git_push_process.stdout.strip(), 15, '>>'))
     print(add_indent(git_push_process.stderr.strip(), 15, '>>'))
@@ -171,14 +171,10 @@ if __name__ == "__main__":
             commit_message = prompt_user_for_commit_message()
             # Prepare a commit with the commit message
             commit_changes(commit_message)
-            # Push commit to allspice
-            push_commit_to_allspice()
-            print(add_indent("Completed processing project folder " + proj_dir, 8, '-'))
-        else:
-            print(add_indent("Nothing new to push to AllSpice", 8, '-'))
-            print(add_indent("Completed processing project folder " + proj_dir, 8, '-'))
+        # Push commit to allspice
+        push_commit_to_allspice()
+        print(add_indent("Completed processing project folder " + proj_dir, 8, '-'))
         # Change directory back to depot root
         os.chdir("..")
         print("\n--------------------------------------------------\n")
     print("- Perforce->AllSpice sync completed!")
-            
\ No newline at end of file