📦 build(scripts/release): implement support for socket-based communication if there's an active instance

it's FASTERgit add scripts/release.shgit add scripts/release.sh
This commit is contained in:
retrozinndev
2025-08-14 21:07:24 -03:00
parent c7a6ec0222
commit 05927842b9
+31 -4
View File
@@ -1,8 +1,8 @@
set -e
outdir="./build/release"
socket_support=true
while getopts o:r:h args; do
while getopts o:r:hn args; do
case "$args" in
o)
outdir=${OPTARG}
@@ -10,12 +10,16 @@ while getopts o:r:h args; do
r)
gresource_file=${OPTARG}
;;
h)
n)
unset socket_support
;;
? | h)
echo "\
colorshell's automated release-build script.
options:
-r \$file: gresource's target path (shell-only, file is kept in \$output. default: \$XDG_DATA_HOME/colorshell/resources.gresource)
-n: disable socket communication support(use the slower remote instance communication)
-o \$path: build output path (default: \`./build/release\`)
-h: show this help message"
exit 0
@@ -24,4 +28,27 @@ options:
done
# send literal variable name, so it's interpreted in the shell rather than in the build
pnpm build -o "${outdir:-./build/release}" -b -r "${gresource_file:-\$XDG_DATA_HOME/colorshell/resources.gresource}"
sh ./scripts/build.sh -o "${outdir:-./build/release}" -b -r "${gresource_file:-\$XDG_DATA_HOME/colorshell/resources.gresource}"
# add socket-communication support on executable
if [[ $socket_support ]]; then
echo "[info] adding socket communication support"
script="\
#!/usr/bin/env bash
set -e
if gdbus introspect --session \\
--dest io.github.retrozinndev.colorshell \\
--object-path /io/github/retrozinndev/colorshell > /dev/null 2>&1; then
echo \"\$@\" | socat - \"\${XDG_RUNTIME_DIR:-/run/user/\$(id -u)}/colorshell.sock\"
exit 0
fi
`cat "${outdir:-./build/release}/colorshell" | sed -e 's/^#.*//'`" # remove shebang
echo -en "$script" > "${outdir:-./build/release}/colorshell"
chmod +x "${outdir:-./build/release}/colorshell"
fi