Skip to content

Commit 1a087ca

Browse files
authored
Merge branch 'master' into dev
2 parents 422b5b7 + cc37899 commit 1a087ca

File tree

1 file changed

+111
-65
lines changed

1 file changed

+111
-65
lines changed

source/build.sh

Lines changed: 111 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,72 @@
11
#!/bin/bash
22
set -e
3-
43
TRANSLATION_DIR="../Translations"
5-
TRANSLATION_SCRIPT="make_translation.py"
4+
#TRANSLATION_SCRIPT="make_translation.py"
65

76
# AVAILABLE_LANGUAGES will be calculating according to json files in $TRANSLATION_DIR
87
AVAILABLE_LANGUAGES=()
98
BUILD_LANGUAGES=()
109
AVAILABLE_MODELS=("TS100" "TS80" "TS80P" "Pinecil" "MHP30" "Pinecilv2")
1110
BUILD_MODELS=()
1211

12+
builder_info() {
13+
echo -e "
14+
********************************************
15+
IronOS Firmware
16+
builder for Miniware + Pine64
17+
18+
by Ralim
19+
********************************************"
20+
}
21+
22+
# Calculate available languages
23+
for f in "$TRANSLATION_DIR"/translation_*.json; do
24+
AVAILABLE_LANGUAGES+=("$(echo "$f" | tr "[:lower:]" "[:upper:]" | sed "s/[^_]*_//" | sed "s/\.JSON//g")")
25+
done
26+
1327
usage() {
14-
echo "Usage : $(basename "$0") [-l <LANG_CODE>] [-m <TS100|TS80|TS80P|Pinecil|MHP30>] [-h]
28+
builder_info
29+
echo -e "
30+
Usage :
31+
$(basename "$0") [-l <LANG_CODES>] [-m <MODELS>] [-h]
1532
1633
Parameters :
17-
-l LANG_CODE : Force a specific language (E.g. : EN, FR, NL_BE, ...)
18-
-m MODEL : Force a specific model (E.g. : TS100 or TS80)
34+
-l LANG_CODE : Force a specific language (${AVAILABLE_LANGUAGES[*]})
35+
-m MODEL : Force a specific model (${AVAILABLE_MODELS[*]})
1936
-h : Show this help message
2037
21-
INFO : By default, without parameters, the build is for all platforms and all languages" 1>&2
38+
Example :
39+
$(basename "$0") -l EN -m TS100 (Build one language and model)
40+
$(basename "$0") -l EN -m \"TS100 MHP30\" (Build one language and multi models)
41+
$(basename "$0") -l \"DE EN\" -m \"TS100 MHP30\" (Build multi languages and models)
42+
43+
INFO :
44+
By default, without parameters, the build is for all platforms and all languages
45+
46+
" 1>&2
2247
exit 1
2348
}
2449

50+
StartBuild(){
51+
read -n 1 -r -s -p $'Press Enter to start the building process...\n'
52+
}
53+
2554
checkLastCommand() {
2655
if [ $? -eq 0 ]; then
2756
echo " [Success]"
28-
echo "*********************************************"
57+
echo "********************************************"
2958
else
30-
forceExit
59+
forceExit "checkLastCommand"
3160
fi
3261
}
3362

3463
forceExit() {
35-
echo " [Error]"
36-
echo "*********************************************"
64+
if [ -n "$*" ]; then
65+
echo -e "\n\n [Error]: $*"
66+
else
67+
echo " [Error]"
68+
fi
69+
echo "********************************************"
3770
echo " -- Stop on error --"
3871
exit 1
3972
}
@@ -49,72 +82,86 @@ isInArray() {
4982
return 1
5083
}
5184

52-
while getopts h:l:m: option; do
85+
declare -a margs=()
86+
declare -a largs=()
87+
88+
while getopts "h:l:m:" option; do
5389
case "${option}" in
54-
h)
55-
usage
56-
;;
57-
l)
58-
LANGUAGEREQ=${OPTARG}
59-
;;
60-
m)
61-
MODEL=${OPTARG}
62-
;;
63-
*)
64-
usage
90+
h)
91+
usage
92+
;;
93+
l)
94+
set -f
95+
IFS=' '
96+
largs=($OPTARG)
97+
;;
98+
m)
99+
set -f
100+
IFS=' '
101+
margs=($OPTARG)
102+
;;
103+
*)
104+
usage
65105
;;
66106
esac
67107
done
68108
shift $((OPTIND - 1))
69-
70-
echo "*********************************************"
71-
echo " Builder for the"
72-
echo " Alternate Open Source Firmware"
73-
echo " for Miniware + Pine64"
74-
echo " by Ralim"
75-
echo " "
76-
echo "*********************************************"
77-
78-
# Calculate available languages
79-
for f in "$TRANSLATION_DIR"/translation_*.json; do
80-
AVAILABLE_LANGUAGES+=("$(echo "$f" | tr "[:lower:]" "[:upper:]" | sed "s/[^_]*_//" | sed "s/\.JSON//g")")
81-
done
109+
builder_info
82110

83111
# Checking requested language
84-
echo "Available languages :"
85-
echo " ${AVAILABLE_LANGUAGES[*]}"
86-
echo "Requested languages :"
87-
if [ -n "$LANGUAGEREQ" ]; then
88-
if isInArray "$LANGUAGEREQ" "${AVAILABLE_LANGUAGES[@]}"; then
89-
echo " $LANGUAGEREQ"
90-
BUILD_LANGUAGES+=("$LANGUAGEREQ")
91-
else
92-
echo " $LANGUAGEREQ doesn't exist"
93-
forceExit
94-
fi
95-
else
96-
echo " [ALL LANGUAGES]"
112+
echo -n "Available languages :"
113+
echo " ${AVAILABLE_LANGUAGES[*]}"
114+
echo -n "Requested languages : "
115+
if ((${#largs[@]})); then
116+
for i in "${largs[@]}"; do
117+
i=$(echo "${i}" | tr '[:lower:]' '[:upper:]')
118+
if isInArray "$i" "${AVAILABLE_LANGUAGES[@]}"; then
119+
echo -n "$i "
120+
BUILD_LANGUAGES+=("$i")
121+
else
122+
forceExit "Language '$i' is unknown. Check and use only from the available languages."
123+
fi
124+
done
125+
echo ""
126+
fi
127+
if [ -z "$BUILD_LANGUAGES" ]; then
128+
echo " No custom languages selected."
129+
echo " Building: [ALL LANGUAGES]"
97130
BUILD_LANGUAGES+=("${AVAILABLE_LANGUAGES[@]}")
98131
fi
99-
echo "*********************************************"
132+
echo "********************************************"
100133

101134
# Checking requested model
102-
echo "Available models :"
103-
echo " ${AVAILABLE_MODELS[*]}"
104-
echo "Requested models :"
105-
if [ -n "$MODEL" ]; then
106-
if isInArray "$MODEL" "${AVAILABLE_MODELS[@]}"; then
107-
echo " $MODEL"
108-
BUILD_MODELS+=("$MODEL")
109-
else
110-
echo " $MODEL doesn't exist"
111-
forceExit
112-
fi
113-
else
114-
echo " [ALL MODELS]"
135+
echo -n "Available models :"
136+
echo " ${AVAILABLE_MODELS[*]}"
137+
echo -n "Requested models : "
138+
if ((${#margs[@]})); then
139+
for i in "${margs[@]}"; do
140+
141+
if [[ "$i" != "Pinecil" ]] && [[ "$i" != "Pinecilv2" ]]; then # Dirty. Need to adapt the Build process to use upper cases only
142+
i=$(echo "${i}" | tr '[:lower:]' '[:upper:]')
143+
fi
144+
145+
if isInArray "$i" "${AVAILABLE_MODELS[@]}"; then
146+
echo -n "$i "
147+
BUILD_MODELS+=("$i")
148+
else
149+
forceExit "Model '$i' is unknown. Check and use only from the available models."
150+
fi
151+
done
152+
echo ""
153+
fi
154+
155+
if [ -z "$BUILD_MODELS" ]; then
156+
echo " No custom models selected."
157+
echo " Building: [ALL MODELS]"
115158
BUILD_MODELS+=("${AVAILABLE_MODELS[@]}")
116159
fi
117-
echo "*********************************************"
160+
161+
echo "********************************************"
162+
163+
##
164+
#StartBuild
118165

119166
if [ ${#BUILD_LANGUAGES[@]} -gt 0 ] && [ ${#BUILD_MODELS[@]} -gt 0 ]; then
120167
echo "Cleaning previous builds"
@@ -129,8 +176,7 @@ if [ ${#BUILD_LANGUAGES[@]} -gt 0 ] && [ ${#BUILD_MODELS[@]} -gt 0 ]; then
129176
checkLastCommand
130177
done
131178
else
132-
echo "Nothing to build. (no model or language specified)"
133-
forceExit
179+
forceExit "Nothing to build. (no model or language specified)"
134180
fi
135181
echo " -- Firmwares successfully generated --"
136182
echo "End..."

0 commit comments

Comments
 (0)