#!/usr/bin/env sh # Thanks ChatGPT # Define your projects directory PROJECTS_DIR="$HOME/projects/" # Counter for total directories checked total_dirs_checked=0 # Counter for projects with unpushed commits unpushed_projects=0 # Change directory to your projects directory cd "$PROJECTS_DIR" || { echo "Directory not found"; exit 1; } # Loop through each subdirectory for dir in */; do # Increment the total directories counter ((total_dirs_checked++)) # Move into the project directory cd "$dir" || continue # Check if it's a git repository if [ -d ".git" ]; then # Get the name of the current branch, silencing errors current_branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) # Check if the command failed or if it's not a branch if [ $? -ne 0 ] || [ -z "$current_branch" ]; then cd .. continue fi # Check if the branch has an upstream set if [ -z "$(git rev-parse --abbrev-ref --symbolic-full-name "$current_branch@{u}" 2>/dev/null)" ]; then #echo "No upstream set for $current_branch in $dir" true # Hack cus i am lazy else # Check if there are unpushed commits if [ "$(git rev-list --count HEAD..."$current_branch"@{u})" -gt 0 ]; then echo "There are unpushed commits in $dir" ((unpushed_projects++)) fi fi fi # Move back to the parent directory cd .. done # Output the total number of directories checked echo "Total directories checked: $total_dirs_checked" # Output the number of projects with unpushed commits echo "Projects with unpushed commits: $unpushed_projects"