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