100 lines
2.0 KiB
Bash
Executable File
100 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
BASE_DIR="${PWD}/`dirname ${0}`"
|
|
BASE_DIR=`readlink -f "$BASE_DIR"`
|
|
SOURCE_DIR=`readlink -f "${BASE_DIR}/${1}"`
|
|
BUILD_NAME=`basename $1`
|
|
BUILD_FILE="${SOURCE_DIR}/.build"
|
|
BUILD_DATA="${SOURCE_DIR}/.build_data"
|
|
BUILD_DIR=`dirname $SOURCE_DIR`
|
|
BUILD_DATA_GENERATED=0
|
|
|
|
YUI_COMPRESSOR=`which yuicompressor`
|
|
#JSDOC=`which jsdoc-toolkit`
|
|
BUILD_TYPE="js"
|
|
|
|
add_file()
|
|
{
|
|
FILES="${FILES} ${SOURCE_DIR}/$1"
|
|
}
|
|
|
|
check_file()
|
|
{
|
|
# No build data is stored so return 1 since we can't make any guesses.
|
|
[ ! -e $BUILD_DATA ] && return 1;
|
|
|
|
FILE=$1
|
|
LAST_BUILD=`grep $FILE $BUILD_DATA`
|
|
if [ $? == 1 ]; then return 1; fi;
|
|
|
|
CURRENT=`grep $FILE $BUILD_DATA.tmp`
|
|
|
|
[ "$CURRENT" != "$LAST_BUILD" ] && return 1
|
|
|
|
return 0;
|
|
}
|
|
|
|
gen_build_data()
|
|
{
|
|
for FILE in $FILES; do
|
|
md5sum $FILE >> $BUILD_DATA.tmp
|
|
done;
|
|
BUILD_DATA_GENERATED=1
|
|
}
|
|
|
|
check()
|
|
{
|
|
# no build data exists so we can't make guesses
|
|
[ -e $BUILD_DATA ] || return 1
|
|
|
|
# remove an existing temp build data file
|
|
[ -e $BUILD_DATA.tmp ] && rm $BUILD_DATA.tmp
|
|
|
|
# generate new build data
|
|
gen_build_data
|
|
|
|
# check files for building
|
|
NEEDS_BUILDING=0
|
|
for FILE in $FILES; do
|
|
check_file $FILE || NEEDS_BUILDING=1
|
|
done;
|
|
|
|
# return the result
|
|
return $NEEDS_BUILDING
|
|
}
|
|
|
|
build()
|
|
{
|
|
echo "building $BUILD_NAME"
|
|
|
|
# generated the unminified version
|
|
cat $FILES > $BUILD_DIR/$BUILD_NAME-debug.js
|
|
|
|
# generated the minified version
|
|
$YUI_COMPRESSOR --type=$BUILD_TYPE -o "$BUILD_DIR/$BUILD_NAME.js" \
|
|
$BUILD_DIR/$BUILD_NAME-debug.js
|
|
|
|
# generate build data incase there hasn't been any
|
|
[ $BUILD_DATA_GENERATED = 1 ] || gen_build_data
|
|
|
|
# move new build data to take the place of the old data
|
|
mv $BUILD_DATA.tmp $BUILD_DATA
|
|
}
|
|
|
|
do_exit()
|
|
{
|
|
echo $1
|
|
exit $2
|
|
}
|
|
|
|
# check to see if the folders build file exists
|
|
[ -e "$BUILD_FILE" ] || do_exit "no build file found" 1
|
|
|
|
# include the folders build file
|
|
. $BUILD_FILE
|
|
|
|
# check if the build needs to take place
|
|
check && do_exit "no changes have been made" 0
|
|
|
|
build
|