view hg2cl @ 16:5f4d74f8c8f4

Cosmetics.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 20 May 2014 10:53:40 +0300
parents 4dafb2835e21
children a6bd44285160
line wrap: on
line source

#!/bin/sh

# hg2cl.sh - front end shell script for hg2cl.xsl, calls xsltproc
#            with the correct parameters
# 
# Copyright (C) 2005 Arthur de Jong.
# Copyright (C) 2008-2011 Matti Hamalainen <ccr@tnsp.org>
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in
#    the documentation and/or other materials provided with the
#    distribution.
# 3. The name of the author may not be used to endorse or promote
#    products derived from this software without specific prior
#    written permission.
# 
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# exit on any failures
set -e

# hg2cl version
VERSION="0.4"

# set default parameters
STRIPPREFIX=""
LINELEN=75
GROUPBYDAY="yes"
INCLUDEREV="no"
CHANGELOG="ChangeLog"

# do command line checking
prog=`basename $0`
while [ -n "$1" ]
do
  case "$1" in
    --strip-prefix)
      STRIPPREFIX="$2"
      shift 2
      ;;
    --linelen)
      LINELEN="$2";
      shift 2
      ;;
    --separate)
      GROUPBYDAY="no";
      shift
      ;;
    -r|--include-rev)
      INCLUDEREV="yes";
      shift
      ;;
    -O|--hg-options)
      EXTRAOPTS="$2"
      shift 2
      ;;
    -o|--output)
      CHANGELOG="$2"
      shift 2
      ;;
    --stdout)
      CHANGELOG="-"
      shift
      ;;
    -V|--version)
      echo "$prog $VERSION";
      echo "Written by Arthur de Jong."
      echo "Modified for Mercurial by Matti Hamalainen."
      echo "Copyright (C) 2005 Arthur de Jong."
      echo "Copyright (C) 2008-2011 Matti Hamalainen <ccr@tnsp.org>."
      echo ""
      echo "This is free software; see the source for copying conditions.  There is NO"
      echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
      exit 0
      ;;
    -h|--help)
      echo "Usage: $prog [OPTION]..."
      echo "Generate a ChangeLog from a checked out subversion repository."
      echo ""
      echo "  --strip-prefix NAME    prefix to strip from all entries, defaults"
      echo "                         to the name of the current directory"
      echo "  --linelen NUM          maximum length of an output line"
      echo "  --separate             don't group changelog entries by day"
      echo "  -r, --include-rev      include revision numbers"
      echo "  -o, --output FILE      output to FILE instead of ChangeLog"
      echo "  --stdout               output to stdout instead of ChangeLog"
      echo "  -O, --hg-options OPTS  options passed to Mercurial"
      echo "  -h, --help             display this help and exit"
      echo "  -V, --version          output version information and exit"
      exit 0
      ;;
    *)
      echo "$prog: invalid option -- $1"
      echo "Try \`$prog --help' for more information."
      exit 1
      ;;
  esac
done

# test for repository
if ! hg log . > /dev/null 2> /dev/null; then
	echo "No Mercurial repository found from this directory."
	exit 2
fi

# find the directory that this script resides in
dir=`dirname "$0"`
dir=`cd "$dir" && pwd`
XSL="$dir/svn2cl.xsl"

# redirect stdout to the changelog file if needed
if test "x$CHANGELOG" != "x-"; then
  exec > "$CHANGELOG"
fi

# actually run the command we need
( echo '<?xml version="1.0"?>' &&
echo '<log>' && \
hg log $EXTRAOPTS -M -v -f --template \
'<logentry revision="{rev}"><author>{author|escape}</author><date>{date|isodate}</date><paths><path>{files}</path></paths><msg>{desc|escape}</msg></logentry>\n' && \
echo '</log>' ) | \
iconv -f "iso-8859-1" -t "utf-8" | \
xsltproc --stringparam strip-prefix "$STRIPPREFIX" \
         --stringparam linelen $LINELEN \
         --stringparam groupbyday $GROUPBYDAY \
         --stringparam include-rev $INCLUDEREV \
         "$XSL" -