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