1*c54f35caSApple OSS Distributions#!/bin/sh 2*c54f35caSApple OSS Distributions 3*c54f35caSApple OSS Distributionsset -e 4*c54f35caSApple OSS Distributions 5*c54f35caSApple OSS Distributionsif [ $# -lt 3 ]; then 6*c54f35caSApple OSS Distributions echo "Usage: $0 output.plist Info.plist input1.exports [input2.exports ... ]" 1>&2 7*c54f35caSApple OSS Distributions exit 1 8*c54f35caSApple OSS Distributionsfi 9*c54f35caSApple OSS Distributions 10*c54f35caSApple OSS DistributionsOUTPUT="$1" 11*c54f35caSApple OSS DistributionsPLIST="$2" 12*c54f35caSApple OSS Distributionsif [ "${OUTPUT##*.}" != "plist" -o "${PLIST##*.}" != "plist" ]; then 13*c54f35caSApple OSS Distributions echo "Usage: $0 output.plist Info.plist input1.exports [input2.exports ... ]" 1>&2 14*c54f35caSApple OSS Distributions exit 1 15*c54f35caSApple OSS Distributionsfi 16*c54f35caSApple OSS Distributionsshift 2 17*c54f35caSApple OSS Distributions 18*c54f35caSApple OSS Distributionsif [ $(egrep -c 'CFBundleIdentifier|OSBundleCompatibleVersion|CFBundleVersion' $PLIST) -lt 3 ]; then 19*c54f35caSApple OSS Distributions echo "error: Invalid input Info.plist $PLIST" 1>&2 20*c54f35caSApple OSS Distributions exit 1 21*c54f35caSApple OSS Distributionsfi 22*c54f35caSApple OSS Distributions 23*c54f35caSApple OSS Distributionsprintf \ 24*c54f35caSApple OSS Distributions'<?xml version="1.0" encoding="UTF-8"?> 25*c54f35caSApple OSS Distributions<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 26*c54f35caSApple OSS Distributions<plist version="1.0"> 27*c54f35caSApple OSS Distributions<dict> 28*c54f35caSApple OSS Distributions' > "$OUTPUT" 29*c54f35caSApple OSS Distributions 30*c54f35caSApple OSS Distributionsawk ' 31*c54f35caSApple OSS Distributions /CFBundleIdentifier|OSBundleCompatibleVersion|CFBundleVersion/ { 32*c54f35caSApple OSS Distributions print; getline; print 33*c54f35caSApple OSS Distributions } 34*c54f35caSApple OSS Distributions' $PLIST >> "$OUTPUT" 35*c54f35caSApple OSS Distributions 36*c54f35caSApple OSS Distributionssort -u "$@" | awk -F: ' 37*c54f35caSApple OSS Distributions BEGIN { 38*c54f35caSApple OSS Distributions print " <key>Symbols</key>" 39*c54f35caSApple OSS Distributions print " <array>" 40*c54f35caSApple OSS Distributions } 41*c54f35caSApple OSS Distributions $2 ~ /^_/ { 42*c54f35caSApple OSS Distributions print " <dict>" 43*c54f35caSApple OSS Distributions print " <key>SymbolName</key>" 44*c54f35caSApple OSS Distributions print " <string>"$1"</string>" 45*c54f35caSApple OSS Distributions print " <key>AliasTarget</key>" 46*c54f35caSApple OSS Distributions print " <string>"$2"</string>" 47*c54f35caSApple OSS Distributions print " </dict>" 48*c54f35caSApple OSS Distributions next 49*c54f35caSApple OSS Distributions } 50*c54f35caSApple OSS Distributions $1 ~ /^_.*\*$/ { 51*c54f35caSApple OSS Distributions print " <dict>" 52*c54f35caSApple OSS Distributions print " <key>SymbolPrefix</key>" 53*c54f35caSApple OSS Distributions print " <string>"substr($1, 1, length($1) - 1)"</string>" 54*c54f35caSApple OSS Distributions print " </dict>" 55*c54f35caSApple OSS Distributions next 56*c54f35caSApple OSS Distributions } 57*c54f35caSApple OSS Distributions $1 ~ /^_/ { 58*c54f35caSApple OSS Distributions print " <dict>" 59*c54f35caSApple OSS Distributions print " <key>SymbolName</key>" 60*c54f35caSApple OSS Distributions print " <string>"$1"</string>" 61*c54f35caSApple OSS Distributions print " </dict>" 62*c54f35caSApple OSS Distributions next 63*c54f35caSApple OSS Distributions } 64*c54f35caSApple OSS Distributions END { 65*c54f35caSApple OSS Distributions print " </array>" 66*c54f35caSApple OSS Distributions } 67*c54f35caSApple OSS Distributions' >> "$OUTPUT" 68*c54f35caSApple OSS Distributions 69*c54f35caSApple OSS Distributionsprintf \ 70*c54f35caSApple OSS Distributions'</dict> 71*c54f35caSApple OSS Distributions</plist> 72*c54f35caSApple OSS Distributions' >> "$OUTPUT" 73*c54f35caSApple OSS Distributions 74*c54f35caSApple OSS Distributionsexit 0 75