OSDN Git Service

Enable '--zip' option
authorhenoheno <henoheno>
Fri, 1 Oct 2004 14:05:24 +0000 (23:05 +0900)
committerhenoheno <henoheno>
Fri, 1 Oct 2004 14:05:24 +0000 (23:05 +0900)
release.sh

index dc64d11..a20a61a 100755 (executable)
@@ -1,5 +1,5 @@
 #!/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
 #  ==========================================================
@@ -8,19 +8,96 @@
    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" ;;
@@ -30,28 +107,20 @@ case "$rel" in
 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
@@ -65,28 +134,38 @@ echo find "$pkg_dir" -type f -name '.cvsignore' -delete
   # 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