Comicviewer/packaging/build-release-bundle.sh

55 lines
1.9 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
root_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
package_id="$(cargo pkgid --manifest-path "${root_dir}/Cargo.toml")"
version="${package_id##*@}"
bundle_name="Comicviewer-${version}-x86_64"
appimage_name="${bundle_name}.AppImage"
appimage="${root_dir}/dist/${appimage_name}"
checksum="${appimage}.sha256"
archive="${root_dir}/dist/${bundle_name}.tar.gz"
archive_checksum="${archive}.sha256"
work_dir="$(mktemp -d)"
bundle_dir="${work_dir}/${bundle_name}"
archive_mtime="${SOURCE_DATE_EPOCH:-$(git -C "${root_dir}" log -1 --format=%ct)}"
cleanup() {
rm -rf "${work_dir}"
}
trap cleanup EXIT
if [[ ! -f "${appimage}" ]]; then
printf 'AppImage가 없습니다: %s\n' "${appimage}" >&2
printf '%s\n' "먼저 packaging/build-appimage.sh를 실행하세요." >&2
exit 1
fi
mkdir -p "${bundle_dir}"
(
cd "${root_dir}/dist"
sha256sum "${appimage_name}" > "${appimage_name}.sha256"
)
install -m 0755 "${appimage}" "${bundle_dir}/${appimage_name}"
install -m 0644 "${checksum}" "${bundle_dir}/${appimage_name}.sha256"
install -m 0755 \
"${root_dir}/packaging/install-or-update.sh" \
"${bundle_dir}/install-or-update.sh"
install -m 0644 \
"${root_dir}/data/io.github.comicviewer.Comicviewer.desktop" \
"${bundle_dir}/io.github.comicviewer.Comicviewer.desktop"
install -m 0644 \
"${root_dir}/data/io.github.comicviewer.Comicviewer.svg" \
"${bundle_dir}/io.github.comicviewer.Comicviewer.svg"
install -m 0644 "${root_dir}/docs/INSTALL.ko.md" "${bundle_dir}/README.ko.md"
tar --sort=name --owner=0 --group=0 --numeric-owner --mtime="@${archive_mtime}" \
-C "${work_dir}" -cf - "${bundle_name}" | gzip -n > "${archive}"
(
cd "${root_dir}/dist"
sha256sum "$(basename "${archive}")" > "$(basename "${archive_checksum}")"
)
printf 'Created %s\n' "${archive}"
printf 'Created %s\n' "${archive_checksum}"