#!/bin/bash
set -e
# Ensure script is run with sudo or as root
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root or with sudo"
exit 1
fi
# Project details
PROJECT_NAME="zhurnal"
VERSION=$(python3 -c "import importlib.metadata; print(importlib.metadata.version('$PROJECT_NAME'))")
ARCH=$(dpkg --print-architecture)
# Create package directory structure
PACKAGE_DIR="/tmp/${PROJECT_NAME}_${VERSION}_${ARCH}"
mkdir -p "${PACKAGE_DIR}/DEBIAN"
mkdir -p "${PACKAGE_DIR}/usr/local/bin"
mkdir -p "${PACKAGE_DIR}/usr/local/lib/python3/dist-packages/${PROJECT_NAME}"
mkdir -p "${PACKAGE_DIR}/etc/${PROJECT_NAME}"
# Create control file
cat > "${PACKAGE_DIR}/DEBIAN/control" << EOF
Package: ${PROJECT_NAME}
Version: ${VERSION}
Section: utils
Priority: optional
Architecture: ${ARCH}
Depends: python3 (>= 3.8), python3-pip, python3-venv
Maintainer: Your Name <your.email@example.com>
Description: Zhurnal - A command-line utility for running and monitoring commands
EOF
# Create postinst script for additional setup
cat > "${PACKAGE_DIR}/DEBIAN/postinst" << EOF
#!/bin/bash
set -e
# Create virtual environment if not exists
if [ ! -d "/opt/${PROJECT_NAME}/.venv" ]; then
python3 -m venv /opt/${PROJECT_NAME}/.venv
/opt/${PROJECT_NAME}/.venv/bin/pip install --upgrade pip
/opt/${PROJECT_NAME}/.venv/bin/pip install git+https://retoor.molodetz.nl/retoor/zhurnal.git
fi
# Create symlink to binary
ln -sf /opt/${PROJECT_NAME}/.venv/bin/${PROJECT_NAME} /usr/local/bin/${PROJECT_NAME}
exit 0
EOF
# Create prerm script for cleanup
cat > "${PACKAGE_DIR}/DEBIAN/prerm" << EOF
#!/bin/bash
set -e
# Remove symlink
rm -f /usr/local/bin/${PROJECT_NAME}
exit 0
EOF
# Make scripts executable
chmod 755 "${PACKAGE_DIR}/DEBIAN/postinst"
chmod 755 "${PACKAGE_DIR}/DEBIAN/prerm"
# Copy project files
cp -r src/${PROJECT_NAME}/* "${PACKAGE_DIR}/usr/local/lib/python3/dist-packages/${PROJECT_NAME}/"
# Build the package
dpkg-deb --build "${PACKAGE_DIR}"
# Move package to current directory
mv "/tmp/${PROJECT_NAME}_${VERSION}_${ARCH}.deb" .
# Cleanup
rm -rf "${PACKAGE_DIR}"
echo "Debian package created successfully: ${PROJECT_NAME}_${VERSION}_${ARCH}.deb"