#!/bin/sh
-# $Id: release.sh,v 1.7 2004/09/11 15:53:23 henoheno Exp $
+# $Id: release.sh,v 1.8 2004/10/01 14:05:24 henoheno Exp $
# $CVSKNIT_Id: release.sh,v 1.11 2004/05/28 14:26:24 henoheno Exp $
# Release automation script for PukiWiki
# ==========================================================
License='BSD Licnese, NO WARRANTY'
#
-# Functions -----------------------------------------------
-warn(){ echo "$*" 1>&2 ; }
-err() { warn "Error: $*" ; exit 1 ; }
+# Name and Usage --------------------------------------------
+_name="` basename $0 `"
usage(){
- warn "USAGE: `basename $0` VERSION_TAG (1.4.3_rc1 like)"
+ trace 'usage()' || return # (DEBUG)
+ warn "Usage: $_name VERSION_TAG (1.4.3_rc1 like)"
return 1
}
-# -------------------------------------------
-# Argument check
+# Common functions ------------------------------------------
+warn(){ echo "$*" 1>&2 ; }
+err() { warn "Error: $*" ; exit 1 ; }
+
+quote(){
+ test $# -gt 0 && { echo -n "\"$1\"" ; shift ; }
+ while [ $# -gt 0 ] ; do echo -n " \"$1\"" ; shift ; done ; echo
+}
+
+trace(){
+ test "$__debug" || return 0 # (DEBUG)
+ _msg="$1" ; test $# -gt 0 && shift ; warn " $_msg : ` quote "$@" `"
+}
+
+# Default variables -----------------------------------------
+
+mod=pukiwiki
+
+CVSROOT=":pserver:anonymous@cvs.sourceforge.jp:/cvsroot/$mod"
+
+# Function verifying arguments ------------------------------
+
+getopt(){ _arg=noarg
+ trace 'getopt()' "$@" # (DEBUG)
+
+ case "$1" in
+ '' ) echo 1 ;;
+ -[hH]|--help ) echo _help _exit ;;
+ --debug ) echo _debug ;;
+ --zip ) echo _zip ;;
+ -d ) echo _CVSROOT 2 ; _arg="$2" ;;
+ -* ) warn "Error: Unknown option \"$1\"" ; return 1 ;;
+ * ) echo OTHER ;;
+ esac
+
+ test 'x' != "x$_arg"
+}
+
+# Working start ---------------------------------------------
+
+# Show arguments in one line (DEBUG)
+case '--debug' in "$1"|"$3") false ;; * ) true ;; esac || {
+ test 'x--debug' = "x$1" && shift ; __debug=on ; trace 'Args ' "$@"
+}
+
+# Parsing
+while [ $# -gt 0 ] ; do
+ chs="` getopt "$@" `" || err "Syntax error with '$1'"
+ trace '$chs ' "$chs" # (DEBUG)
+
+ for ch in $chs ; do
+ case "$ch" in
+ [1-3] ) shift $ch ;;
+ _exit ) exit ;;
+ _help ) usage ;;
+
+ _CVSROOT) CVSROOT="$2" ;;
+
+ _* ) shift ; eval "_$ch"=on ;;
+ * ) break 2 ;;
+ esac
+ done
+done
+
+# No argument
+if [ $# -eq 0 ] ; then usage ; exit ; fi
+
+# Archiver check --------------------------------------------
+
+if [ -z "$__zip" ]
+then
+ which tar || exit
+ which gzip || exit
+else
+ which zip || exit
+fi > /dev/null
+
+# Argument check --------------------------------------------
rel="$1"
+pkg_dir="${mod}-${rel}"
case "$rel" in
[1-9].[0-9] | [1-9].[0-9] ) tag="r$rel" ;;
[1-9].[0-9]_rc[1-9] | [1-9].[0-9]_rc[1-9] ) tag="r$rel" ;;
esac
tag="` echo "$tag" | tr '.' '_' `"
-# -------------------------------------------
-# Default
-
-mod=pukiwiki
-CVSROOT=":pserver:anonymous@cvs.sourceforge.jp:/cvsroot/$mod"
+# Export the module -----------------------------------------
-pkg_dir="${mod}-${rel}"
+test ! -d "$pkg_dir" || err "There's already a directory: $pkg_dir"
-# -------------------------------------------
+echo cvs -z3 -d "$CVSROOT" -q export -r "$tag" -d "$pkg_dir" "$mod"
+ cvs -z3 -d "$CVSROOT" -q export -r "$tag" -d "$pkg_dir" "$mod"
-# Export the module
-test ! -d "$pkg_dir" || err "There's already a directory: $pkg_dir"
-echo cvs -z3 -d "$CVSROOT" export -r "$tag" -d "$pkg_dir" "$mod"
- cvs -z3 -d "$CVSROOT" export -r "$tag" -d "$pkg_dir" "$mod"
test -d "$pkg_dir" || err "There is'nt a directory: $pkg_dir"
-
-# Remove '.cvsignore' if exists
+# Remove '.cvsignore' if exists -----------------------------
echo find "$pkg_dir" -type f -name '.cvsignore' -delete
find "$pkg_dir" -type f -name '.cvsignore' -delete
-# chmod
+# chmod -----------------------------------------------------
( cd "$pkg_dir"
# ALL: Read only
# Add write permission for PukiWiki
chmod 777 attach backup cache counter diff trackback wiki*
chmod 666 wiki*/*.txt cache/*.dat
-
)
-# Compress
+# Compress --------------------------------------------------
( cd "$pkg_dir"
# wiki.en/
- tar cf - wiki.en | gzip -9 > wiki.en.tgz
- rm -Rf wiki.en
-
- gzip -9 *.en.txt
-
+ target="wiki.en"
+ if [ -z "$__zip" ]
+ then tar cf - "$target" | gzip -9 > "$target".tgz
+ else zip -r9 "$target.zip" "$target"
+ fi
+ rm -Rf "$target"
+
+ # en documents
+ if [ -z "$__zip" ]
+ then gzip -9 *.en.txt
+ else
+ for list in *.en.txt ; do
+ zip -9 "$list".zip "$list"
+ rm -f "$list"
+ done
+ fi
)
-# Tar
-echo tar cf - "$pkg_dir" \| gzip -9 \> "$pkg_dir.tar.gz"
- tar cf - "$pkg_dir" | gzip -9 > "$pkg_dir.tar.gz"
-
-# Zip
-echo zip -r9 "$pkg_dir.zip" "$pkg_dir"
- zip -r9 "$pkg_dir.zip" "$pkg_dir"
-
-#echo rm -Rf "$pkg_dir"
-# rm -Rf "$pkg_dir"
+if [ -z "$__zip" ]
+then
+ # Tar
+ echo tar cf - "$pkg_dir" \| gzip -9 \> "$pkg_dir.tar.gz"
+ tar cf - "$pkg_dir" | gzip -9 > "$pkg_dir.tar.gz"
+else
+ # Zip
+ echo zip -r9 "$pkg_dir.zip" "$pkg_dir"
+ zip -r9 "$pkg_dir.zip" "$pkg_dir"
+fi