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