1#!/bin/sh
2
3if [ $# != 2 ]; then
4    echo
5    echo "Usage: Make_MI_dmg.sh kind version"
6    echo
7    exit 1
8fi
9
10KIND="$1"
11VERSION="$2"
12
13if [ "$KIND" = "CLI" ] || [ "$KIND" = "cli" ]; then
14    KIND="CLI"
15elif [ "$KIND" = "GUI" ] || [ "$KIND" = "gui" ]; then
16    KIND="GUI"
17else
18    echo
19    echo "KIND must be either [CLI | cli] or [GUI | gui]"
20    echo
21    exit 1
22fi
23
24APPNAME="MediaInfo"
25APPNAME_lower=`echo ${APPNAME} |awk '{print tolower($0)}'`
26KIND_lower=`echo ${KIND} |awk '{print tolower($0)}'`
27SIGNATURE="MediaArea.net"
28FILES="tmp-${APPNAME}_${KIND}"
29TEMPDMG="tmp-${APPNAME}_${KIND}.dmg"
30FINALDMG="${APPNAME}_${KIND}_${VERSION}_Mac.dmg"
31
32# Clean up
33rm -fr "${FILES}-Root"
34rm -fr "${FILES}"
35rm -f "${APPNAME}.pkg"
36rm -f "${TEMPDMG}"
37rm -f "${FINALDMG}"
38
39echo
40echo ========== Create the package ==========
41echo
42
43mkdir -p "${FILES}/.background"
44cp ../../License.html "${FILES}"
45cp "../../Release/ReadMe_${KIND}_Mac.txt" "${FILES}/ReadMe.txt"
46cp "../../History_${KIND}.txt" "${FILES}/History.txt"
47cp Logo_White.icns "${FILES}/.background"
48
49if [ "$KIND" = "CLI" ]; then
50
51    cd ../GNU/CLI
52    if test -e ".libs/${APPNAME_lower}"; then
53        mv -f ".libs/${APPNAME_lower}" .
54    fi
55    if ! test -x "${APPNAME_lower}"; then
56        echo
57        echo "${APPNAME_lower} can’t be found, or this file isn’t a executable."
58        echo
59        exit 1
60    fi
61    strip -u -r "${APPNAME_lower}"
62    cd ../../Mac
63
64    mkdir -p "${FILES}-Root/usr/local/bin"
65    cp "../GNU/CLI/${APPNAME_lower}" "${FILES}-Root/usr/local/bin"
66    codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}-Root/usr/local/bin/${APPNAME_lower}"
67
68    pkgbuild --root "${FILES}-Root" --identifier "net.mediaarea.${APPNAME_lower}.mac-${KIND_lower}" --sign "Developer ID Installer: ${SIGNATURE}" --version "${VERSION}" "${FILES}/${APPNAME_lower}.pkg"
69    codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}/${APPNAME_lower}.pkg"
70
71fi
72
73if [ "$KIND" = "GUI" ]; then
74
75    cd ../GNU/GUI
76    if test -e ".libs/${APPNAME_lower}-${KIND_lower}"; then
77        mv -f ".libs/${APPNAME_lower}-${KIND_lower}" .
78    fi
79    if ! test -x "${APPNAME_lower}-${KIND_lower}"; then
80        echo
81        echo "${APPNAME_lower}-${KIND_lower} can’t be found, or this file isn’t a executable."
82        echo
83        exit 1
84    fi
85    strip -u -r "${APPNAME_lower}-${KIND_lower}"
86    cd ../../Mac
87
88    mkdir -p "${FILES}/${APPNAME}.app/Contents/MacOS"
89    mkdir "${FILES}/${APPNAME}.app/Contents/Resources"
90    cp "../GNU/GUI/${APPNAME_lower}-${KIND_lower}" "${FILES}/${APPNAME}.app/Contents/MacOS/${APPNAME}"
91    cp Info.plist "${FILES}/${APPNAME}.app/Contents"
92    sed -i '' -e "s/VERSION/${VERSION}/g" "${FILES}/${APPNAME}.app/Contents/Info.plist"
93    echo -n 'APPL????' > "${FILES}/${APPNAME}.app/Contents/PkgInfo"
94    cp ${APPNAME}.icns "${FILES}/${APPNAME}.app/Contents/Resources"
95
96    codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}/${APPNAME}.app/Contents/MacOS/${APPNAME}"
97    codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}/${APPNAME}.app"
98
99fi
100
101echo
102echo ========== Create the disk image ==========
103echo
104
105# Check if an old image isn't already attached
106DEVICE=$(hdiutil info |grep -B 1 "/Volumes/${APPNAME}" |egrep '^/dev/' | sed 1q | awk '{print $1}')
107test -e "$DEVICE" && hdiutil detach -force "${DEVICE}"
108
109hdiutil create "${TEMPDMG}" -ov -fs HFS+ -format UDRW -volname "${APPNAME}" -srcfolder "${FILES}"
110DEVICE=$(hdiutil attach -readwrite -noverify "${TEMPDMG}" | egrep '^/dev/' | sed 1q | awk '{print $1}')
111sleep 2
112
113cd "/Volumes/${APPNAME}"
114if [ "$KIND" = "GUI" ]; then
115    ln -s /Applications
116fi
117test -e .DS_Store && rm -fr .DS_Store
118cd - >/dev/null
119
120. Osascript_${KIND}.sh
121osascript_Function
122
123hdiutil detach "${DEVICE}"
124sleep 2
125
126echo
127echo ========== Convert to compressed image ==========
128echo
129hdiutil convert "${TEMPDMG}" -format UDBZ -o "${FINALDMG}"
130
131codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FINALDMG}"
132
133unset -v APPNAME APPNAME_lower KIND KIND_lower VERSION SIGNATURE
134unset -v TEMPDMG FINALDMG FILES DEVICE
135