55 lines
1.2 KiB
Bash
Executable file
55 lines
1.2 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# SCRIPT NAME:
|
|
# submodule_update.sh
|
|
#
|
|
# AUTHOR:
|
|
# Severin Kaderli <severin.kaderli@gmail.com>
|
|
#
|
|
# DESCRIPTION:
|
|
# Updates the submodules in all Git repositories in this folder and creates a
|
|
# new commit and pushes it. Only when there are no staged changes pending.
|
|
#
|
|
# USAGE:
|
|
# ./submodule_update.sh
|
|
. utils.sh
|
|
|
|
START_DIR=$(pwd)
|
|
|
|
|
|
|
|
|
|
while IFS= read -r -d '' dir
|
|
do
|
|
cd "$dir" || exit 1
|
|
cd .. || exit 1
|
|
print_section "Checking $(pwd)"
|
|
|
|
if [ -z "$(git status --porcelain)" ]
|
|
then
|
|
print_log "No pending changes"
|
|
print_log "Updating submodules"
|
|
git pl > /dev/null 2>&1
|
|
|
|
# Check if any changes are available
|
|
if [ -z "$(git status --porcelain)" ]
|
|
then
|
|
print_log "No updates found"
|
|
else
|
|
print_log "Updates found"
|
|
print_log "Creating commit"
|
|
git a > /dev/null 2>&1
|
|
git c -m "Update submodules" > /dev/null 2>&1
|
|
print_log "Pushing commit"
|
|
git p > /dev/null 2>&1
|
|
print_log "Commit was pushed"
|
|
fi
|
|
else
|
|
print_log "Pending changes. Ignoring"
|
|
fi
|
|
|
|
echo -e ""
|
|
|
|
cd "${START_DIR}" || exit 1
|
|
|
|
done < <(find . -name .git -type d -prune -print0)
|