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