-#!/usr/bin/sh -e
+#!/usr/bin/sh
+# Mirror some Git repos
-case ${1} in
- -h | --help)
- echo "Usage: git-mirror [path to repos] [path to log file] [html directory]"
- echo "relative paths are not supported."
- exit 1
- ;;
-esac
+usage() {
+ echo 'Usage: git-mirror [command] [arguments]
+ git-mirror run [path to repos] [path to log file] [html directory]
+ git-mirror gen-url [path to repo] -- generate url file in repo
+ git-mirror help -- show this message
-[ -z ${3} ] && echo "not enough arguments" && exit 1
-[ -z $(which stagit) ] && echo "please install stagit" && exit 1
+ relative paths are not supported, but globs are.
+ To use, first clone the wanted somewhere repos with the --mirror flag.'
+}
-cd ${1}
+run() {
+ [ -z ${3} ] && echo "not enough arguments" && exit 1
+ [ -z $(which stagit) ] && echo "please install stagit" && exit 1
+ [ -z $(which minify) ] && echo "please install minify" && exit 1
-[ -d ${3} ] || mkdir ${3}
-stagit-index ./* > ${3}/index.html
-cp /usr/share/doc/stagit/style.css ${3}
+ cd ${1}
-while :; do
+ [ -d ${3} ] || mkdir ${3}
+ cd ${3} && stagit-index
+ cp /usr/share/doc/stagit/style.css ${3}
+
+ while :; do
+ for dir in "${1}/*.git"; do
+ newdir=${3}/$(basename ${dir} .git)
+ [ -d ${newdir} ] || mkdir ${newdir}
+ cd ${newdir}
+ stagit ${dir}
+ find . -type f \( -name '*.html' -or -name '*.xml' \) | \
+ while read i ; do
+ minify ${i} > ${i}.tmp
+ mv ${i}.tmp ${i}
+ done
+ cp /usr/share/doc/stagit/style.css .
+ git -C ${dir} fetch --tags
+ echo $(date -Iseconds) ' | ' ${dir} | tee -a ${2}
+ echo $(tail -n 1500 ${2}) > ${2}
+ done
+ sleep 600
+ done
+}
+
+gen_url() {
find ${1} -maxdepth 2 -name '*.git' | \
while read dir; do
- newdir=${3}/$(basename ${dir} .git)
- [ -d ${newdir} ] || mkdir ${newdir}
- cd ${newdir}
- stagit ${dir}
- cp /usr/share/doc/stagit/style.css .
- git -C ${dir} fetch --tags
- echo $(date -Iseconds) ' | ' ${dir} | tee -a ${2}
- echo $(tail -n 1500 ${2}) > ${2}
+ $(git -C $dir remote get-url origin) > $dir/url
done
- sleep 600
-done
+}
+
+case ${1} in
+ -h | --help | help)
+ usage
+ ;;
+ run)
+ shift 1
+ run $@
+ ;;
+ gen-url)
+ shift 1
+ gen_url $@
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac