Skip to content

Instantly share code, notes, and snippets.

@kbinani
Created July 24, 2013 14:29
Show Gist options
  • Save kbinani/6071073 to your computer and use it in GitHub Desktop.
Save kbinani/6071073 to your computer and use it in GitHub Desktop.
Get package id from a *.pkg file (Mac OSX).
#!/bin/bash
function get_package_id { (
readonly PKG_INFO=PackageInfo
local PKG=$(cd "$(dirname "$1")"; pwd)/$(basename "$1")
local EXCLUDES=
for FILE in $(xar -t -f "$PKG" | grep -v $PKG_INFO); do
EXCLUDES="$EXCLUDES --exclude $FILE"
done
local TEMP=$(mktemp -t hoge | tr -d '\r')
rm -rf "$TEMP"
mkdir -p "$TEMP"
cd "$TEMP"
xar -x -f "$PKG" $EXCLUDES
if [ ! -e "$PKG_INFO" ]; then
echo "error: can't find '$PKG_INFO'; maybe meta-package"
return 1
fi
cat $PKG_INFO | tr -d '\r' | tr -d '\n' | sed 's:^.*identifier="\([^"]*\)[.]pkg".*$:\1:g'
cd $(dirname "$TEMP")
rm -rf "$TEMP"
) }
get_package_id "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment