#!/bin/sh
#
# func/giturl
#
# A convenient way to display the gitweb URL of a commit-ish, as well as the
# base URL and tree. Also for each argument, the tree or blob URL is printed.
#
# Copyright © 2010 martin f. krafft <madduck@madduck.net>
# Released under the terms of the Artistic Licence 2.0
#
# Source repository: git://git.madduck.net/etc/zsh.git
#

local GITWEB_BASE
GITWEB_BASE=http://git.madduck.net/v

local REMOTE
REMOTE=$(git config --get remote.origin.url)

local part
case "$REMOTE" in
  madduck:pub/*|ssh://git.madduck.net/madduck/pub/*)
    part="${REMOTE#madduck:pub/}"
    part="${part#ssh://git.madduck.net/madduck/pub/}"
    part="${part%.git}.git"
    ;;
  *)
    echo >&2 "E: I do not know how to translate $REMOTE into a gitweb URL."
    return 1
    ;;
esac

echo $GITWEB_BASE/$part
HASH=$(git rev-parse HEAD)
echo $GITWEB_BASE/$part/commitdiff/$HASH

echo $GITWEB_BASE/$part/tree/HEAD
for i in $@; do
  [ -f "$i" ] && echo "$GITWEB_BASE/$part/blob/HEAD:/$i"
  [ -d "$i" ] && echo "$GITWEB_BASE/$part/tree/HEAD:/$i"
done