X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release_update.sh;h=d6f0b744d3ea02a042338d3921869ece1e5dbd8b;hb=d58d490f43df2190aa75ff9c674290c9c3d46462;hp=7e4d42538c31cc44f241b661101398f8d92f5c0c;hpb=94738f3d3c8eee2ec22478c3df352db61547d657;p=pukiwiki%2Fpukiwiki_devel.git diff --git a/release_update.sh b/release_update.sh index 7e4d425..d6f0b74 100755 --- a/release_update.sh +++ b/release_update.sh @@ -1,5 +1,5 @@ #!/bin/sh -# $Id: release_update.sh,v 1.5 2004/09/11 15:13:47 henoheno Exp $ +# $Id: release_update.sh,v 1.12 2005/12/10 08:27:00 henoheno Exp $ # $CVSKNIT_Id: release.sh,v 1.11 2004/05/28 14:26:24 henoheno Exp $ # Release automation script for PukiWiki # ========================================================== @@ -8,50 +8,139 @@ 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_FROM VERSION_TO (VERSION = '1.4.3_rc1' like)" + warn "USAGE: $_name [options] VERSION_FROM VERSION_TO (VERSION = '1.4.3_rc1' like)" + warn " Options:" + warn " -p|--patch Create a large patch file" + warn " -z|--zip Create *.zip archive" + warn " --move-dist Move *.ini.php => *.ini-dist.php" + warn " --copy-dist Move, and Copy *.ini.php <= *.ini-dist.php" return 1 } +# 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 "$@" `" +} + check_versiontag(){ case "$1" in - [1-9].[0-9] | [1-9].[0-9] ) tag="r$1" ;; - [1-9].[0-9]_rc[1-9] | [1-9].[0-9]_rc[1-9] ) tag="r$1" ;; - [1-9].[0-9].[0-9] | [1-9].[0-9].[0-9][0-9] ) tag="r$1" ;; - [1-9].[0-9].[0-9]_rc[1-9] | [1-9].[0-9].[0-9][0-9]_rc[1-9] ) tag="r$1" ;; + [1-9].[0-9] | [1-9].[0-9] ) tag="r$1" ;; + [1-9].[0-9]_rc[1-9] | [1-9].[0-9]_rc[1-9] ) tag="r$1" ;; + [1-9].[0-9].[0-9] | [1-9].[0-9].[0-9][0-9] ) tag="r$1" ;; + [1-9].[0-9].[0-9]_[a-z]* | [1-9].[0-9].[0-9][0-9]_[a-z]* ) tag="r$1" ;; + [1-9].[0-9].[0-9]_[1-9] | [1-9].[0-9].[0-9][0-9]_[1-9] ) tag="r$1" ;; + HEAD | r1_3_3_branch ) tag="$rel" ;; '' ) usage ; return 1 ;; * ) warn "Error: Invalid string: $1" ; usage ; return 1 ;; esac echo "$tag" | tr '.' '_' } -# ------------------------------------------- -# Argument check +chmod_pkg(){ + ( cd "$1" + # ALL: Read only + find . -type d | while read line; do chmod 755 "$line"; done + find . -type f | while read line; do chmod 644 "$line"; done + # Add write permission for PukiWiki + chmod 777 attach backup cache counter diff trackback wiki* 2>/dev/null + chmod 666 wiki*/*.txt cache/*.dat cache/*.ref cache/*.rel 2>/dev/null + ) +} -rel_from="$1" -rel_to="$2" +# Default variables ----------------------------------------- -tag_from="` check_versiontag "$rel_from" `" || exit -tag_to="` check_versiontag "$rel_to" `" || exit +mod=pukiwiki +CVSROOT=":pserver:anonymous@cvs.sourceforge.jp:/cvsroot/$mod" + +pkg_dir="$mod" + +# Function verifying arguments ------------------------------ + +getopt(){ _arg=noarg + trace 'getopt()' "$@" # (DEBUG) + + case "$1" in + '' ) echo 1 ;; + -[hH]|--help ) echo _help _exit ;; + --debug ) echo _debug ;; + -p|--patch ) echo _patch ;; + -z|--zip ) echo _zip ;; + --copy-dist ) echo _copy_dist ;; + --move-dist ) echo _move_dist ;; + -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 + +# Argument check -------------------------------------------- + +rel_from="$1" +rel_to="$2" if [ "x$rel_from" = "x$rel_to" ] ; then warn "Error: VERSION_FROM and VERSION_TO is equivalent" usage ; exit fi -# ------------------------------------------- -# Default +tag_from="` check_versiontag "$rel_from" `" || exit +tag_to="` check_versiontag "$rel_to" `" || exit -mod=pukiwiki -CVSROOT=":pserver:anonymous@cvs.sourceforge.jp:/cvsroot/$mod" +# ----------------------------------------------------------- -pkg_dir="$mod" +# Creating a PATCH +test "$__patch" && { + file="${mod}-${tag_from}-${tag_to}.diff.gz" + test ! -f "$file" || err "There's already a file: $file" + + echo $file + echo cvs -z3 -d "$CVSROOT" rdiff -u -r "$tag_from" -r "$tag_to" "$mod" + cvs -z3 -d "$CVSROOT" rdiff -u -r "$tag_from" -r "$tag_to" "$mod" | gzip -9 > "$file" + exit +} +# NOT PATCH -# ------------------------------------------- # Checkout the module with VERSION_FROM test ! -d "$pkg_dir" || err "There's already a directory: $pkg_dir" @@ -59,6 +148,7 @@ echo cvs -z3 -d "$CVSROOT" co -r "$tag_from" -d "$pkg_dir" "$mod" cvs -z3 -d "$CVSROOT" co -r "$tag_from" -d "$pkg_dir" "$mod" test -d "$pkg_dir" || err "There isn't a directory: $pkg_dir" + # Merge VERSION_FROM to VERSION_TO ( cd "$pkg_dir" echo cvs up -dP -j "$tag_from" -j "$tag_to" @@ -69,6 +159,7 @@ test -d "$pkg_dir" || err "There isn't a directory: $pkg_dir" ) # Remove files those are not Added or Modified +echo -n "Remove files those are not Added or Modified ..." ( cd "$pkg_dir" find . -type f | grep -v /CVS/ | while read line ; do @@ -80,40 +171,42 @@ test -d "$pkg_dir" || err "There isn't a directory: $pkg_dir" ) # Remove CVS directories - find "$pkg_dir" -type d -name "CVS" | xargs rm -Rf +echo "Remove CVS directories ..." +find "$pkg_dir" -type d -name "CVS" | xargs rm -Rf # Remove '.cvsignore' if exists echo find "$pkg_dir" -type f -name '.cvsignore' -delete find "$pkg_dir" -type f -name '.cvsignore' -delete -# Remove emptied directories +# Remove emptied directories (twice) find "$pkg_dir" -type d -empty | xargs rmdir find "$pkg_dir" -type d -empty | xargs rmdir -# chmod +# Move / Copy *.ini.php files +if [ 'x' != "x$__copy_dist$__move_dist" ] ; then ( cd "$pkg_dir" - # ALL: Read only - find . -type d | while read line; do - chmod 755 "$line" - done - find . -type f | while read line; do - chmod 644 "$line" - done - - # Add write permission for PukiWiki - chmod 777 attach backup cache counter diff trackback wiki* 2>/dev/null - chmod 666 wiki*/*.txt cache/*.dat 2>/dev/null - + find . -type f -name "*.ini.php" | while read file; do + dist_file="` echo "$file" | sed 's/ini\.php$/ini-dist.php/' `" + mv -f "$file" "$dist_file" + test "$__copy_dist" && cp -f "$dist_file" "$file" + done ) +fi -# Tar -echo tar cf - "$pkg_dir" \| gzip -9 \> "update_$rel_to.tar.gz" - tar cf - "$pkg_dir" | gzip -9 > "update_$rel_to.tar.gz" - -# Zip -#echo zip -r9 "update_$rel_to.zip" "$pkg_dir" -# zip -r9 "update_$rel_to.zip" "$pkg_dir" +# chmod +chmod_pkg "$pkg_dir" + +if [ -z "$__zip" ] +then + # Tar + echo tar cf - "$pkg_dir" \| gzip -9 \> "update_$rel_to.tar.gz" + tar cf - "$pkg_dir" | gzip -9 > "update_$rel_to.tar.gz" +else + # Zip + echo zip -r9 "update_$rel_to.zip" "$pkg_dir" + zip -r9 "update_$rel_to.zip" "$pkg_dir" +fi #echo rm -Rf "$pkg_dir" # rm -Rf "$pkg_dir"