|
#!/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"
|