Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- test -z "$1" && {
- echo "Usage: $0 {complete theme xpi}"
- exit 1
- }
- function try {
- command="$*"
- $command || {
- echo -e "Error while executing command: \E[31m$command\E[0m"
- exit 2
- }
- }
- BASENAME=$(basename "$1" .xpi)
- DIRNAME=$(pwd)
- TMPDIR="/tmp/$BASENAME/"
- test -d $TMPDIR && try rm -r $TMPDIR
- try mkdir $TMPDIR
- try cp "$1" $TMPDIR
- try cd $TMPDIR
- try unzip $BASENAME.xpi install.rdf
- grep '<em:targetApplication>' -A5 $TMPDIR/install.rdf > .TARGET
- test -f .TARGET || {
- echo -e "Error: \E[31mUnable to write temp file in $TMPDIR!\E[0m"
- exit 3
- }
- ORIG_TARGET=$(grep "<em:id>" .TARGET | grep -o "{.*}")
- ORIG_MINVER=$(grep "<em:minVersion>" .TARGET | grep -Eo "[0-9](\.?[*0-9])*")
- ORIG_MAXVER=$(grep "<em:maxVersion>" .TARGET | grep -Eo "[0-9](\.?[*0-9])*")
- rm .TARGET
- DEST_TARGET="{29877c1d-27df-4421-9a79-382c31470151}"
- DEST_MINVER="2.0.0"
- DEST_MAXVER="2.1.*"
- test -z "$ORIG_TARGET" && {
- echo -e "Error: \E[31mTarget application UUID not found in install.rdf\E[0m"
- exit 4
- }
- cat <<EOF
- ------- Original target data -------
- Application UUID: $ORIG_TARGET
- Minimum version: $ORIG_MINVER
- Maximum version: $ORIG_MAXVER
- --- Target data after conversion ---
- Application UUID: $DEST_TARGET
- Minimum version: $DEST_MINVER
- Maximum version: $DEST_MAXVER
- EOF
- # Escape asterisk
- ORIG_MINVER=$(echo $ORIG_MINVER | sed "s!\*!\\\*!g")
- ORIG_MAXVER=$(echo $ORIG_MAXVER | sed "s!\*!\\\*!g")
- DEST_MINVER=$(echo $DEST_MINVER | sed "s!\*!\\\*!g")
- DEST_MAXVER=$(echo $DEST_MAXVER | sed "s!\*!\\\*!g")
- # Make the replacements
- try sed -i "s!<em:id>$ORIG_TARGET</em:id>!<em:id>$DEST_TARGET</em:id>!g" \
- "$TMPDIR/install.rdf"
- try sed -i "s!<em:minVersion>$ORIG_MINVER</em:minVersion>!<em:minVersion>$DEST_MINVER</em:minVersion>!g" \
- "$TMPDIR/install.rdf"
- try sed -i "s!<em:maxVersion>$ORIG_MAXVER</em:maxVersion>!<em:maxVersion>$DEST_MAXVER</em:maxVersion>!g" \
- "$TMPDIR/install.rdf"
- # Update XPI file
- try zip "$BASENAME.xpi" install.rdf
- try cp -v "$BASENAME.xpi" "$DIRNAME/${BASENAME}_converted.xpi"
- rm -r "$TMPDIR"
- echo -e "Conversion success: \E[32m$DIRNAME/${BASENAME}_converted.xpi\E[0m"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement