Promoting file from gitea@foundation.aninix.net:DarkFeather/HomeDir.git
This commit is contained in:
78
UserScripts/active-projects
Executable file
78
UserScripts/active-projects
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# File: active-projects
|
||||||
|
#
|
||||||
|
# Description: This file finds active projects.
|
||||||
|
#
|
||||||
|
# Package: DarkFeather/HomeDir
|
||||||
|
# Copyright: WTFPL
|
||||||
|
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather
|
||||||
|
|
||||||
|
targetdir="$PWD"
|
||||||
|
unset aninix
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
### Write the usage
|
||||||
|
### param retcode: the return code
|
||||||
|
retcode="$1"
|
||||||
|
echo "Usage: $0 # List the state of clones found under this directory"
|
||||||
|
echo " $0 -t dir # Search the directory"
|
||||||
|
echo " $0 -A # AniNIX repos only."
|
||||||
|
echo " $0 -h # Helptext"
|
||||||
|
echo "Add -v to increase verbosity."
|
||||||
|
exit $retcode
|
||||||
|
}
|
||||||
|
|
||||||
|
function showProject() {
|
||||||
|
printf "$(echo "${founddir}" | sed 's#/.git##' ) "
|
||||||
|
git config remote.origin.url
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function findActiveProjects() {
|
||||||
|
### Find the active projects
|
||||||
|
|
||||||
|
# Delimit by newline
|
||||||
|
IFS="
|
||||||
|
"
|
||||||
|
|
||||||
|
# Iterate on each directory
|
||||||
|
for founddir in `find "${targetdir}" -type d -name .git`; do
|
||||||
|
cd "${founddir}/.."
|
||||||
|
|
||||||
|
# Test for branches
|
||||||
|
(git branch -l ; git branch -r -l) | grep -vE 'master|main' &>/dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
showProject
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Test for stashes
|
||||||
|
if [[ `git stash list | wc -l` -ne 0 ]]; then
|
||||||
|
showProject
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Test for status
|
||||||
|
if [[ `git status | grep -cE "Your branch is up to date with 'origin/[a-zA-Z0-9]*'\.$|^nothing to commit, working tree clean$"` -ne 2 ]]; then
|
||||||
|
showProject
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$OLDPWD"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
### Main
|
||||||
|
if [[ "$(basename "$0")" == "active-projects" ]]; then
|
||||||
|
while getopts 'At:v' OPTION; do
|
||||||
|
case "$OPTION" in
|
||||||
|
A) aninix=1 ;;
|
||||||
|
t) targetdir="${OPTARG}" ;;
|
||||||
|
v) set -x ;;
|
||||||
|
*) usage 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
findActiveProjects | if [ -n "$aninix" ]; then grep aninix.net; else cat; fi
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user