2021-01-18 06:46:57 +03:00
#!/usr/bin/env bash
2021-06-07 23:40:02 +03:00
set -e
# DEBUG
# set -o xtrace
2022-08-29 16:13:25 +03:00
QUALITY = "stable"
while getopts ":i" opt; do
case " $opt " in
i)
export QUALITY = "insider"
; ;
esac
done
2023-03-19 02:49:08 +03:00
check_programs( ) { # {{{
2021-06-07 23:40:02 +03:00
for arg in " $@ "
do
2022-06-05 22:30:23 +03:00
if ! command -v " ${ arg } " >/dev/null 2>& 1
2021-06-07 23:40:02 +03:00
then
2022-06-05 22:30:23 +03:00
echo " ${ arg } could not be found "
2021-06-07 23:40:02 +03:00
exit
fi
done
2023-03-19 02:49:08 +03:00
} # }}}
2021-01-18 06:46:57 +03:00
2023-03-19 02:49:08 +03:00
check_programs "icns2png" "composite" "convert" "png2icns" "icotool" "rsvg-convert"
2021-01-18 06:46:57 +03:00
2021-06-07 23:40:02 +03:00
SRC_PREFIX = ""
VSCODE_PREFIX = ""
2023-03-19 02:49:08 +03:00
build_darwin_main( ) { # {{{
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/darwin/code.icns " ] ; then
rsvg-convert -w 700 -h 700 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite "code_logo.png" -geometry +165+190 "icons/template_macos.png" "code_1024.png"
convert "code_1024.png" -resize 512x512 code_512.png
convert "code_1024.png" -resize 256x256 code_256.png
convert "code_1024.png" -resize 128x128 code_128.png
png2icns " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/darwin/code.icns " code_512.png code_256.png code_128.png
rm code_1024.png code_512.png code_256.png code_128.png code_logo.png
fi
} # }}}
build_darwin_types( ) { # {{{
rsvg-convert -w 128 -h 128 " icons/ ${ QUALITY } /codium_border.svg " -o "code_logo.png"
2022-06-05 22:30:23 +03:00
for file in " ${ VSCODE_PREFIX } " vscode/resources/darwin/*
2021-06-07 23:40:02 +03:00
do
2022-06-05 22:30:23 +03:00
if [ -f " ${ file } " ] ; then
name = $( basename " ${ file } " '.icns' )
2021-06-07 23:40:02 +03:00
2022-08-29 16:13:25 +03:00
if [ [ ${ name } != 'code' ] ] && [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/darwin/ ${ name } .icns " ] ; then
2022-06-05 22:30:23 +03:00
icns2png -x -s 512x512 " ${ file } " -o .
2021-06-07 23:40:02 +03:00
2022-08-29 16:13:25 +03:00
composite -blend 100% -geometry +323+365 "icons/corner_512.png" " ${ name } _512x512x32.png " " ${ name } .png "
2023-03-19 02:49:08 +03:00
composite -geometry +359+374 "code_logo.png" " ${ name } .png " " ${ name } .png "
2021-06-07 23:40:02 +03:00
2022-06-05 22:30:23 +03:00
convert " ${ name } .png " -resize 256x256 " ${ name } _256.png "
2021-06-07 23:40:02 +03:00
2022-08-29 16:13:25 +03:00
png2icns " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/darwin/ ${ name } .icns " " ${ name } .png " " ${ name } _256.png "
2021-06-07 23:40:02 +03:00
2022-06-05 22:30:23 +03:00
rm " ${ name } _512x512x32.png " " ${ name } .png " " ${ name } _256.png "
2021-06-07 23:40:02 +03:00
fi
fi
done
2023-03-19 02:49:08 +03:00
rm "code_logo.png"
} # }}}
2021-06-07 23:40:02 +03:00
2023-03-19 02:49:08 +03:00
build_linux_main( ) { # {{{
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/linux/code.png " ] ; then
convert -size 1024x1024 canvas:transparent PNG32:"code_1024.png"
rsvg-convert -w 896 -h 896 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite "code_logo.png" -geometry +75+72 -background none "code_1024.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/linux/code.png "
rm code_1024.png code_logo.png
fi
2021-06-07 23:40:02 +03:00
2023-03-19 02:49:08 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/linux/rpm/code.xpm " ] ; then
convert " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/linux/code.png " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/linux/rpm/code.xpm "
2021-06-07 23:40:02 +03:00
fi
2023-03-19 02:49:08 +03:00
} # }}}
2021-06-07 23:40:02 +03:00
2023-03-19 02:49:08 +03:00
build_windows_main( ) { # {{{
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/code.ico " ] ; then
convert " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/linux/code.png " -define icon:auto-resize= 256,128,96,64,48,32,24,20,16 " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/code.ico "
fi
} # }}}
build_windows_types( ) { # {{{
2022-08-29 16:13:25 +03:00
mkdir -p " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32 "
2023-03-19 02:49:08 +03:00
rsvg-convert -b "#F5F6F7" -w 64 -h 64 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
2022-06-05 22:30:23 +03:00
for file in " ${ VSCODE_PREFIX } " vscode/resources/win32/*.ico
2021-06-07 23:40:02 +03:00
do
2022-06-05 22:30:23 +03:00
if [ -f " ${ file } " ] ; then
name = $( basename " ${ file } " '.ico' )
2021-06-07 23:40:02 +03:00
2022-08-29 16:13:25 +03:00
if [ [ ${ name } != 'code' ] ] && [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/ ${ name } .ico " ] ; then
2022-06-05 22:30:23 +03:00
icotool -x -w 256 " ${ file } "
2021-06-07 23:40:02 +03:00
2023-03-19 02:49:08 +03:00
composite -geometry +150+185 "code_logo.png" " ${ name } _9_256x256x32.png " " ${ name } .png "
2021-06-07 23:40:02 +03:00
2022-08-29 16:13:25 +03:00
convert " ${ name } .png " -define icon:auto-resize= 256,128,96,64,48,32,24,20,16 " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/ ${ name } .ico "
2021-06-07 23:40:02 +03:00
2023-03-19 02:49:08 +03:00
rm " ${ name } _9_256x256x32.png " " ${ name } .png "
2021-06-07 23:40:02 +03:00
fi
fi
done
2023-03-19 02:49:08 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/code_70x70.png " ] ; then
convert -size 70x70 canvas:transparent PNG32:" ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/code_70x70.png "
rsvg-convert -w 45 -h 45 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/code_70x70.png " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/code_70x70.png "
fi
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/code_150x150.png " ] ; then
convert -size 150x150 canvas:transparent PNG32:" ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/code_150x150.png "
rsvg-convert -w 64 -h 64 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -geometry +44+25 "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/code_150x150.png " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/code_150x150.png "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-100.bmp " ] ; then
convert -size 164x314 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-100.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 126 -h 126 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-100.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-100.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-125.bmp " ] ; then
convert -size 192x386 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-125.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 147 -h 147 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-125.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-125.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-150.bmp " ] ; then
convert -size 246x459 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-150.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 190 -h 190 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-150.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-150.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-175.bmp " ] ; then
convert -size 273x556 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-175.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 211 -h 211 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-175.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-175.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-200.bmp " ] ; then
convert -size 328x604 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-200.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 255 -h 255 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-200.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-200.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-225.bmp " ] ; then
convert -size 355x700 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-225.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 273 -h 273 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-225.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-225.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-250.bmp " ] ; then
convert -size 410x797 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-250.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 317 -h 317 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-250.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-big-250.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-100.bmp " ] ; then
convert -size 55x55 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-100.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 44 -h 44 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-100.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-100.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-125.bmp " ] ; then
convert -size 64x68 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-125.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 52 -h 52 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-125.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-125.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-150.bmp " ] ; then
convert -size 83x80 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-150.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 63 -h 63 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-150.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-150.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-175.bmp " ] ; then
convert -size 92x97 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-175.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 76 -h 76 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-175.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-175.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-200.bmp " ] ; then
convert -size 110x106 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-200.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 86 -h 86 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-200.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-200.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-225.bmp " ] ; then
convert -size 119x123 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-225.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 103 -h 103 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-225.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-225.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-29 16:13:25 +03:00
if [ ! -f " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-250.bmp " ] ; then
convert -size 138x140 xc:white " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-250.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 116 -h 116 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -gravity center "code_logo.png" " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-250.bmp " " ${ SRC_PREFIX } src/ ${ QUALITY } /resources/win32/inno-small-250.bmp "
2021-06-07 23:40:02 +03:00
fi
2022-08-30 14:55:17 +03:00
if [ ! -f " ${ SRC_PREFIX } build/windows/msi/resources/ ${ QUALITY } /wix-banner.bmp " ] ; then
convert -size 493x58 xc:white " ${ SRC_PREFIX } build/windows/msi/resources/ ${ QUALITY } /wix-banner.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 50 -h 50 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -geometry +438+6 "code_logo.png" " ${ SRC_PREFIX } build/windows/msi/resources/ ${ QUALITY } /wix-banner.bmp " " ${ SRC_PREFIX } build/windows/msi/resources/ ${ QUALITY } /wix-banner.bmp "
2021-09-09 02:38:07 +03:00
fi
2022-08-30 14:55:17 +03:00
if [ ! -f " ${ SRC_PREFIX } build/windows/msi/resources/ ${ QUALITY } /wix-dialog.bmp " ] ; then
convert -size 493x312 xc:white " ${ SRC_PREFIX } build/windows/msi/resources/ ${ QUALITY } /wix-dialog.bmp "
2023-03-19 02:49:08 +03:00
rsvg-convert -w 120 -h 120 " icons/ ${ QUALITY } /codium.svg " -o "code_logo.png"
composite -geometry +22+152 "code_logo.png" " ${ SRC_PREFIX } build/windows/msi/resources/ ${ QUALITY } /wix-dialog.bmp " " ${ SRC_PREFIX } build/windows/msi/resources/ ${ QUALITY } /wix-dialog.bmp "
2021-09-09 02:38:07 +03:00
fi
2023-03-19 02:49:08 +03:00
rm code_logo.png
} # }}}
2021-06-07 23:40:02 +03:00
2022-06-05 22:30:23 +03:00
if [ " ${ 0 } " = = " ${ BASH_SOURCE } " ] ;
2021-06-07 23:40:02 +03:00
then
2023-03-19 02:49:08 +03:00
build_darwin_main
build_linux_main
build_windows_main
2021-06-07 23:40:02 +03:00
build_darwin_types
2023-03-19 02:49:08 +03:00
build_windows_types
2021-06-07 23:47:56 +03:00
fi