X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=git-mirror;h=a6eaa6b8b84bcbec73d7fe1e220280da70d3f4b0;hb=26ce4f633da6e65105ff9d9046b760d28a4a3809;hp=5807b87e09c8cf104c50f4a2f110ce23ce3de50f;hpb=8695d4a6103f11a8b6d5d8778b3869cb211cd2fc;p=bin.git diff --git a/git-mirror b/git-mirror index 5807b87..a6eaa6b 100755 --- a/git-mirror +++ b/git-mirror @@ -1,33 +1,71 @@ -#!/usr/bin/sh -e +#!/usr/bin/env 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] + optional: [sleep duration] + git-mirror gen-url [path to repo] -- generate url file in repo + git-mirror help -- show this message + + relative paths are not supported, but globs are. + To use, first clone the wanted somewhere repos with the --mirror flag.' +} + +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 + + cd ${1} -[ -z ${3} ] && echo "not enough arguments" && exit 1 -[ -z $(which stagit) ] && echo "please install stagit" && exit 1 - -cd ${1} - -[ -d ${3} ] || mkdir ${3} -stagit-index ./* > ${3}/index.html -cp /usr/share/doc/stagit/style.css ${3} - -while :; do - 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} + [ -d ${3} ] || mkdir ${3} + cd ${3} + + while :; do + stagit-index ${1}/* + find "$1" -name '*.git' -type d | \ + while read dir; do + newdir=${3}/$(basename ${dir} .git) + [ -d ${newdir} ] || mkdir ${newdir} + cd ${newdir} + stagit ${dir} + cp "$1/logo.png" . + ln -s logo.png favicon.png + find . -type f \( -name '*.html' -or -name '*.xml' \) | \ + while read i ; do + minify ${i} > ${i}.tmp + mv ${i}.tmp ${i} + done + git -C ${dir} fetch --tags + echo $(date -Iseconds) ' | ' ${dir} | tee -a ${2} + echo $(tail -n 1500 ${2}) > ${2} + done + sleep ${4:-600} done - sleep 600 -done +} + +gen_url() { + find ${1} -maxdepth 2 -name '*.git' | \ + while read dir; do + $(git -C $dir remote get-url origin) > $dir/url + done +} + +case ${1} in + -h | --help | help) + usage + ;; + run) + shift 1 + run $@ + ;; + gen-url) + shift 1 + gen_url $@ + ;; + *) + usage + exit 1 + ;; +esac