-
-
Save brockers/043410a482bd0e445a1c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
platforms/ | |
plugins/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# ---- | |
# Text Colors and Messaging Functions | |
scriptName=$(basename $0) | |
textReset=$(tput sgr0) | |
textRed=$(tput setaf 1) | |
textGreen=$(tput setaf 2) | |
textYellow=$(tput setaf 3) | |
message_info () { | |
echo "$textGreen[$scriptName]$textReset $1" | |
} | |
message_warn () { | |
echo "$textYellow[$scriptName]$textReset $1" | |
} | |
message_error () { | |
echo "$textRed[$scriptName]$textReset $1" | |
} | |
# ---- | |
# Help Output | |
show_help () { | |
echo "" | |
message_info "$scriptName performs the necessary command-line operations for this app." | |
message_info "" | |
message_info "The following options are available:" | |
message_info "" | |
message_info " -c (--clean): Removes generated directories and content. Combine with -i." | |
message_info " -h (--help): Displays this help message." | |
message_info " -i (--init): Runs all operations necessary for initialization." | |
message_info " -m (--merge): Merges content of 'platform-merges' with 'platform'." | |
message_info " -n (--icons): Copies icon and splash screen images to platform directories." | |
message_info " -p (--plugins): (Re)Installs all plugins." | |
message_info " -u (--update): Update platform codebase, runs 'cordova prepare'." | |
message_info "" | |
message_info "Examples:" | |
message_info "" | |
message_info " ./$scriptName # This is the same as using the -i option." | |
message_info " ./$scriptName -c -i" | |
echo "" | |
} | |
# ---- | |
# Script Option Parsing | |
init=0; | |
merge=0; | |
plugins=0; | |
icons=0; | |
clean=0; | |
update=0; | |
ios_option=0; | |
while :; do | |
case $1 in | |
-h | --help | -\?) | |
show_help | |
exit 0 | |
;; | |
-i | --init) | |
init=1 | |
;; | |
-m | --merge) | |
merge=1 | |
;; | |
-p | --plugins) | |
plugins=1 | |
;; | |
-n | --icons) | |
icons=1 | |
;; | |
-c | --clean) | |
clean=1 | |
;; | |
-u | --update) | |
update=1 | |
;; | |
--) # End of all options | |
break | |
;; | |
-*) | |
echo "" | |
message_error "WARN: Unknown option (ignored): $1" | |
show_help | |
exit 1 | |
;; | |
*) # no more options. Stop while loop | |
break | |
;; | |
esac | |
shift | |
done | |
if [[ $merge = 0 ]] && [[ $plugins = 0 ]] && [[ $icons = 0 ]] && [[ $clean = 0 ]] && [[ $update = 0 ]] ; then | |
# If no options specified then we're doing initialization. | |
init=1 | |
fi | |
# ---- | |
# Clean | |
if [[ $clean = 1 ]] ; then | |
if [[ -d "plugins" ]] ; then | |
message_info "Removing 'plugins' directory." | |
rm -rf plugins | |
fi | |
if [[ -d "platforms" ]] ; then | |
message_info "Removing 'platforms' directory." | |
rm -rf platforms | |
fi | |
fi | |
if [[ $merge = 0 ]] && [[ $plugins = 0 ]] && [[ $icons = 0 ]] && [[ $init = 0 ]] && [[ $update = 0 ]] ; then | |
exit 0 | |
fi | |
# ---- | |
# Make sure necessary directories exist, regardless of options. | |
if [[ ! -d "plugins" ]] ; then | |
message_info "Creating 'plugins' directory." | |
mkdir plugins | |
fi | |
if [[ ! -d "platforms" ]] ; then | |
message_info "Creating 'platforms' directory." | |
mkdir platforms | |
fi | |
# ---- | |
# Add platforms | |
if [[ $init = 1 ]] ; then | |
# TODO Check if platforms have already been added | |
# 'cordova platforms' | |
message_info "Adding Android platform..." | |
cordova platform add android | |
if [[ $ios_option = 1 ]] ; then | |
message_info "Adding iOS platform..." | |
cordova platform add ios | |
fi | |
fi | |
# ---- | |
# Merge platform overrides. | |
if [[ $init = 1 ]] || [[ $merge = 1 ]] ; then | |
message_info "Merging Android platform customizations..." | |
cp -R platform-merges/android/* platforms/android/ | |
if [[ $ios_option = 1 ]] ; then | |
message_info "Merging iOS platform customizations..." | |
cp -R platform-merges/ios/* platforms/ios/ | |
fi | |
fi | |
# ---- | |
# Copy App Icons and Splash Screen Images | |
if [[ $init = 1 ]] || [[ $icons = 1 ]] ; then | |
# This would probably be better if we parsed www/config.xml, | |
# but for now we know the files and where they need to go. | |
message_info "Copying Android app icons and splash screen images..." | |
cp www/res/icon/android/icon-36-ldpi.png platforms/android/res/drawable-ldpi/icon.png | |
cp www/res/icon/android/icon-48-mdpi.png platforms/android/res/drawable-mdpi/icon.png | |
cp www/res/icon/android/icon-72-hdpi.png platforms/android/res/drawable-hdpi/icon.png | |
cp www/res/icon/android/icon-96-xhdpi.png platforms/android/res/drawable-xhdpi/icon.png | |
cp www/res/icon/android/icon-96-xhdpi.png platforms/android/res/drawable/icon.png | |
cp www/res/screen/android/screen-ldpi-portrait.png platforms/android/res/drawable-ldpi/screen.png | |
cp www/res/screen/android/screen-mdpi-portrait.png platforms/android/res/drawable-mdpi/screen.png | |
cp www/res/screen/android/screen-hdpi-portrait.png platforms/android/res/drawable-hdpi/screen.png | |
cp www/res/screen/android/screen-xhdpi-portrait.png platforms/android/res/drawable-xhdpi/screen.png | |
cp www/res/screen/android/screen-xhdpi-portrait.png platforms/android/res/drawable/screen.png | |
if [[ $ios_option = 1 ]] ; then | |
message_info "Copying iOS app icons and splash screen images..." | |
cp www/res/icon/ios/icon-57.png platforms/ios/Project/Resources/icons/icon.png | |
cp www/res/icon/ios/icon-57-2x.png platforms/ios/Project/Resources/icons/icon@2x.png | |
cp www/res/icon/ios/icon-72.png platforms/ios/Project/Resources/icons/icon-72.png | |
cp www/res/icon/ios/icon-72-2x.png platforms/ios/Project/Resources/icons/icon-72@2x.png | |
cp www/res/screen/ios/screen-iphone-portrait.png platforms/ios/Project/Resources/splash/Default~iphone.png | |
cp www/res/screen/ios/screen-iphone-portrait-2x.png platforms/ios/Project/Resources/splash/Default@2x~iphone.png | |
cp www/res/screen/ios/screen-iphone-portrait-568h-2x.png platforms/ios/Project/Resources/splash/Default-568h@2x~iphone.png | |
cp www/res/screen/ios/screen-ipad-portrait.png platforms/ios/Project/Resources/splash/Default-Portrait~ipad.png | |
cp www/res/screen/ios/screen-ipad-portrait-2x.png platforms/ios/Project/Resources/splash/Default-Portrait@2x~ipad.png | |
cp www/res/screen/ios/screen-ipad-landscape.png platforms/ios/Project/Resources/splash/Default-Landscape~ipad.png | |
cp www/res/screen/ios/screen-ipad-landscape-2x.png platforms/ios/Project/Resources/splash/Default-Landscape@2x~ipad.png | |
fi | |
fi | |
# ---- | |
# Add Plugins | |
if [[ $init = 1 ]] || [[ $plugins = 1 ]] ; then | |
message_info "Adding Device Plugin..." | |
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git | |
message_info "Adding Network Information Plugin..." | |
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git | |
message_info "Adding Geolocation Plugin..." | |
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git | |
message_info "Adding Splashscreen Plugin..." | |
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git | |
fi | |
# ---- | |
# Prepare Platforms | |
if [[ $init = 1 ]] || [[ $update = 1 ]] ; then | |
message_info "Syncing 'www' with Android platform..." | |
cordova prepare android | |
if [[ $ios_option = 1 ]] ; then | |
message_info "Syncing 'www' with iOS platform..." | |
cordova prepare ios | |
fi | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment