mirror of
https://github.com/gosticks/PiPer.git
synced 2026-10-06 07:26:55 +00:00
Updated build script
Support added for command line options including release and debug profiles
This commit is contained in:
@@ -1,24 +1,83 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Settings
|
||||
#
|
||||
# Make the PiPer Safari extension
|
||||
|
||||
EXTENSION_NAME="PiPer"
|
||||
|
||||
# Paths
|
||||
CCJS_PATH="./build-tools/ccjs" # "ccjs"
|
||||
XARJS_PATH="./build-tools/xarjs" # "xarjs"
|
||||
SVGO_PATH="./build-tools/svgo" # "svgo"
|
||||
PLISTBUDDY_PATH="./build-tools/plistbuddy" # "/usr/libexec/PlistBuddy"
|
||||
# Build tool paths; fallback to local build tools
|
||||
CCJS_PATH=$(type "ccjs" >/dev/null 2>&1 && echo "ccjs" || echo "./build-tools/ccjs")
|
||||
XARJS_PATH=$(type "xarjs" >/dev/null 2>&1 && echo "xarjs" || echo "./build-tools/xarjs")
|
||||
SVGO_PATH=$(type "svgo" >/dev/null 2>&1 && echo "svgo" || echo "./build-tools/svgo")
|
||||
PLISTBUDDY_PATH=$(type "/usr/libexec/PlistBuddy" >/dev/null 2>&1 && echo "/usr/libexec/PlistBuddy" || echo "./build-tools/plistbuddy")
|
||||
|
||||
# Certifcates
|
||||
# Certifcate paths
|
||||
LEAF_CERT_PATH="../certs/cert.pem"
|
||||
INTERMEDIATE_CERT_PATH="../certs/apple-intermediate.pem"
|
||||
ROOT_CERT_PATH="../certs/apple-root.pem"
|
||||
PRIVATE_KEY_PATH="../certs/privatekey.pem"
|
||||
|
||||
|
||||
# Display help then exit
|
||||
show_help() {
|
||||
cat << EOF
|
||||
Usage: make.sh [options]
|
||||
|
||||
Options:
|
||||
-h -? --help Show this screen
|
||||
-p --profile <release|debug> Set settings according to profile [default: debug]
|
||||
-j --compress-js Compress JavaScript
|
||||
-s --compress-svg Compress SVG
|
||||
-e --package-extension Package Safari extension (requires private key)
|
||||
-v --no-version-increment Disable automatic version incrementing
|
||||
EOF
|
||||
exit 0
|
||||
}
|
||||
|
||||
arguments=("$@")
|
||||
|
||||
# First pass processing arguments
|
||||
while :; do
|
||||
case $1 in
|
||||
-h|-\?|--help) show_help ;;
|
||||
-p|--profile) [[ "$2" ]] && profile=$2 ;;
|
||||
--profile=?*) profile=${1#*=} ;;
|
||||
-?*) ;;
|
||||
*) break
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Set default settings as per profile
|
||||
case $profile in
|
||||
release)
|
||||
compress_svg=1
|
||||
compress_js=1
|
||||
package_ext=1
|
||||
;;
|
||||
*)
|
||||
compress_svg=0
|
||||
compress_js=0
|
||||
package_ext=0
|
||||
esac
|
||||
update_version=1
|
||||
|
||||
set -- "${arguments[@]}"
|
||||
|
||||
# Second pass processing arguments
|
||||
while :; do
|
||||
case $1 in
|
||||
-j|--compress-js) compress_js=1 ;;
|
||||
-s|--compress-svg) compress_svg=1 ;;
|
||||
-e|--package-extension) package_ext=1 ;;
|
||||
-v|--no-version-increment) update_version=0 ;;
|
||||
-p|--profile) shift ;;
|
||||
-?*) ;;
|
||||
*) break
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
#
|
||||
# Build script
|
||||
#
|
||||
@@ -37,41 +96,46 @@ mkdir -p "out/${EXTENSION_NAME}.safariextension"
|
||||
cp -r src/* "out/${EXTENSION_NAME}.safariextension/"
|
||||
|
||||
# Compress all supported images with SVGO
|
||||
${SVGO_PATH} -q -f "out/${EXTENSION_NAME}.safariextension/images"
|
||||
if [[ "$compress_svg" -eq 1 ]]; then
|
||||
${SVGO_PATH} -q -f "out/${EXTENSION_NAME}.safariextension/images"
|
||||
fi
|
||||
|
||||
# Use closure compiler to compress javascript
|
||||
for path in "out/${EXTENSION_NAME}.safariextension/scripts"/*.js; do
|
||||
[ $(basename $path) == "externs.js" ] && continue
|
||||
path=${path%.*}
|
||||
${CCJS_PATH} \
|
||||
--compilationLevel ADVANCED \
|
||||
--warningLevel VERBOSE \
|
||||
--newTypeInf \
|
||||
--useTypesForOptimization \
|
||||
--externs "out/${EXTENSION_NAME}.safariextension/scripts/externs.js" \
|
||||
"${path}.js" > "${path}.min.js"
|
||||
mv "${path}.min.js" "${path}.js"
|
||||
done
|
||||
if [[ "$compress_js" -eq 1 ]]; then
|
||||
for path in "out/${EXTENSION_NAME}.safariextension/scripts"/*.js; do
|
||||
[[ $(basename $path) == "externs.js" ]] && continue
|
||||
path=${path%.*}
|
||||
${CCJS_PATH} \
|
||||
--compilationLevel ADVANCED \
|
||||
--warningLevel VERBOSE \
|
||||
--newTypeInf \
|
||||
--useTypesForOptimization \
|
||||
--externs "out/${EXTENSION_NAME}.safariextension/scripts/externs.js" \
|
||||
"${path}.js" > "${path}.min.js"
|
||||
mv "${path}.min.js" "${path}.js"
|
||||
done
|
||||
fi
|
||||
rm "out/${EXTENSION_NAME}.safariextension/scripts/externs.js"
|
||||
|
||||
# Update version info from git
|
||||
git=$(sh /etc/profile; which git)
|
||||
number_of_commits=$(($("$git" rev-list HEAD --count) + 1))
|
||||
git_release_version=$("$git" describe --tags --always --abbrev=0)
|
||||
git_release_version=${git_release_version%%-*};
|
||||
git_release_version=${git_release_version#*v};
|
||||
info_plist="out/${EXTENSION_NAME}.safariextension/Info.plist"
|
||||
update_plist="update.plist"
|
||||
${PLISTBUDDY_PATH} -c "Set :CFBundleVersion $number_of_commits" "$info_plist"
|
||||
${PLISTBUDDY_PATH} -c "Set :CFBundleShortVersionString ${git_release_version}" "$info_plist"
|
||||
${PLISTBUDDY_PATH} -c "Set \":Extension Updates:0:CFBundleVersion\" $number_of_commits" "$update_plist"
|
||||
${PLISTBUDDY_PATH} -c "Set \":Extension Updates:0:CFBundleShortVersionString\" ${git_release_version#*v}" "$update_plist"
|
||||
if [[ "$update_version" -eq 1 ]]; then
|
||||
git=$(sh /etc/profile; which git)
|
||||
number_of_commits=$(($("$git" rev-list HEAD --count) + 1))
|
||||
git_release_version=$("$git" describe --tags --always --abbrev=0)
|
||||
git_release_version=${git_release_version%%-*};
|
||||
git_release_version=${git_release_version#*v};
|
||||
info_plist="out/${EXTENSION_NAME}.safariextension/Info.plist"
|
||||
update_plist="update.plist"
|
||||
${PLISTBUDDY_PATH} -c "Set :CFBundleVersion $number_of_commits" "$info_plist"
|
||||
${PLISTBUDDY_PATH} -c "Set :CFBundleShortVersionString ${git_release_version}" "$info_plist"
|
||||
${PLISTBUDDY_PATH} -c "Set \":Extension Updates:0:CFBundleVersion\" $number_of_commits" "$update_plist"
|
||||
${PLISTBUDDY_PATH} -c "Set \":Extension Updates:0:CFBundleShortVersionString\" ${git_release_version#*v}" "$update_plist"
|
||||
fi
|
||||
|
||||
# Package safari extension
|
||||
cd out || exit
|
||||
if [ -f "${PRIVATE_KEY_PATH}" ]
|
||||
then
|
||||
[[ ${XARJS_PATH} != /* ]] && ! command -v "${XARJS_PATH}" >/dev/null 2>&1 && XARJS_PATH="../${XARJS_PATH}"
|
||||
cd out || exit
|
||||
if [[ "$package_ext" -eq 1 ]] && [[ -f "${PRIVATE_KEY_PATH}" ]]; then
|
||||
[[ ${XARJS_PATH} != /* ]] && ! type "${XARJS_PATH}" >/dev/null 2>&1 && XARJS_PATH="../${XARJS_PATH}"
|
||||
${XARJS_PATH} create "${EXTENSION_NAME}.safariextz" --cert "${LEAF_CERT_PATH}" --cert "${INTERMEDIATE_CERT_PATH}" --cert "${ROOT_CERT_PATH}" --private-key "${PRIVATE_KEY_PATH}" "${EXTENSION_NAME}.safariextension"
|
||||
rm -rf "${EXTENSION_NAME}.safariextension"
|
||||
fi
|
||||
|
||||
Binary file not shown.
+1
-1
@@ -10,7 +10,7 @@
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.2.3</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>67</string>
|
||||
<string>78</string>
|
||||
<key>Developer Identifier</key>
|
||||
<string>BQ6Q24MF9X</string>
|
||||
<key>URL</key>
|
||||
|
||||
Reference in New Issue
Block a user