forked from hushin/SWF2PNGSequence
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·177 lines (149 loc) · 5.93 KB
/
build.sh
File metadata and controls
executable file
·177 lines (149 loc) · 5.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#!/usr/bin/env bash
set -euo pipefail
# ─── 設定 ───────────────────────────────────────────────
APP_NAME="SWF2PNGSequence"
SRC_DIR="src"
MAIN_MXML="${SRC_DIR}/${APP_NAME}.mxml"
APP_XML="${SRC_DIR}/${APP_NAME}-app.xml"
BIN_DEBUG="bin-debug"
BIN_RELEASE="bin-release"
CERT="sign.p12"
# FLEX_HOME チェック
check_flex_home() {
if [[ -z "${FLEX_HOME:-}" ]]; then
echo "ERROR: FLEX_HOME が設定されていません。" >&2
echo " export FLEX_HOME=/path/to/flex_sdk" >&2
exit 1
fi
if [[ ! -x "${FLEX_HOME}/bin/mxmlc" ]]; then
echo "ERROR: ${FLEX_HOME}/bin/mxmlc が見つかりません。" >&2
exit 1
fi
}
# ─── app.xml 生成 ───────────────────────────────────────
generate_app_xml() {
local air_version
air_version=$(bash "${FLEX_HOME}/bin/adt" -version | sed 's/\([0-9]*\)\..*/\1.0/')
mkdir -p "${BIN_DEBUG}"
sed -e 's|\[この値は Flash Builder の出力ファイル app.xml に上書きされます。\]|'"${APP_NAME}"'.swf|' \
-e 's|http://ns.adobe.com/air/application/[0-9.]*|http://ns.adobe.com/air/application/'"${air_version}"'|' \
"${APP_XML}" > "${BIN_DEBUG}/${APP_NAME}-app.xml"
echo ">>> app.xml 生成完了 (AIR namespace: ${air_version})"
}
# ─── compile ────────────────────────────────────────────
do_compile() {
local debug_flag="${1:-true}"
local output_dir="${BIN_DEBUG}"
check_flex_home
mkdir -p "${output_dir}"
echo ">>> コンパイル (debug=${debug_flag}) ..."
"${FLEX_HOME}/bin/mxmlc" \
+configname=air \
-source-path=src \
-source-path+=libs-src/Thread/src \
-source-path+=libs-src/swfassist-alpha/src \
-source-path+=libs-src/ForcibleLoader/src \
-library-path+=libs/blooddy_crypto_v0.5.4/blooddy_crypto.swc \
-locale=en_US \
-define=CONFIG::pro,true \
-define=CONFIG::trial,false \
-accessible=true \
-debug="${debug_flag}" \
-output="${output_dir}/${APP_NAME}.swf" \
"${MAIN_MXML}"
# app.xml を生成
generate_app_xml
echo ">>> コンパイル完了: ${output_dir}/${APP_NAME}.swf"
}
# ─── debug ──────────────────────────────────────────────
do_debug() {
do_compile true
echo ">>> デバッグ実行 ..."
"${FLEX_HOME}/bin/adl" "${BIN_DEBUG}/${APP_NAME}-app.xml"
}
# ─── package ────────────────────────────────────────────
do_package() {
check_flex_home
generate_app_xml
if [[ ! -f "${CERT}" ]]; then
echo "ERROR: 証明書 ${CERT} が見つかりません。先に ./build.sh gen-cert を実行してください。" >&2
exit 1
fi
if [[ ! -f "${BIN_DEBUG}/${APP_NAME}.swf" ]]; then
echo "ERROR: ${BIN_DEBUG}/${APP_NAME}.swf が見つかりません。先に ./build.sh compile を実行してください。" >&2
exit 1
fi
if [[ -z "${STORE_PASS:-}" ]]; then
echo -n "証明書のパスワードを入力: "
read -rs STORE_PASS
echo
fi
mkdir -p "${BIN_RELEASE}"
echo ">>> パッケージング ..."
"${FLEX_HOME}/bin/adt" -package \
-storetype pkcs12 -keystore "${CERT}" -storepass "${STORE_PASS}" \
"${BIN_RELEASE}/${APP_NAME}.air" \
"${BIN_DEBUG}/${APP_NAME}-app.xml" \
-C "${BIN_DEBUG}" "${APP_NAME}.swf" \
-C "${SRC_DIR}" image assets
echo ">>> パッケージ完了: ${BIN_RELEASE}/${APP_NAME}.air"
}
# ─── release ────────────────────────────────────────────
do_release() {
do_compile false
do_package
}
# ─── gen-cert ───────────────────────────────────────────
do_gen_cert() {
check_flex_home
if [[ -f "${CERT}" ]]; then
echo "WARNING: ${CERT} は既に存在します。上書きしますか? [y/N]"
read -r answer
if [[ "${answer}" != [yY] ]]; then
echo "中止しました。"
exit 0
fi
fi
if [[ -z "${STORE_PASS:-}" ]]; then
echo -n "証明書のパスワードを入力: "
read -rs STORE_PASS
echo
fi
echo ">>> セルフ署名証明書を生成 ..."
"${FLEX_HOME}/bin/adt" -certificate \
-cn "${APP_NAME} Developer" -validityPeriod 5 \
2048-RSA "${CERT}" "${STORE_PASS}"
echo ">>> 証明書生成完了: ${CERT}"
}
# ─── clean ──────────────────────────────────────────────
do_clean() {
echo ">>> クリーン ..."
rm -rf "${BIN_DEBUG}" "${BIN_RELEASE}"
echo ">>> ${BIN_DEBUG}, ${BIN_RELEASE} を削除しました。"
}
# ─── usage ──────────────────────────────────────────────
usage() {
cat <<EOS
Usage: ./build.sh <command>
Commands:
compile mxmlc で SWF をコンパイル (debug ビルド)
debug コンパイル + adl でデバッグ実行
package AIR パッケージ (.air) を作成
release コンパイル (release) + パッケージ
gen-cert セルフ署名証明書 (${CERT}) を生成
clean ${BIN_DEBUG}, ${BIN_RELEASE} を削除
Environment:
FLEX_HOME Apache Flex SDK のパス (必須)
STORE_PASS 証明書のパスワード (省略時は対話入力)
EOS
}
# ─── main ───────────────────────────────────────────────
case "${1:-}" in
compile) do_compile ;;
debug) do_debug ;;
package) do_package ;;
release) do_release ;;
gen-cert) do_gen_cert ;;
clean) do_clean ;;
*) usage ;;
esac