@@ -18,6 +18,7 @@ DIST_DIR="$ROOT_DIR/dist"
1818TMP_DIR=" $( mktemp -d) "
1919PACKAGE_NAME=" git-auto-sync-${VERSION} -release"
2020PACKAGE_ROOT=" $TMP_DIR /$PACKAGE_NAME "
21+ PYTHON_BIN=" ${PYTHON:- } "
2122ARTIFACTS=(
2223 " $DIST_DIR /${PACKAGE_NAME} .tar.gz"
2324 " $DIST_DIR /${PACKAGE_NAME} .tar.gz.sha256sum"
@@ -35,6 +36,17 @@ RELEASE_FILES=(
3536 " uv.lock"
3637)
3738
39+ if [[ -z " $PYTHON_BIN " ]]; then
40+ if command -v python3 > /dev/null 2>&1 ; then
41+ PYTHON_BIN=" python3"
42+ elif command -v python > /dev/null 2>&1 ; then
43+ PYTHON_BIN=" python"
44+ else
45+ echo " Missing required command for release package: python3 or python" >&2
46+ exit 1
47+ fi
48+ fi
49+
3850for item in " ${RELEASE_FILES[@]} " ; do
3951 if [[ ! -e " $ROOT_DIR /$item " ]]; then
4052 echo " Missing required file for release package: $item " >&2
@@ -56,12 +68,35 @@ find "$PACKAGE_ROOT" -type f \( -name "*.pyc" -o -name "*.pyo" \) -delete
5668cp -f " $ROOT_DIR /README.md" " $PACKAGE_ROOT /INSTALL.md"
5769
5870tar -czf " $DIST_DIR /${PACKAGE_NAME} .tar.gz" -C " $TMP_DIR " " $PACKAGE_NAME "
59- shasum -a 256 " $DIST_DIR /${PACKAGE_NAME} .tar.gz" | awk ' {print $1}' > " $DIST_DIR /${PACKAGE_NAME} .tar.gz.sha256sum"
71+ " $PYTHON_BIN " - " $DIST_DIR /${PACKAGE_NAME} .tar.gz" " $DIST_DIR /${PACKAGE_NAME} .tar.gz.sha256sum" << 'PY '
72+ from pathlib import Path
73+ import hashlib
74+ import sys
6075
61- (
62- cd " $TMP_DIR " && zip -r " $DIST_DIR /${PACKAGE_NAME} .zip" " $PACKAGE_NAME " > /dev/null
63- )
64- shasum -a 256 " $DIST_DIR /${PACKAGE_NAME} .zip" | awk ' {print $1}' > " $DIST_DIR /${PACKAGE_NAME} .zip.sha256sum"
76+ archive = Path(sys.argv[1])
77+ checksum = Path(sys.argv[2])
78+ checksum.write_text(hashlib.sha256(archive.read_bytes()).hexdigest() + "\n", encoding="utf-8")
79+ PY
80+
81+ " $PYTHON_BIN " - " $TMP_DIR " " $PACKAGE_NAME " " $DIST_DIR /${PACKAGE_NAME} .zip" " $DIST_DIR /${PACKAGE_NAME} .zip.sha256sum" << 'PY '
82+ from pathlib import Path
83+ import hashlib
84+ import sys
85+ import zipfile
86+
87+ tmp_dir = Path(sys.argv[1])
88+ package_name = sys.argv[2]
89+ archive = Path(sys.argv[3])
90+ checksum = Path(sys.argv[4])
91+ package_root = tmp_dir / package_name
92+
93+ with zipfile.ZipFile(archive, "w", compression=zipfile.ZIP_DEFLATED) as zf:
94+ for path in sorted(package_root.rglob("*")):
95+ if path.is_file():
96+ zf.write(path, path.relative_to(tmp_dir).as_posix())
97+
98+ checksum.write_text(hashlib.sha256(archive.read_bytes()).hexdigest() + "\n", encoding="utf-8")
99+ PY
65100
66101rm -rf " $TMP_DIR "
67102
0 commit comments