forked from letscontrolit/ESPEasy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
embed_files.sh
executable file
·116 lines (103 loc) · 3.05 KB
/
embed_files.sh
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
#!/bin/bash
#
# This script walks through the assets folder and minifys all JS, HTML, CSS and SVG files. It also generates
# the corresponding constants that are added to the data.h file on esp8266_deauther folder.
#
# @Author Erick B. Tedeschi < erickbt86 [at] gmail [dot] com >
# @Author Wandmalfarbe https://github.com/Wandmalfarbe
#
# See: https://github.com/letscontrolit/ESPEasy/issues/1671#issuecomment-415144898
cd static
outputfile="$(pwd)/data_h_temp"
rm $outputfile
function minify_html {
file=$1
post_To https://www.toptal.com/developers/html-minifier/raw $file
}
function minify_css {
file=$1
post_To https://www.toptal.com/developers/cssminifier/raw $file
}
function minify_js {
file=$1
post_To https://www.toptal.com/developers/javascript-minifier/raw $file
}
function post_To {
url=$1
file=$2
RESPONSE=/tmp/response.txt
HEADERS=/tmp/headers.txt
curl -X POST -s --data-urlencode "input@$file" $url -D $HEADERS -o $RESPONSE
status=$(cat $HEADERS | grep '^HTTP/1' | tail -1 | awk '{print $2}')
if [[ "$status" == "200" ]]; then
cat $RESPONSE > /tmp/converter.temp
rm $RESPONSE
rm $HEADERS
else
echo "can not minify $file error $status"
exit 1
fi
}
function minify_svg {
file=$1
svgo -i /Users/User/Desktop/icons/tools.svg -o - > /tmp/converter.temp
}
function ascii2hexCstyle {
file_name=$(constFileName $1)
result=$(cat /tmp/converter.temp | hexdump -ve '1/1 "0x%.2x,"')
result=$(echo $result | sed 's/,$//')
echo "const char DATA_${file_name}[] PROGMEM = {$result,0};"
echo
echo
}
function constFileName {
extension=$(echo $1 | egrep -io "(json|svg|css|js|html)$" | tr "[:lower:]" "[:upper:]")
file=$(echo $1 | sed 's/\.json//' | sed 's/\.svg//' | sed 's/\.css//' | sed 's/\.html//' | sed 's/\.js//' | sed 's/\.\///' | tr '/' '_' | tr '.' '_' | tr '-' '_' | tr "[:lower:]" "[:upper:]")
underscore="_"
echo $file$underscore$extension
}
function keepMinifiedFile {
file=$1
file=$( echo $file | sed -r 's/^(.*)\.(.*?)$/\1.min.\2/' )
cp /tmp/converter.temp $file
echo " Keeps Minified file as: $file"
}
file_list=$(find . -type f)
for file in $file_list; do
echo "Processing: $file"
file_name=$(constFileName $file)
echo " Array Name: $file_name"
if [[ "$file" == *.min.js ]]; then
echo " JS already minified"
cat $file > /tmp/converter.temp
ascii2hexCstyle $file >> $outputfile
elif [[ "$file" == *.js ]]; then
echo " JS minify"
minify_js $file
ascii2hexCstyle $file >> $outputfile
elif [[ "$file" == *.min.css ]]; then
echo " CSS already minified"
cat $file > /tmp/converter.temp
ascii2hexCstyle $file >> $outputfile
elif [[ "$file" == *.css ]]; then
echo " CSS minify"
minify_css $file
keepMinifiedFile $file
ascii2hexCstyle $file >> $outputfile
elif [[ "$file" == *.html ]]; then
echo " HTML minify"
minify_html $file
ascii2hexCstyle $file >> $outputfile
elif [[ "$file" == *.svg ]]; then
echo " SVG minify"
minify_svg $file
ascii2hexCstyle $file >> $outputfile
else
echo " without minifier"
cat $file > /tmp/converter.temp
ascii2hexCstyle $file >> $outputfile
fi
echo ""
sleep 1
done
cd ..