mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-14 19:50:12 +01:00
205 lines
5.1 KiB
Bash
205 lines
5.1 KiB
Bash
#!/bin/sh
|
|
|
|
# Set up locale.
|
|
if [ -z "$LOCALE" ]; then LOCALE=$1; fi
|
|
|
|
# Set up paths for finding files.
|
|
if [ -z "$FEDIR" ]; then FEDIR=$PWD/..; fi
|
|
if [ -z "$CONFIGDIR" ]; then CONFIGDIR=$FEDIR/../../config; fi
|
|
if [ -z "$XPILOCALEFILES" ]; then XPILOCALEFILES=$PWD/locale-resources; fi
|
|
if [ -z "$XPIROOT" ]; then XPIROOT=$PWD/xpi-tree-$LOCALE; fi
|
|
if [ -z "$JARROOT" ]; then JARROOT=$PWD/jar-tree; fi
|
|
if [ -z "$PERL" ]; then PERL=perl; fi
|
|
if [ -z "$DEBUG" ]; then DEBUG=0; fi
|
|
|
|
function showParams()
|
|
{
|
|
I=0
|
|
for P in "$@"; do
|
|
I=$((I+1))
|
|
echo PARAM $I: "$P"
|
|
done
|
|
}
|
|
|
|
## Call this with lots of parameters to run a command, log errors, and abort
|
|
## if it fails. Supports redirection if '>' and '<' are passed as arguments,
|
|
## e.g.:
|
|
## safeCommand cmd arg1 arg2 '<' input.file '>' output-file
|
|
##
|
|
## Note: only a single input and single output redirection is supported.
|
|
##
|
|
function safeCommand()
|
|
{
|
|
local -a CMD
|
|
CMD_COUNT=$((0))
|
|
INF=""
|
|
OUTF=""
|
|
LASTP=""
|
|
for P in "$@"; do
|
|
if [ "$LASTP" = "<" ]; then
|
|
if [ -n "$INF" ]; then
|
|
echo "ERROR: Multiple input files passed to safeCommand()." >&2
|
|
exit 2
|
|
fi
|
|
INF="$P"
|
|
elif [ "$LASTP" = ">" ]; then
|
|
if [ -n "$OUTF" ]; then
|
|
echo "ERROR: Multiple output files passed to safeCommand()." >&2
|
|
exit 2
|
|
fi
|
|
OUTF="$P"
|
|
elif [ "$P" = ">" -o "$P" = "<" ]; then
|
|
echo >/dev/null
|
|
else
|
|
CMD[$CMD_COUNT]="$P"
|
|
CMD_COUNT=$((CMD_COUNT+1))
|
|
fi
|
|
LASTP="$P"
|
|
done
|
|
|
|
if [ $DEBUG -gt 0 ]; then
|
|
echo
|
|
showParams "${CMD[@]}"
|
|
echo 'INPUT :' "$INF"
|
|
echo 'OUTPUT :' "$OUTF"
|
|
fi
|
|
|
|
touch log.stdout log.stderr
|
|
if [ -z "$INF" -a -z "$OUTF" ]; then
|
|
"${CMD[@]}" 1>log.stdout 2>log.stderr
|
|
elif [ -z "$INF" ]; then
|
|
"${CMD[@]}" 1> "$OUTF" 2>log.stderr
|
|
elif [ -z "$OUTF" ]; then
|
|
"${CMD[@]}" < "$INF" 1>log.stdout 2>log.stderr
|
|
else
|
|
"${CMD[@]}" < "$INF" 1> "$OUTF" 2>log.stderr
|
|
fi
|
|
|
|
EC=$?
|
|
if [ $DEBUG -gt 0 ]; then
|
|
echo 'RESULT :' $EC
|
|
fi
|
|
if [ "$EC" != "0" ]; then
|
|
echo "ERROR ($EC)"
|
|
cat log.stdout
|
|
cat log.stderr
|
|
rm -f log.stdout log.stderr
|
|
exit 1
|
|
fi
|
|
rm -f log.stdout log.stderr
|
|
return $EC
|
|
}
|
|
|
|
|
|
## Begin real program ##
|
|
|
|
|
|
if [ "$1" = "clean" ]; then
|
|
echo -n "Cleaning up files"
|
|
echo -n .
|
|
rm -rf "$XPIROOT"
|
|
echo -n .
|
|
rm -rf "$JARROOT"
|
|
echo ". done."
|
|
|
|
exit
|
|
fi
|
|
|
|
|
|
# Check setup.
|
|
if ! [ -d "$FEDIR" ]; then
|
|
echo "ERROR: Base ChatZilla directory (FEDIR) not found."
|
|
exit 1
|
|
fi
|
|
if ! [ -d "$CONFIGDIR" ]; then
|
|
echo "ERROR: mozilla/config directory (CONFIGDIR) not found."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$LOCALE" ]; then
|
|
echo "ERROR: You need to provide a locale identifier (ab-CD)"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
# Extract version number.
|
|
VERSION=`grep "const __cz_version" "$FEDIR/xul/content/static.js" | sed "s|.*\"\([^\"]\{1,\}\)\".*|\1|"`
|
|
|
|
if [ -z "$VERSION" ]; then
|
|
echo "ERROR: Unable to get version number."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Beginning build of $LOCALE locale for ChatZilla $VERSION..."
|
|
|
|
|
|
# Check for existing.
|
|
if [ -r "chatzilla-$LOCALE-$VERSION.xpi" ]; then
|
|
echo " WARNING: output XPI will be overwritten."
|
|
fi
|
|
|
|
|
|
# Check for required directory layouts.
|
|
echo -n " Checking XPI structure"
|
|
echo -n .
|
|
if ! [ -d "xpi-tree-$LOCALE" ]; then mkdir "xpi-tree-$LOCALE"; fi
|
|
echo -n .
|
|
if ! [ -d "xpi-tree-$LOCALE/chrome" ]; then mkdir "xpi-tree-$LOCALE/chrome"; fi
|
|
echo ". done"
|
|
|
|
echo -n " Checking JAR structure"
|
|
echo -n .
|
|
if ! [ -d jar-tree ]; then mkdir jar-tree; fi
|
|
echo ". done"
|
|
|
|
|
|
# Make Firefox updates.
|
|
echo -n " Updating Firefox Extension files"
|
|
echo -n .
|
|
safeCommand sed "--expression=s|@REVISION@|$VERSION|g" "--expression=s|@LOCALE@|$LOCALE|g" '<' "$XPILOCALEFILES/$LOCALE/install.rdf" '>' "$XPIROOT/install.rdf"
|
|
echo -n .
|
|
echo ". done"
|
|
|
|
|
|
# Make Mozilla Suite updates.
|
|
echo -n " Updating Mozilla Extension files"
|
|
echo -n .
|
|
safeCommand sed "--expression=s|@REVISION@|$VERSION|g" "--expression=s|@LOCALE@|$LOCALE|g" '<' "$XPILOCALEFILES/$LOCALE/install.js" '>' "$XPIROOT/install.js"
|
|
echo -n .
|
|
safeCommand mv "$FEDIR/xul/locale/en-US/contents.rdf" "$FEDIR/xul/locale/en-US/contents.rdf.in"
|
|
safeCommand sed "s|@MOZILLA_VERSION@|cz-$VERSION|g" '<' "$FEDIR/xul/locale/en-US/contents.rdf.in" '>' "$FEDIR/xul/locale/en-US/contents.rdf"
|
|
safeCommand rm "$FEDIR/xul/locale/en-US/contents.rdf.in"
|
|
echo ". done"
|
|
|
|
|
|
# Create JAR.
|
|
echo -n " Constructing JAR package"
|
|
echo -n .
|
|
OLDPWD=`pwd`
|
|
cd "$CONFIGDIR"
|
|
echo -n .
|
|
|
|
safeCommand sed "s|@LOCALE@|$LOCALE|g" '<' "$FEDIR/locale-jar.mn" '>' "$FEDIR/$LOCALE-jar.mn"
|
|
echo -n .
|
|
safeCommand $PERL make-jars.pl -v -z zip -p preprocessor.pl -s "$FEDIR" -d "$JARROOT" '<' "$FEDIR/$LOCALE-jar.mn"
|
|
echo -n .
|
|
cd "$OLDPWD"
|
|
echo ". done"
|
|
|
|
|
|
# Make XPI.
|
|
echo -n " Constructing XPI package"
|
|
echo -n .
|
|
safeCommand cp -v "$JARROOT/chatzilla-$LOCALE.jar" "$XPIROOT/chrome/"
|
|
echo -n .
|
|
safeCommand chmod 664 "$XPIROOT/chrome/chatzilla-$LOCALE.jar"
|
|
echo -n .
|
|
OLDPWD=`pwd`
|
|
cd "$XPIROOT"
|
|
safeCommand zip -vr ../chatzilla-$LOCALE-$VERSION.xpi . -i "*" -x log*
|
|
cd "$OLDPWD"
|
|
echo ". done"
|
|
|
|
|
|
echo "Build of $LOCALE locale for ChatZilla $VERSION... ALL DONE"
|