From 04e90b213cbaa0469eafa4eb2615869400ffa35d Mon Sep 17 00:00:00 2001 From: amarcu5 Date: Wed, 6 Sep 2017 12:18:20 +0100 Subject: [PATCH] Updated build script Support added for command line options including release and debug profiles --- make.sh | 138 +++++++++++++++++++++++++++++++------------ out/PiPer.safariextz | Bin 9753 -> 9758 bytes update.plist | 2 +- 3 files changed, 102 insertions(+), 38 deletions(-) diff --git a/make.sh b/make.sh index d17da86..cf3c6d2 100755 --- a/make.sh +++ b/make.sh @@ -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 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 diff --git a/out/PiPer.safariextz b/out/PiPer.safariextz index 240001239df579256f15dd3b94cb9db8481dadf3..484d9e7f58fabb037024e93d6e9b1e9ad3095c63 100644 GIT binary patch delta 4934 zcmV-M6S?e}OrA`CcwurO02}}T00000000mR00000001Ih00001c$~#rS#z6M)4u0d zq;jiD#J)^<@)kQt0tp02a0iEd(FOv+um6thIAc4WWHK}L&4o+&EPdKMPe0v#tcU;I zn)*YZT-xGz`28dH8U6SnIe=qa9J1d(x{mUR{rJBx$ippvynI1Ee0b=N;Qk4pz$FPg zxam_@G|3kn#h6bh_X(vP4Eqg3eG1=6(}(u=k9pUfew)vSVfZ`{pO2Spj-x0# zN4Ys%5W};-9R>I9DU_4KF8pKY>!6rix*{z=*d<>KT~|U!6a_`i_(2!=OxHs}j*=+> z+s+sy%U>*yfu8rk8@iADW^!J$_Pilz4>o1Ue^VGL@#+$$f|Q*6)HEN!W}A}UyHoO^7jQ| zwuH|zj~bqa>(G<2qO^lwi4Z%bk0F z8@Jmfvu35`nDuFqmV16)aNa}^9$g?fz218Rm-$*Ra~IoL&bAl^ME$DjF;iJ(zc{j$ zkZ9(Z4fcAMtXg5ml*Mq&2z$dgW-mE^%|nGWOYzPrruaj|tH7Jrd#O1Vk!-3Xn&<`=>FCh;e%~Bz@5CL1v?CLGWdNWi#u| zl((FkKO5mDM(|9vXlde;NOKK-xHB-82U(a8mT2(&pbd|kOF_s6<;c5*2=-#w;HoOF znDv!LxGD~A-oiaHV8}9gb7z{it_e9f*c6O~2@qZv+!yc6 zGS~|!Tu?&c=z~H)L%1nc^BRWp513H^|)`pmKMM)bqw*zkq5KoP7LAm7td+^a?)1KkI&fAdJ{(=UrpX zxFUvF{edwQRVBy1VH^`Nv1*h7sJD96n0>V6p5TTjuO@!|D5{#p3Vh1S0&j={$q&jC zY&CCbbAd+(@f8A=ZU}}d7H4&+_do&h!0|Dwx$~{PI}zl6Wprwtlh%#fqq7=Z z1gbeJncAS#{#ws?QAApiNM|Y|bAwmb{C=uc}8Z{hYb%@rP zc=qRE=sJ!0Fn^nWX@8Q1W&JK1!}(hl=3|<@Np*J=_;<6gU&OBIJhXdB#ni zc>5_i938QGVwo=2SAQgLi;}ON=2}N{pXbaP2HObCM=y!r^V*fc$FV@V0J1 zezkCTTQ?xTS~x&WEM5i|a*r+H==`o)P1U?|eMpDh_TG*Kr=+3XkO1Ex*V2!Y*A)$DL>5mrjhrYrtZ5u$ZfR zQ)NAzI+(tIBj$OlWjm5Ax$L626tjr)ut#ZW@QH23xgm(W?65#5r`}U?of-Kh+etvH zV{~V_azP_Y7{ax_&uL>D-w(#sI^8g?w|pT?w=idjt!>M0LyyOG@xb-20}dz{%cG105|W>z)33!fPR&#Pq? z`a>2Pu$+6DAoc8^49%&_^Q@RnmunwrJK$}-<(e>f_GNxl4BohFCN%ISNiI3zWK%XS zrVJW?lIYc1Mud%Gb5S9ORra_x6+|#B9KJk?YKCZ}ABUQa0_oVVaC3~_q;$}5eGJPv z&#$9Dx zA-8%Bw3wO}^WfC2>lzTGA@tGmx@?rO4d*6*js!zo+)i+Hx1nM++54|70& zW|wBo6b!RE!RpmeeE3Qxi)A!-^iJmWG6RiAyYmWh63{fhcIr0`x{P%pX`*~}oN(R0 zC^N0hvyh&nlo+2wV!F&xQauF+L%7)|Z)$;m7LiUJHj?0`zpmxi32HgLe%5kWHN7p* zU4@r~!m!#wd}^9hd02SvBs&m%`BAff#N1duYt|MPKC4o04AFX;yBYEG+*_GK-ssd# zDPfWJD7l6sJqy3G=p(|)EL0vI`ya_4Oi9OJzk@<8H=Y`x$%PFNPu&L}$IACze(N#v zt1iFw82OpYZ>9IG@**#!x2nQwp;20-Rk1}6`)+?|G@I5gZ!0$rsoH#2_WXFHdgzBVEi#6HYU-`7dUzVgTu;c?ynVIYVnw;akF3fJ++F!5SQF7MC_SRFUjo9?_ z<@^?$26vGPG4JJa5}RwH7!3xo>5UhSPC;`j0ZevdC-PzJl`dI-6NkE(X8 zi1&fS1s80oSNcsOj^Vfgq>>@Gyo=egEqk^E)D!bNd9U=T(9M7 zUOQpkRfB3w@f^^?c-zt3af9d<6J8HS;4u5ZJj{h0+XpAAp^R$9;HGyw9O&G=fT#~l zaUtmE+rY+Mg@b*6v(dLCzen8Vd5OiBYHq>`dP;_P@8&;9O;1xVF909rU#}CN??1m? zR(>5wi#qvG#J_)haie+&o8-%;*d&+FZJ36aBDrM0B4q2Cf!8thj_4(y=cma9QC-JBEubw#qrDB4JQWTI82I7#z(j*~cI!;(F zW+K2*Gz}8)F#pcbt7G7My@a6q({reVCZm)N6DlPz7Khf+6vqKhQy52(5y1fv#bg{l z%)htv`k=3Wcl6KZ!_%q0a|c2?zkSN4;`DL;l1A|>3f;l@9#-OeSRv0oL&I(NFMvuh z-`$wM02QOKKSz}%(7%H!L=z+-7K12EXb?qcOkpST}1m~a1RVW{sJ^Fj$w_C3!0oHZnqpAH~O7kI;@ z41*>Vp3oQ-Lfwh6kWOhjWFiVsSWJPKU^#f=&v^68%z4Y5x9oWdH~kLWhonpE;`Z;t zP2U0gbGSL|9f9}*Zt{JJ_&JjY4fHk3=RAsWilZW^ z7%3D9=3Yb435t>_pjj*;5(*`gm`O11pYw=KVSYjBh$Rz@h!QLfu`neg8eo5D2tt}h z;ao&B+4WZ0Ji(&>(gF-Wgh5L9Lc&5AZb4%E5(m@C-miXZ1C`dF+LjSexLRKccDU zv9Wf@KLI7l_5-@zOEeLCckJp*z@(JxPC>-qGVH_}K0KkrRlZakoY;R~G+>N9*;no- z&{;H#`mhmqx3$=*Yp_Ls$s6|*YK_C9p*`>6VPDHfH7k3urX6VvQoEqJwPm(lAgTWp zYmWg~AMSGsg4DJTF*Y0!Bw-F7f!(ta+&B2%j7=7|Mh`fSDL!u_v(~<8Ebs6Aa0=Sjc|WOrX{OEmvN(As5_L$Z7Old*_#MiXOqO1mB#Zv84ZLg}!kH`V=kJ+-3PGqKYA@ z4ZJ^$&jd;kb=`l*OXK?M)z{094|l)+b11&ugxJ=3II0>h-c~~>Rmp8lwm;9%->|gY z0UBo+*l420Lg+OxG|_b?Y&vPQ2~hakWB=n-#&(Qfa6f0qki8xeMu)FVk3o#k!3=uz zF~atIwC@5DLZ*d)XUKi1t5h70<7M7(9a3F|-#}&3@K}Fp?uAborSb3=a{^o*);8sG z98Xf4(`DOkVov=W365rTm3HanNWOt&%6bT@eQQz(?QQ3@c9sqoEH!P{mge#^I;GricB#o~&&ct?h@dba=E5`E_@ zI{H=7E%s%?(>K^b5=bCGf;TAkMJocq*WZ%WcH3@GFEbM{4-Vm4vQnIrCo{`__}{gu zKXl3IT=2QrTK7fhdTN5<2etpkM}t^ zdoISC!H4PN!_(+KP0vaD1rC3Gx|^Cl+4}nXxyW{5dpRYaULQ>16pPa+{^-`t^!v-+ z7Y3gx7*4ZjV29TbyOTciaD+vJO(>q_W|qM)c5-|GUO>3S&0Q8FfA z-5R}Q`Lp>x(DM$Myd^7w#rIj@U&WE137P330`EJ2eC;`gZS=C`OP*!TCH^1)O*jW@ zVHP#U#aQ?KJbRp5NTT^Pw~dI|840xb5U6fus~#R~t{qUlL04vVq$+5*;VxiQWJA_f z9&=^B?-^?=^buU|;oK0ZHi3j2yVhm9jvMbB5kd_LVGRxCv08W0&d4m>8{l&jZp`~w zAqeq**51R@53yGDh?WD>a6oUAGHFQiXp}s@c^u1LkCnpNu=l;n`*ShSn<7{Z3)K=3 z-s8@jqwxbA!#6G!9y13H#+u7ljm*qa2%QM@oP zwQJB|IcQ7_pu#TND2GU-$_PiF-~987*L4AZ(M#SGvg(*uh067)aD$5Hmm+Vm{B41l z&Ed1mqlV||8&luvAtA2Kps3SuQVKf+>&{y*kQ?5$lot2_HfF0yxaa2KxFzW5x|p!x zYa>(G!!lURlwdx0%Z+<~ z9oFkPvt*_DkacO1mRo*WaNbA|9$g?fz1(^|m-$*Jb0^!GPu3U)ME#=bF;iJ(H`}w7 zkZ9(R_4aa;EY8A)DT{ue5%!9&j>rky+sqNgi@CL%jr$B8wjAb?$#QaVQM{|Gg|#Pl z`xB|1Dnqt*w09`C3nnPxS5h(?Mc8eB*d$I})^et@xa0ZhCL(lM*sN;$LZoLGuV#yV zxgCf#D#^WfW?GD|yY@7}hu+d9$OB&3le$2bqR7W&zp{LN-ur@Jxf*=?vf=QZA)=}% zo>ks*6=CFsyioSBX7|g2?T`pJM<7!9JwP7u?(Sn45##n?NP4f`g3Lyjg5b-4%4*V? zDQ`J7e>B2XjNqAS(bC8#k>(nFe`8=Q_p&hUEz#ilUh5w>mx7S>%AR)%5p2b!y_vgbK%Zsu>c%u}&CBpvy%C8oMQH3v6XG)9UBS?`EBuj!EIT1Wb`uF8 z-WImmAe^yVDA#$^n6<8Q7hSV|_uaPaZFDnTy?=oNg1U+Z>%AdJ{(<6UCS zxFCjDeZv@vs*+>R7{^3REE=T;>a|`pW*4owJKXT(#mFxoMOCv{flpak;0;kA`Chrh zR`ZrN6?n84Um;-WhG3{-aa7lOMEJO+LMFP82Kdb74IVOXeV>#p`Nl?`hb)C`4Zwsm z+J_U__n z(pqqqNk0&kn$u0N@(`(^#Y3}G<`TPhcN7qJ93QiqJ6+qG13{jD2B+3JY1z0PI;p`) zpqitSsSQePFZF~MMdU0J=|p8@uJ_8C-;Nb;wacR%pMv#O7}u43b%yMaQcF!<6(*gk z{Q}da;+oSfZ|sv0>Dp>;t>&wc(G9o5_p+;6yON}0g@`%rvtlvbVKR#z+KBn2LRJVJ9e>V&JrMxis>M_Y6LT-qjXI$lx zx9`be?}*i%Wx8Bn{DHjAO1`?!ogK}6nloz{YzHK0>e7D<3^KE}9*iz-fPq38w%;rK zW9o*Ihdrh4b%b*$+$exu;^0Pc8K&X2@JN1n=C}A(*rZEozwu1`)QVAf30TYyW>a-* zs;q}oJJT0%#5}IGY(tVImz@-sVrFq3b|@|NKC!MiHw2NF?Ploc)LTlfGb2A`8wqH2 zjBZRA3SZ&U0T zo-RA3^fCm!ge{BuhaoAYVp3DRddP$8W?)xD9WJiL7H3vXOmr%~npDl^#Ak-U^JCy$-26$_4z9bBueVHE>gEwxP2@SkSl57lW{bj8|U9}h9+@$=?#LC-yMx~SPX>JQn{pT(2S#GLEGu$uyZ zGCMU(reK)G0amYu;=@-mS}dcvgLg15rwM30+MQO2lYpl2wL`aR(0Qy2NfYIZ{fO)S zNttM6o`v)jrNsCc660x#lIkJY8N$^*c;gxPM-ge&ekBQR`ukdb8KIWb%O@>|Rnyz@ z+*NocC9s9_cge(mZO@#Q zoM0m*(n2;tCJH}82~If9N(u$A5E1Q@9E;^;Vny?_k=6l4OLJQ*u+CLVFb=G>ascUu zu{Kk;3k=y>45axaVhdNg)SH##p(eYrF#YN+6t9ZUltXY(CF`S)*Qs;y?%WvUy)mX{mNT@FWnW@ zxr>|&0fLe{^6`B!DJz-vuF4`$GW$D{457E5+Ljv+^qXsf1S8Vop9uq1RpA{`U`zgZ z>sy}N7TZrArCT%T#lR6rOn{4jr|reZxpsly+34eP_tf;f>Ur|xtDXn>m8R!MJrD9L zP0x>d9^_Y=o*(r*$gebiJwHfI05K1>vDg*_;|~$BGKpq7!_gh+9ac_rf2pWc#o1#z z9D|lGi_tv?{2E^{D4@Cv+E^=OAnKKA7R9Qo$tm9H!sN;={pG?PBxh-?uN`$*iA^`1 zPp`qDcW0>(^Ik3|vAHCQ!C(-ZUU|{r6f~z2z+_i;BJYMyX_F;?v1@IxJ(|~vUT){J zcpFGuaKh$#rC&8-9}X)(Dj9Ok+elnb*5@vl*RU;K&Pb1Q&?Xqfxq+Vu$zQC9%cWdQ zYbUJRs#lFMo&s7Jt{a-$uMpj0!pqJG9A+DsyQz?4+u%Solu<1h-1M%y9i6);5Oskm z&IJ8gVzr9@jcEL(e z6oU3I&!G~Uj8ZyGsFc8199lV*jN<>fIEM)K6IR3%p@chCvewPiTw^q3*<3NT)O%G7$wRET%wAupB(` zXT13(ZRWh?&Rh1pgqwZ`?p@NRb#eW7;iggMM{sl4I|A_yZjwO%9+M0YA%9S77#t8d zOfdutvkMhRDWH-lBmsmw3bBM_V-);UCjND}|4KTT@1)}lPQ{`9``W?2L#7lGsr=65 z-{ujH55tCrtKj#sf z;#`Wtd_pD|5hYj}Vqr=~G=IR*5QH?1!nufMxc^i(xOb3l!eaNYLQQhmkD$gdj3s^q zHh~e?-$R?GNS2BK4qbq$B8><((?HK}i`yY{q>Fr-e{tvR&dS|iUIDcE%BZ+5s|GOGT zYJ^?R^l)dCv}H8BQwjyuzi{XsY$^Sk2!_%t2sF88*^r9c)JCAv4d`0ml%gD9Udp}w zm5%5CjBk_Z9N}%a;IDz?B|5DtzgBhCSD&gUZ)NX2xf?IgoTj^nm)|Y1p*eYq(hiC@ zGBqIiS6_!HK`>Bl@_$`mot&mR0i}Djfs_HC0bKIv6;>^#bNB2%19r`BkY%}yo3}|H zJefZ&L3}D0ky}j3Ydyr!;4ab~&)&#X(9vEbbfR2ov!ryZ_QWK5`9=(C^2sJ|DCjM2$ zF0orAbhA4VR|0=*!{6Qrv~uCjJ7Sl%7My2>7tU_M7qo?M7284YhSV6^E_d76R!=15 z3je#G<-j33!H{f=h3r?&1X}%1?lES}qFLa21Bk2La^+PUa=~4NoJQZZcYX<{=n>pX z@XaY2OZuNy=o@FCPtjt{U6!9Bsu+^m!284aOrQi&*L{DyG_Jp1eZBnnaQFK^hvM5! zh;5yRqpIQJZ8d~amE6{3`|}L_4NJ=%pmCOgjV5X=gkA$f6J2M*rjtgS0ENFj_CH=_ zY{&Qo_j7g(+3OKubok2j7{mx2%%DdfBW%w{`z{b6WLgM#hTMm`O2y$gUgizgA=Op* z4OAu#kEMU+Uig$z8V`RlC&1-lZBs7C@g%i5UAFBe=G4!T;AloyX_sD(CFBundleShortVersionString 0.2.3 CFBundleVersion - 67 + 78 Developer Identifier BQ6Q24MF9X URL