#!/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" parts_checksum="${archive}.parts.sha256" split_installer="${root_dir}/dist/${bundle_name}-install.sh" 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}")" rm -f "$(basename "${archive}").part-"* "$(basename "${parts_checksum}")" split --bytes=8M --numeric-suffixes=0 --suffix-length=2 \ "$(basename "${archive}")" "$(basename "${archive}").part-" sha256sum "$(basename "${archive}").part-"* > "$(basename "${parts_checksum}")" ) install -m 0755 "${root_dir}/packaging/install-split-release.sh" "${split_installer}" printf 'Created %s\n' "${archive}" printf 'Created %s\n' "${archive_checksum}" printf 'Created %s and split parts\n' "${parts_checksum}" printf 'Created %s\n' "${split_installer}"