1
1
#! /bin/bash
2
2
set -e
3
-
4
3
TRANSLATION_DIR=" ../Translations"
5
- TRANSLATION_SCRIPT=" make_translation.py"
4
+ # TRANSLATION_SCRIPT="make_translation.py"
6
5
7
6
# AVAILABLE_LANGUAGES will be calculating according to json files in $TRANSLATION_DIR
8
7
AVAILABLE_LANGUAGES=()
9
8
BUILD_LANGUAGES=()
10
9
AVAILABLE_MODELS=(" TS100" " TS80" " TS80P" " Pinecil" " MHP30" " Pinecilv2" )
11
10
BUILD_MODELS=()
12
11
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
+
13
27
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]
15
32
16
33
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[*]} )
19
36
-h : Show this help message
20
37
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
22
47
exit 1
23
48
}
24
49
50
+ StartBuild (){
51
+ read -n 1 -r -s -p $' Press Enter to start the building process...\n '
52
+ }
53
+
25
54
checkLastCommand () {
26
55
if [ $? -eq 0 ]; then
27
56
echo " [Success]"
28
- echo " ********************************************* "
57
+ echo " ********************************************"
29
58
else
30
- forceExit
59
+ forceExit " checkLastCommand "
31
60
fi
32
61
}
33
62
34
63
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 " ********************************************"
37
70
echo " -- Stop on error --"
38
71
exit 1
39
72
}
@@ -49,72 +82,86 @@ isInArray() {
49
82
return 1
50
83
}
51
84
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
53
89
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
65
105
;;
66
106
esac
67
107
done
68
108
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
82
110
83
111
# 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]"
97
130
BUILD_LANGUAGES+=(" ${AVAILABLE_LANGUAGES[@]} " )
98
131
fi
99
- echo " ********************************************* "
132
+ echo " ********************************************"
100
133
101
134
# 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]"
115
158
BUILD_MODELS+=(" ${AVAILABLE_MODELS[@]} " )
116
159
fi
117
- echo " *********************************************"
160
+
161
+ echo " ********************************************"
162
+
163
+ # #
164
+ # StartBuild
118
165
119
166
if [ ${# BUILD_LANGUAGES[@]} -gt 0 ] && [ ${# BUILD_MODELS[@]} -gt 0 ]; then
120
167
echo " Cleaning previous builds"
@@ -129,8 +176,7 @@ if [ ${#BUILD_LANGUAGES[@]} -gt 0 ] && [ ${#BUILD_MODELS[@]} -gt 0 ]; then
129
176
checkLastCommand
130
177
done
131
178
else
132
- echo " Nothing to build. (no model or language specified)"
133
- forceExit
179
+ forceExit " Nothing to build. (no model or language specified)"
134
180
fi
135
181
echo " -- Firmwares successfully generated --"
136
182
echo " End..."
0 commit comments