66 lines
1.4 KiB
Bash
Executable file
66 lines
1.4 KiB
Bash
Executable file
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
APP_ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
. "$APP_ROOT_DIR/config.sh"
|
|
|
|
infile=${1:-}
|
|
outfile=${2:-}
|
|
if [[ -z "$infile" ]] || [[ -z "$infile" ]]; then
|
|
echo "Usage: $0 infile.mar outfile.mar"
|
|
exit 1
|
|
fi
|
|
|
|
mar="$APP_ROOT_DIR/xulrunner/bin/mar"
|
|
if [ ! -f "$mar" ]; then
|
|
echo "$mar not found"
|
|
exit 1
|
|
fi
|
|
|
|
tmp_dir=`mktemp -d`
|
|
function cleanup {
|
|
rm -rf $tmp_dir
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
cd "$tmp_dir"
|
|
mkdir in
|
|
cd in
|
|
|
|
if [ "`uname -o 2> /dev/null`" = "Cygwin" ]; then
|
|
infile=$(cygpath -w "$infile")
|
|
outfile=$(cygpath -w "$outfile")
|
|
fi
|
|
|
|
echo "Extracting MAR"
|
|
$mar -x "$infile"
|
|
|
|
echo "Renaming all files to .xz"
|
|
find . -type f -exec mv {} {}.xz \;
|
|
echo "Uncompressing files"
|
|
find . -type f -exec unxz {} \;
|
|
echo "Recompressing files with bzip2"
|
|
find . -type f -exec bzip2 {} \;
|
|
echo "Removing .bz extension"
|
|
find . -type f | while read f; do mv "$f" "${f%.bz2}"; done
|
|
|
|
channel=$($mar -T "$infile" | sed -n -r 's/.+MAR channel name: ([^\s]+)/\1/p')
|
|
version=$($mar -T "$infile" | sed -n -r 's/.+Product version: ([^\s]+)/\1/p')
|
|
|
|
if [ -z "$channel" ]; then
|
|
echo "Could not detect channel"
|
|
exit 1
|
|
fi
|
|
if [ -z "$version" ]; then
|
|
echo "Could not detect version"
|
|
exit 1
|
|
fi
|
|
|
|
echo "MAR channel name: $channel"
|
|
echo "Product version: $version"
|
|
|
|
echo "Creating new MAR"
|
|
$mar -V $version -H $channel -c "$outfile" `find . -type f | sed 's/^\.\///'`
|
|
echo
|
|
$mar -T "$outfile"
|