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