+#!/bin/bash
+
+. ./.jprojects.sh || exit 255
+
+for project in ${LIST}; do
+ IS_LIB="${project: -4}"
+
+ if [ "${project}" = "jprojects-scripts" ]
+ then
+ echo "$0: Skipping jprojects-scripts ..."
+ continue
+ elif [ "${IS_LIB}" != "-lib" ]
+ then
+ echo "$0: Project '${project}' is no remote-interface project, skipped."
+ continue
+ elif [ ! -d "${JPROJECTS_HOME}/${project}" ]
+ then
+ echo "$0: Project '${project}' does not exist."
+ continue
+ fi
+
+ cd "${JPROJECTS_HOME}/${project}" || exit 255
+ CHECK_CHANGES=$(git commit -a --dry-run | grep "Changes to be committed:")
+
+ if [ -n "${CHECK_CHANGES}" ]
+ then
+ echo "$0: Committing '${project}' ..."
+ if [ "$1" = "updated jar(s)" ]
+ then
+ # Special commit ... (known-binaries)
+ git commit --signoff -S lib/*.jar -m "$1"
+ elif [ "$1" = "updated dist.sh" ]
+ then
+ # Special commit ... (known shell script)
+ git commit --signoff -S "dist.sh" -m "$1"
+ elif [ -n "$1" -a -n "$2" ]
+ then
+ # Limited ommit with given message
+ git commit $2 --signoff -S -m "$1" || exit 255
+ elif [ -d "$1" -o -f "$1" ]
+ then
+ # Limited commit with no message
+ git commit $1 --signoff -S || exit 255
+ elif [ -n "$1" ]
+ then
+ # Regular commit with given message
+ git commit -a --signoff -S -m "$1" || exit 255
+ else
+ # Regular commit, will open $EDITOR for commit message
+ git commit -a --signoff -S || exit 255
+ fi
+ else
+ echo "$0: Nothing to commit for project '${project}'."
+ fi
+done
+
+echo "$0: All done."
+exit 0