#!/bin/sh # File: create_release.sh # Author: Garvin Hicing # $Id: create_release.sh,v 1.6 2005/03/04 10:16:38 garvinhicking Exp $ # # Description: # This file is only used for developers to create a Serendipity release file # with all the proper file permissions. CVS doesn't track the rightly, so we # need to fix it before releasing. # # Usage: # As security precaution for any other users just executing this script, there # are two required input parameters. The first being the basename path of the # serendipity installation. The second parameter is the target owner of the files. echo "" echo "-[serendipity create_release.sh START]---------------------------------" if [ "x$1" = "x" ] || [ "x$2" = "x" ] || [ "x$3" = "x" ] || [ "x$4" = "x" ]; then echo "usage: ./create_release.sh [tar.gz dump filename] [serendipity installation dirname, without paths] [username, i.e. nobody] [group, i.e. nogroup]" echo "" echo "example:" echo " $> cd serendipity/bundled-libs/" echo " $> ./create_release.sh serendipity-0.7.tar.gz serendipity nobody nogroup" echo "" echo "WARNING: Running this script in a productive blog environment will do" echo " serious harm!" echo "-[serendipity create_release.sh END]----------------------------------" echo "" exit 1 else if test "../../$2" then echo "WARNING: Running this script in a productive blog environment will do" echo " serious harm! Only use it, if you are a developer and about" echo " to bundle a new release version!" echo "" echo "Hit [ENTER] to continue, or abort this script (CTRL-C)" read -n 1 gensums=0 which php > /dev/null if [ $? -ne 0 ] then gensums=-1 echo "NOTICE: Checksums will not be generated because PHP is not available." echo " Install PHP to generate checksums for file validation, or " echo " run serendipity_generateFTPChecksums.php manually." echo "" echo "Hit [ENTER] to continue, or abort this script (CTRL-C)" read -n 1 fi echo "1. Operating on basedirectory ../../$2" cd ../../ echo " [DONE]" echo "" echo "2. Adjusting all subdirectory permissions to 755" find "$2" -type d -exec chmod 755 {} \; echo " [DONE]" echo "" echo "3. Adjusting core directory permissions to 777" chmod 777 "$2" chmod 777 "$2/templates_c" chmod 777 "$2/plugins" chmod 777 "$2/uploads" echo " [DONE]" echo "" echo "4. Adjusting all file permissions to 644" find "$2" -type f -exec chmod 644 {} \; echo " [DONE]" echo "" echo "5. Adjusting special files..." echo " - $2/.htaccess [666]" chmod 666 "$2/.htaccess" echo " - $2/upgrade.sh [744]" chmod 744 "$2/upgrade.sh" echo " - $2/bundled-libs/create_release.sh [766]" chmod 766 "$2/bundled-libs/create_release.sh" echo " - $2/tests [remove]" rm -rf "$2/tests" echo " [DONE]" echo "" echo "6. Generating checksums..." if [ $gensums -ne 0 ] then echo " [SKIP]" else if (echo "true" | php -B "define('IN_serendipity', true);" -F $2/bundled-libs/serendipity_generateFTPChecksums.php) then echo " [DONE]" else rm -rf checksums.inc.php echo " [FAIL]" fi fi echo "" echo "7. Altering CVS to be useful for anonymous users..." echo " - Removing CVS branch tag, so that a user can upgrade to latest CVS" find "$2" -type f -name Tag -exec rm {} \; echo " [DONE]" echo " - Inserting ANONYMOUS user instead of Developer account" for i in `find $2 -type f -name Root` ; do echo ':pserver:anonymous@cvs.sf.net:/cvsroot/php-blog' > $i; done echo " [DONE]" echo "" echo "8. Creating .tgz file $1" tar --owner=$3 --group=$4 -czf "$1" "$2" echo " [DONE]" echo "" echo "9. All Done. Bye-Bye." else echo "Basedirectory ../../$2 not found. Check parameters" fi echo "-[serendipity create_release.sh END]----------------------------------" echo "" fi echo "REMEMBER TO UPDATE docs/RELEASE and commit SVN branch"