jump to navigation

Request for Nom-Nom August 13, 2008

Posted by Derek in technology, what "you do here".
Tags: ,
2 comments

We’re still using shell scripts in a Fortune 200 company. Pure hackery. (This wordpress theme is not wide enough, but you get the idea…)

#!/bin/ksh
#
#  Shell script to make a backup of the previously compressed file if it exists,
#  execute the YUI-Compressor on the specified source file, and clean up the
#  backup directory so that it doesn't grow too large
#

trap huphandler  HUP
trap ''          QUIT
trap exithandler TERM INT

huphandler()
{
   print 'Received SIGHUP'
}

exithandler()
{
   print 'Received SIGTERM or SIGINT'
   exit 1
}

if [ $# -ne 3 ]; then
  echo 1>&2 "Usage: yuicompressor <source file-name> <source file-type> <output file-name>"
  echo "e.g. home.src.js js home.cmp.js"
  exit 1
fi

if [ $1 == $3 ]; then
        echo "Error: Source filename and output filename cannot be the same."
        exit 1
fi

#echo "Enter the source filename to compress and the type of file; e.g. newNWA.src.css css:"
if [[ -z $2 ]]; then
        echo "Please enter a file type, usually it's \"js\" or \"css\":"
        read file_type
fi
#echo "Enter the output filename: e.g. newNWA.cmp.css"

if [[ -z $3 ]] ; then
        echo "output_file is null, I cannot compress"
                exit
else
# make a backup copy first
if [ -f $3 ]; then
        echo "Output file already exists, making a backup..."
        NOW=$(date +"%Y%m%d.%H-%M-%S")
        FILENAME=$3.$USER.$NOW
        cp $3 /weblogs/backup/yuicompressor/$FILENAME
                chmod 775 /weblogs/backup/yuicompressor/$FILENAME
        echo "Output file backed up, now compressing $source_file..."
else
        echo "No existing output file found to backup. Starting compression of $source_file..."
fi

#perform the compression
/usr/java14/bin/java -jar /opt/www/scripts/yuicompressor-2.3.6/build/yuicompressor-2.3.6.jar --type $2 $PWD/$1 -o $PW
D/$3

#cleanup backup directory
echo "Checking to see if backup directory cleanup is needed..."
cd /weblogs/backup/yuicompressor/
files_in_dir=`ls $3.$USER.* | wc -l`
files_to_delete=`expr $files_in_dir - 3`
        if [ $files_to_delete -gt 0 ]; then
          echo "Cleaning up backup directory..."
          ls -t | tail -n $files_to_delete | xargs rm
          if [ $? -ne 0 ]; then
            echo .An error ocurred deleting the files.
            exit 1
          else
            echo "$files_to_delete file(s) deleted."
          fi
        else
          echo "No cleaning of backup directory needed."
        fi
fi