OSDN Git Service

dmgおよびzipの生成用バッチの作成
[charactermanaj/CharacterManaJ.git] / dist / build_dmg.sh
1 #! /bin/bash
2 # -*- coding: utf-8 -*-
3
4 if [ ! -d "java6mac" -o ! -d "java8mac" ]; then
5     echo "java6mac/java8mac folder not found." >&2
6     exit 1
7 fi
8
9 # バージョン情報をプロパティファイルより抜き出す
10 VERSION=$(cat ../resources/version.properties | sed -n -E 's/.$//;s/implements_version=([0123456789.]+)/\1/p')
11 echo "version=($VERSION)"
12
13 # 生成するDMG名
14 DMG_NAME="CharacterManaJ_${VERSION}"
15 echo "DMG_NAME=${DMG_NAME}.dmg"
16
17 # 作成に一時使用するDMG名
18 WORK_DMG_NAME="${DMG_NAME}_work"
19 echo "WORK_DMG_NAME=${WORK_DMG_NAME}.dmg"
20
21 # ボリューム名
22 VOLUME_NAME="CharacterManaJ Ver${VERSION}"
23
24 # 一時DMGの削除
25 if [ -f "$TMPDIR/${WORK_DMG_NAME}.dmg" ]; then
26    rm -frv "$TMPDIR/${WORK_DMG_NAME}.dmg"
27 fi
28
29 # 一時DMGの作成
30 hdiutil create -size 50m -fs HFS+ -volname "$VOLUME_NAME" -layout NONE -type UDIF "$TMPDIR/${WORK_DMG_NAME}.dmg"
31
32 # 一時DMGのマウント
33 hdiutil attach "$TMPDIR/${WORK_DMG_NAME}.dmg"
34
35 # マウント先
36 DIST_DIR="/Volumes/${VOLUME_NAME}"
37
38 # 配布物のコピー
39 cp -v README_mac.txt "$DIST_DIR/README.txt"
40 cp -v CharacterManaJ.jar "$DIST_DIR/"
41
42 # 配布物(java6)のコピー
43 echo "copy: java6mac $DIST_DIR/java6mac"
44 cp -rp java6mac "$DIST_DIR/java6mac"
45
46 # 配布物(java8)のコピー
47 echo "copy: java8mac/CharacterManaJ.app $DIST_DIR/"
48 cp -rp java8mac/CharacterManaJ.app "$DIST_DIR/"
49
50 # 配布先に移動
51 pushd "$DIST_DIR"
52
53 echo "*create hardlink"
54
55 # jarファイルをハードリンクにする
56 ln -fv CharacterManaJ.jar java6mac/CharacterManaJ.app/Contents/Resources/Java/CharacterManaJ.jar 
57
58 ln -fv CharacterManaJ.jar CharacterManaJ.app/Contents/Java/CharacterManaJ.jar 
59
60 popd
61
62 # 一時DMGのデタッチ
63 hdiutil detach "$DIST_DIR"
64
65 # 配布用DMGの削除
66 if [ -f "$TMPDIR/${DMG_NAME}.dmg" ]; then
67     rm -f "$TMPDIR/${DMG_NAME}.dmg"
68 fi
69
70 # 一時DMGから圧縮単一ファイル型の配布用DMGに変換
71 # (convertはHFS+ディスク上で作業する必要がある)
72 hdiutil convert "$TMPDIR/${WORK_DMG_NAME}.dmg" -format UDZO -imagekey zlib-level=9 -o "$TMPDIR/${DMG_NAME}.dmg"
73
74 # 作業済み一時DMGの削除
75 rm -fv "$TMPDIR/${WORK_DMG_NAME}.dmg"
76
77 # 配布用DMGのテンポラリからの移動
78 mv -fv "$TMPDIR/${DMG_NAME}.dmg" .
79
80 echo "done"