forked from phillbush/haiku-icons
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild
executable file
·181 lines (155 loc) · 2.93 KB
/
build
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
178
179
180
181
#!/bin/sh
builddir="Haiku"
target="$1"
usage() {
echo "usage: build target" >&2
exit 1
}
# check if target is "scalable" or has form "NxN" (like 64x64)
case $1 in
"scalable") ;;
"x" | *[!0-9]*x*[!0-9]*) usage ;;
*x*) ;;
*) usage ;;
esac
# make target directories and categories subdirectories
mkdir -p "$builddir/$target/actions" \
"$builddir/$target/apps" \
"$builddir/$target/categories" \
"$builddir/$target/devices" \
"$builddir/$target/emblems" \
"$builddir/$target/emotes" \
"$builddir/$target/mimetypes" \
"$builddir/$target/places" \
"$builddir/$target/status" \
# set variables; if building fixed icons, convert them to png
case "$target" in
"scalable")
suffix="svg"
cmd="cp"
cat >>"$builddir/index.theme" <<-EOF
[$target/actions]
Context=Actions
Size=64
MinSize=8
MaxSize=512
Type=Scalable
[$target/apps]
Context=Applications
Size=64
MinSize=8
MaxSize=512
Type=Scalable
[$target/categories]
Context=Categories
Size=64
MinSize=8
MaxSize=512
Type=Scalable
[$target/devices]
Context=Devices
Size=64
MinSize=8
MaxSize=512
Type=Scalable
[$target/emblems]
Context=Emblems
Size=64
MinSize=8
MaxSize=512
Type=Scalable
[$target/emotes]
Context=Emotes
Size=64
MinSize=8
MaxSize=512
Type=Scalable
[$target/mimetypes]
Context=MimeTypes
Size=64
MinSize=8
MaxSize=512
Type=Scalable
[$target/places]
Context=Places
Size=64
MinSize=8
MaxSize=512
Type=Scalable
[$target/status]
Context=Status
Size=64
MinSize=8
MaxSize=512
Type=Scalable
EOF
;;
*)
suffix="png"
cmd="mv"
size="${target%%x*}"
inkscape --export-type=png --export-height="$size" --export-width="$size" svg/*.svg
cat >>"$builddir/index.theme" <<-EOF
[$target/actions]
Context=Actions
Size=$size
Type=Fixed
[$target/apps]
Context=Applications
Size=$size
Type=Fixed
[$target/categories]
Context=Categories
Size=$size
Type=Fixed
[$target/devices]
Context=Devices
Size=$size
Type=Fixed
[$target/emblems]
Context=Emblems
Size=$size
Type=Fixed
[$target/emotes]
Context=Emotes
Size=$size
Type=Fixed
[$target/mimetypes]
Context=MimeTypes
Size=$size
Type=Fixed
[$target/places]
Context=Places
Size=$size
Type=Fixed
[$target/status]
Context=Status
Size=$size
Type=Fixed
EOF
;;
esac
# copy/move files to their category subdirectory
while read -r file subdir
do
"$cmd" "svg/$file.$suffix" "$builddir/$target/$subdir"
done <"files"
# create links
while read -r subdir link file
do
ln -s "$file.$suffix" "$builddir/$target/$subdir/$link.$suffix"
done <"links"
# edit index.theme
ed "$builddir/index.theme" <<-EOF
/^Directories/
s/\$/$target\/actions,/
s/\$/$target\/apps,/
s/\$/$target\/categories,/
s/\$/$target\/devices,/
s/\$/$target\/emblems,/
s/\$/$target\/emotes,/
s/\$/$target\/mimetypes,/
s/\$/$target\/places,/
s/\$/$target\/status,/
w
EOF