#!/bin/sh # stagit setup helper - developed by acidevegas (https://git.acid.vegas/stagit) # debian : sudo apt-get install libgit2-1.1 libmd4c* # arch : sudo pacman -S libgit2 md4c URL="git.acid.vegas" PROTO="https" CLONE_URL="git://$URL" COMMIT_LIMIT=100 HTML_DIR="$HOME/dev/git/acidvegas/git.acid.vegas" REPOS_DIR="$HOME/dev/git" REPOS_EXCLUDE="git.acid.vegas mirror readme" find_repos() { args="" for dir in $REPOS_EXCLUDE; do args="$args -type d -name $dir -prune -o" done echo "$(find $1 $args -type d -name .git -printf "%h\\n " | sort | xargs echo)" } prepair() { [ -d $HTML_DIR ] && rm -rf $HTML_DIR/* mkdir -p $HTML_DIR/assets echo "[~] populating custom assets..." cp acidvegas.png favicon.png logo.png mostdangerous.png style.css $HTML_DIR/assets echo $URL > $HTML_DIR/CNAME } make_index() { echo "[~] creating index..." args="" for dir in $(ls $REPOS_DIR | grep -v 'mirror'); do echo "[~] indexing '$dir' repositories..." DIR_REPOS="$(find_repos $REPOS_DIR/$dir)" args="$args -c \"$dir\" $DIR_REPOS" done echo "$args" | xargs stagit-index > $HTML_DIR/index.html echo "[+] finished" } make_repos() { for dir in $(find_repos $REPOS_DIR); do USER=$(basename $(dirname $dir)) REPO=$(basename $dir) if [ -f $dir/.git/description ]; then if [ "$(cat $dir/.git/description)" = "Unnamed repository; edit this file 'description' to name the repository." ]; then read -p "description for '$USER/$REPO':" desc echo "$desc" > $dir/.git/description echo "[+] updated default 'description' file for '$REPO'" fi else read -p "description for '$USER/$REPO':" desc echo "$desc" > $dir/.git/description echo "[+] added missing 'description' file for '$REPO'" fi if [ ! -f $dir/.git/url ]; then echo "$CLONE_URL/$REPO.git" > $dir/.git/url echo "[+] added missing 'url' file for '$REPO'" fi echo "[~] processing '$REPO' repository..." mkdir -p $HTML_DIR/$REPO && cd $HTML_DIR/$REPO && stagit -l $COMMIT_LIMIT -u "$PROTO://$URL/$REPO" $dir ln -sf log.html index.html git --git-dir $dir/.git archive --format=tar.gz -o "$HTML_DIR/$REPO/$REPO.tar.gz" --prefix="$REPO/" HEAD done } # Main prepair make_repos make_index