]> git.armaanb.net Git - logo.git/blob - svg2img
Make somewhat POSIX compliant
[logo.git] / svg2img
1 #!/bin/sh
2 # Converts my logo to various formats from a template SVG
3 # Armaan Bhojwani 2021
4
5 set -e
6
7 SIZES="2048 1024 512 256 128 64"
8 A_SIZES="10 15 20 25 30 35 40 45 50 55 60"
9
10 for arg in ${@};do
11   [ -z ${arg} ] && echo "Please provide an output format!" && exit 1
12   
13   [ ${arg} = "svg" ] && find . -name *.svg -not -path "./template/*" \
14     -exec rm -v {} \;
15   
16   if [ ! -d "square/svg" ] || [ ! -d "circle/svg" ] || [ ${arg} = "svg" ]; then
17     echo "Generating SVGs"
18     for SHAPE in square circle; do
19       mkdir -p ${SHAPE}/svg
20   
21       sed -e 's/STROKE/stroke="#00ffbf"/g' \
22         -e 's/FILL/#212121/g' template/${SHAPE}.svg \
23         > ${SHAPE}/svg/logo-${SHAPE}-color-dark.svg
24   
25       sed -e 's/STROKE/stroke="#00ffbf"/g' \
26         -e 's/FILL/#fff/g' template/${SHAPE}.svg \
27         > ${SHAPE}/svg/logo-${SHAPE}-color-white.svg
28   
29       sed -e 's/STROKE/stroke="#00ffbf"/g' \
30         -e 's/FILL/none/g' template/${SHAPE}.svg \
31         > ${SHAPE}/svg/logo-${SHAPE}-color-trans.svg
32   
33       sed -e 's/STROKE/stroke="#212121"/g' \
34         -e 's/FILL/#00ffbf/g' template/${SHAPE}.svg \
35         > ${SHAPE}/svg/logo-${SHAPE}-dark-color.svg
36   
37       sed -e 's/STROKE/stroke="#212121"/g' \
38         -e 's/FILL/#fff/g' template/${SHAPE}.svg \
39         > ${SHAPE}/svg/logo-${SHAPE}-dark-white.svg
40   
41       sed -e 's/STROKE/stroke="#212121"/g' \
42         -e 's/FILL/none/g' template/${SHAPE}.svg \
43         > ${SHAPE}/svg/logo-${SHAPE}-dark-trans.svg
44   
45       sed -e 's/STROKE/stroke="#fff"/g' \
46         -e 's/FILL/#00ffbf/g' template/${SHAPE}.svg \
47         > ${SHAPE}/svg/logo-${SHAPE}-white-color.svg
48   
49       sed -e 's/STROKE/stroke="#fff"/g' \
50         -e 's/FILL/#212121/g' template/${SHAPE}.svg \
51         > ${SHAPE}/svg/logo-${SHAPE}-white-dark.svg
52   
53       sed -e 's/STROKE/stroke="#fff"/g' \
54         -e 's/FILL/none/g' template/${SHAPE}.svg \
55         > ${SHAPE}/svg/logo-${SHAPE}-white-trans.svg
56     done
57   fi
58   
59   [ ${arg} = "svg" ] && exit 0
60   
61   [ ${arg} = "png" ] && find . -name *.png -not -name ./logo.png \
62     -exec rm -v {} \;
63   
64   if [ ! -d "square/png" ] || [ ! -d "circle/png" ] || [ ${arg} = "png" ]; then
65     echo "Generating PNGs"
66     for SHAPE in square circle; do
67       set -- $SIZES
68       for i in $@; do
69         mkdir -p ${SHAPE}/png/${i}
70       done
71   
72       for i in $@; do
73         for SVGIN in square/svg/*; do
74           BASE=$(basename ${SVGIN} | cut -d '.' -f 1)
75           inkscape -w ${i} -h ${i} ${SVGIN} --export-filename \
76             square/png/${i}/${BASE}-${i}.png
77         done
78   
79         for SVGIN in circle/svg/*; do
80           BASE=$(basename ${SVGIN} | cut -d '.' -f 1)
81           inkscape -w ${i} -h ${i} ${SVGIN} --export-filename \
82             circle/png/${i}/${BASE}-${i}.png
83         done
84       done
85     done
86   fi
87   
88   [ ${arg} = "png" ] && exit 0
89   
90   if [ ${arg} = "ascii" ]; then
91     echo "Generating ASCII art"
92     find . -name *ascii.txt -exec rm -v {} \;
93     for SHAPE in square circle; do
94       set -- $A_SIZES
95       for i in $@; do
96         mkdir -p ${SHAPE}/ascii/${i}
97   
98         for PNGIN in circle/png/2048/*; do
99           BASE=$(basename ${PNGIN} | cut -d '.' -f 1)
100           jp2a --height=${i} ${PNGIN} > circle/ascii/${i}/${BASE}-${i}.ascii.txt
101         done
102   
103         for PNGIN in square/png/2048/*; do
104           BASE=$(basename ${PNGIN} | cut -d '.' -f 1)
105           jp2a --height=${i} ${PNGIN} > square/ascii/${i}/${BASE}-${i}.ascii.txt
106         done
107       done
108     done
109     exit 0
110   fi
111   
112   if [ ${arg} = "unicode" ]; then
113     echo "Generating Unicode"
114     find . -name *unicode.txt -exec rm -v {} \;
115     for SHAPE in square circle; do
116       set -- $A_SIZES
117       for i in $@; do
118         mkdir -p ${SHAPE}/unicode/${i}
119   
120         for PNGIN in circle/png/2048/*; do
121           BASE=$(basename ${PNGIN} | cut -d '-' -f -4)
122           chafa -c none -s ${i}x${i} ${PNGIN} \
123             > circle/unicode/${i}/${BASE}-${i}.unicode.txt
124         done
125   
126         for PNGIN in square/png/2048/*; do
127           BASE=$(basename ${PNGIN} | cut -d '-' -f -4)
128           chafa -c none -s ${i}x${i} ${PNGIN} \
129             > square/unicode/${i}/${BASE}-${i}.unicode.txt
130         done
131       done
132     done
133     exit 0
134   fi
135   
136   for SHAPE in square circle; do
137     find . -name '*.${arg}' -exec rm -v {} \;
138   
139     set -- $SIZES
140     for i in $@; do
141       mkdir -p ${SHAPE}/${arg}/${i}
142     done
143
144     for PAT in $(find . -name '*.png' -not -name ./logo.png); do
145       echo "Generating ${arg}s"
146       convert -verbose ${PAT} $(printf "%s" "$PAT" | sed "s/\.png/.$arg/g")
147     done
148   done
149 done