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