#!/bin/bash -x # mkdmg - create a dmg disk image from app, pkg mpkg or directory # # intended for smallish packages in Munki repo # # cudos https://github.com/hjuutilainen wrap-dmg.py # # 2016-02-24, LTu if [ "1" -ne "$#" ] # wrong count of command line arguments then echo "usage: $0 app-pkg-mpkg-or-folder" elif [[ -e $1 && $1 =~ .*\.app$ || $1 =~ .*\.app/$ || $1 =~ .*\.pkg$ || $1 =~ .*\.mpkg$ || -d $1 ]] then # attempt image file creation name=$( basename $1 | sed -e 's/\..*$//' ) tmpdir=$( uuidgen ) mkdir $tmpdir version=$( awk ' /rtVer/ { # extract .app version... getline gsub( /^[ \t]+|<.*$/, "" ) print exit } ' ${1}/Contents/Info.plist \ || \ echo X.y # ...or default to X.y ) # hdiutil likes directory contents to be similar to .dmg contents tar -cf - -- "$1" | (cd $tmpdir && tar -x) hdiutil create -srcFolder $tmpdir \ -format UDZO \ -volname $name \ -uid 99 \ -gid 99 \ -mode 555 \ -noscrub \ ${name}-${version}.dmg rm -rf $tmpdir else echo "\"$1\" not found or not .app, .pkg, .mpkg or folder" fi