Request for Nom-Nom August 13, 2008
Posted by Derek in technology, what "you do here".Tags: code, shell script
trackback
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
Advertisements
/me hugs C#
Keep in mind this is not production code. It’s just an operational tool to make it easier to execute the command-line Java application.
But it’s still a shell script…