+mkdir 'static/js';
+mkdir 'static/logos';
+
+sub gzip_file {
+ my ($file) = @_;
+ my $zopfli = which 'zopfli';
+ system $zopfli => $file if $zopfli;
+ gzip $file => "$file.gz", -Level => 9, Minimal => 1 unless $zopfli;
+}
+
+sub write_gzfile {
+ my ($file, @content) = @_;
+ write_file $file, @content;
+ gzip_file $file
+}
+
+sub sprite_name {
+ my ($name) = $_[0] =~ m,/(.*)\.svg,;
+ "logo-$name"
+}
+
+sub make_logos {
+ my @logos = <logos/*>;
+ my $logos = make_sprite \&sprite_name, @logos;
+ my @logos_light;
+ for (<logos/*>) {
+ my $light = s/logos/logos-light/r;
+ push @logos_light, -f $light ? $light : $_;
+ }
+ my $logos_light = make_sprite \&sprite_name, @logos_light;
+
+ write_gzfile 'static/logos/dark.svg', $logos->render;
+ write_gzfile 'static/logos/light.svg', $logos_light->render;
+}
+
+sub read_css_into_blocks {
+ my ($file) = @_;
+ my (@blocks, $block);
+ for (read_file $file) {
+ $block .= $_;
+ if (/^}/) {
+ push @blocks, $block;
+ $block = '';
+ }
+ }
+ \@blocks
+}