187 lines
7.3 KiB
Bash
187 lines
7.3 KiB
Bash
#!/bin/bash
|
|
|
|
|
|
CURRENT_DIR=$1
|
|
APPIMAGE_LOCATION=$2
|
|
ICON_LOCATION=$3
|
|
PACKAGE_NAME=$4
|
|
SOFTWARE_NAME=$5
|
|
VERSION=$6
|
|
DEVELOPER=$7
|
|
DEVELOPER_MAIL=$8
|
|
MAINTAINER=$9
|
|
MAINTAINER_MAIL=${10}
|
|
CATEGORY=${11}
|
|
SIMPLE_DESCRIPTION=${12}
|
|
DETAILED_DESCRIPTION=${13}
|
|
HOMEPAGE=${14}
|
|
PERMISSION_BITS=${15}
|
|
|
|
|
|
echo -e "\nLoading Information..."
|
|
echo ${CURRENT_DIR}
|
|
echo ${APPIMAGE_LOCATION}
|
|
echo ${ICON_LOCATION}
|
|
echo ${PACKAGE_NAME}
|
|
echo ${SOFTWARE_NAME}
|
|
echo ${VERSION}
|
|
echo ${DEVELOPER}
|
|
echo ${DEVELOPER_MAIL}
|
|
echo ${MAINTAINER}
|
|
echo ${MAINTAINER_MAIL}
|
|
echo ${CATEGORY}
|
|
echo ${SIMPLE_DESCRIPTION}
|
|
echo ${DETAILED_DESCRIPTION}
|
|
echo ${HOMEPAGE}
|
|
echo ${PERMISSION_BITS} && echo "Finish!"
|
|
|
|
|
|
echo -e "\nCreate Directories..."
|
|
PACKAGE_DIR=${CURRENT_DIR}/.appimage2deb_tmp/${PACKAGE_NAME}
|
|
APP_DIR=${PACKAGE_DIR}/opt/apps/${PACKAGE_NAME}
|
|
mkdir -p ${PACKAGE_DIR}
|
|
mkdir ${PACKAGE_DIR}/DEBIAN
|
|
mkdir -p ${APP_DIR}/entries/applications
|
|
if [ "${ICON_LOCATION##*.}" == "svg" ]; then
|
|
mkdir -p ${APP_DIR}/entries/icons/hicolor/scalable/apps
|
|
else
|
|
mkdir -p ${APP_DIR}/entries/icons/hicolor/512x512/apps
|
|
fi
|
|
mkdir -p ${APP_DIR}/files/bin && echo "Finish!"
|
|
|
|
|
|
echo -e "\nCreate info file..."
|
|
touch ${APP_DIR}/info
|
|
echo -e "{" > ${APP_DIR}/info
|
|
echo -e "\t\"appid\": \"${PACKAGE_NAME}\"," >> ${APP_DIR}/info
|
|
echo -e "\t\"name\": \"${SOFTWARE_NAME}\"," >> ${APP_DIR}/info
|
|
echo -e "\t\"version\": \"${VERSION}\"," >> ${APP_DIR}/info
|
|
echo -e "\t\"arch\": [\"amd64\"]," >> ${APP_DIR}/info
|
|
echo -e "\t\"permissions\": {" >> ${APP_DIR}/info
|
|
if [ "${PERMISSION_BITS:0:1}" == "1" ];then
|
|
echo -e "\t\t\"autostart\": true," >> ${APP_DIR}/info
|
|
else
|
|
echo -e "\t\t\"autostart\": false," >> ${APP_DIR}/info
|
|
fi
|
|
if [ "${PERMISSION_BITS:1:1}" == "1" ];then
|
|
echo -e "\t\t\"notification\": true," >> ${APP_DIR}/info
|
|
else
|
|
echo -e "\t\t\"notification\": false," >> ${APP_DIR}/info
|
|
fi
|
|
if [ "${PERMISSION_BITS:2:1}" == "1" ];then
|
|
echo -e "\t\t\"trayicon\": true," >> ${APP_DIR}/info
|
|
else
|
|
echo -e "\t\t\"trayicon\": false," >> ${APP_DIR}/info
|
|
fi
|
|
if [ "${PERMISSION_BITS:3:1}" == "1" ];then
|
|
echo -e "\t\t\"clipboard\": true," >> ${APP_DIR}/info
|
|
else
|
|
echo -e "\t\t\"clipboard\": false," >> ${APP_DIR}/info
|
|
fi
|
|
if [ "${PERMISSION_BITS:4:1}" == "1" ];then
|
|
echo -e "\t\t\"account\": true," >> ${APP_DIR}/info
|
|
else
|
|
echo -e "\t\t\"account\": false," >> ${APP_DIR}/info
|
|
fi
|
|
if [ "${PERMISSION_BITS:5:1}" == "1" ];then
|
|
echo -e "\t\t\"bluetooth\": true," >> ${APP_DIR}/info
|
|
else
|
|
echo -e "\t\t\"bluetooth\": false," >> ${APP_DIR}/info
|
|
fi
|
|
if [ "${PERMISSION_BITS:6:1}" == "1" ];then
|
|
echo -e "\t\t\"camera\": true," >> ${APP_DIR}/info
|
|
else
|
|
echo -e "\t\t\"camera\": false," >> ${APP_DIR}/info
|
|
fi
|
|
if [ "${PERMISSION_BITS:7:1}" == "1" ];then
|
|
echo -e "\t\t\"audio_record\": true," >> ${APP_DIR}/info
|
|
else
|
|
echo -e "\t\t\"audio_record\": false," >> ${APP_DIR}/info
|
|
fi
|
|
if [ "${PERMISSION_BITS:8:1}" == "1" ];then
|
|
echo -e "\t\t\"installed_apps\": true" >> ${APP_DIR}/info
|
|
else
|
|
echo -e "\t\t\"installed_apps\": false" >> ${APP_DIR}/info
|
|
fi
|
|
echo -e "\t}" >> ${APP_DIR}/info
|
|
echo "}">> ${APP_DIR}/info && echo "Finish!"
|
|
|
|
|
|
echo -e "\nCreate desktop file..."
|
|
touch ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop
|
|
echo "[Desktop Entry]" > ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop
|
|
echo "Type=Application" >> ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop
|
|
echo "Version=1.0" >> ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop
|
|
echo "Name=${SOFTWARE_NAME}" >> ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop
|
|
echo "Comment=${SIMPLE_DESCRIPTION}" >> ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop
|
|
echo "Exec=/opt/apps/${PACKAGE_NAME}/files/bin/${PACKAGE_NAME}" >> ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop
|
|
echo "Icon=${PACKAGE_NAME}" >> ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop
|
|
echo "Categories=${CATEGORY};" >> ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop
|
|
echo "Terminal=false" >> ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop
|
|
echo "StartupNotify=true" >> ${APP_DIR}/entries/applications/${PACKAGE_NAME}.desktop && echo "Finish!"
|
|
|
|
|
|
echo -e "\nMove Appimage..."
|
|
cp ${APPIMAGE_LOCATION} ${APP_DIR}/files/bin
|
|
mv ${APP_DIR}/files/bin/*.AppImage ${APP_DIR}/files/bin/${PACKAGE_NAME} && echo "Finish!"
|
|
|
|
|
|
echo -e "\nMove Icon..."
|
|
if [ "${ICON_LOCATION##*.}" == "svg" ]; then
|
|
cp ${ICON_LOCATION} ${APP_DIR}/entries/icons/hicolor/scalable/apps
|
|
mv ${APP_DIR}/entries/icons/hicolor/scalable/apps/*.svg ${APP_DIR}/entries/icons/hicolor/scalable/apps/${PACKAGE_NAME}.svg
|
|
else
|
|
cp ${ICON_LOCATION} ${APP_DIR}/entries/icons/hicolor/512x512/apps
|
|
mv ${APP_DIR}/entries/icons/hicolor/512x512/apps/*.png ${APP_DIR}/entries/icons/hicolor/512x512/apps/${PACKAGE_NAME}.png
|
|
fi && echo "Finish!"
|
|
|
|
|
|
echo -e "\nCreate control..."
|
|
touch ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Package: ${PACKAGE_NAME}" > ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Version: ${VERSION}" >> ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Section: utils" >> ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Homepage: ${HOMEPAGE}" >> ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Architecture: amd64" >> ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Priority: optional" >> ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Depends: fuse3" >> ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Maintainer: ${MAINTAINER} <${MAINTAINER_MAIL}>" >> ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Developer: ${DEVELOPER} <$DEVELOPER_MAIL>" >> ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Installed-Size: $(du -sk ${PACKAGE_DIR}/opt/apps/${PACKAGE_NAME} | cut -f1)" >> ${PACKAGE_DIR}/DEBIAN/control
|
|
echo "Description: ${SIMPLE_DESCRIPTION}" >> ${PACKAGE_DIR}/DEBIAN/control
|
|
echo " ${DETAILED_DESCRIPTION}" >> ${PACKAGE_DIR}/DEBIAN/control && echo "Finish!"
|
|
|
|
|
|
echo -e "\nCreate postinst..."
|
|
touch ${PACKAGE_DIR}/DEBIAN/postinst
|
|
echo "#!/bin/bash" > ${PACKAGE_DIR}/DEBIAN/postinst
|
|
if [ "${ICON_LOCATION##*.}" == "svg" ]; then
|
|
echo "ln -s /opt/apps/${PACKAGE_NAME}/entries/icons/hicolor/scalable/apps/${PACKAGE_NAME}.svg /usr/share/icons/hicolor/scalable/apps/${PACKAGE_NAME}.svg" >> ${PACKAGE_DIR}/DEBIAN/postinst
|
|
else
|
|
echo "ln -s /opt/apps/${PACKAGE_NAME}/entries/icons/hicolor/512x512/apps/${PACKAGE_NAME}.png /usr/share/icons/hicolor/512x512/apps/${PACKAGE_NAME}.png" >> ${PACKAGE_DIR}/DEBIAN/postinst
|
|
fi
|
|
echo "chmod 777 /opt/apps/${PACKAGE_NAME}/files/bin/${PACKAGE_NAME}" >> ${PACKAGE_DIR}/DEBIAN/postinst
|
|
echo "chmod 777 /opt/apps/${PACKAGE_NAME}/entries/applications/${PACKAGE_NAME}.desktop" >> ${PACKAGE_DIR}/DEBIAN/postinst && echo "Finish!"
|
|
|
|
|
|
echo -e "\nCreate postrm..."
|
|
touch ${PACKAGE_DIR}/DEBIAN/postrm
|
|
echo "#!/bin/bash" > ${PACKAGE_DIR}/DEBIAN/postrm
|
|
echo "if [ -e "/usr/share/icons/hicolor/scalable/apps/${PACKAGE_NAME}.svg" ]; then" >> ${PACKAGE_DIR}/DEBIAN/postrm
|
|
echo " rm /usr/share/icons/hicolor/scalable/apps/${PACKAGE_NAME}.svg" >> ${PACKAGE_DIR}/DEBIAN/postrm
|
|
echo "fi" >> ${PACKAGE_DIR}/DEBIAN/postrm
|
|
echo "if [ -e "/usr/share/icons/hicolor/512x512/apps/${PACKAGE_NAME}.png" ]; then" >> ${PACKAGE_DIR}/DEBIAN/postrm
|
|
echo " rm /usr/share/icons/hicolor/512x512/apps/${PACKAGE_NAME}.png" >> ${PACKAGE_DIR}/DEBIAN/postrm
|
|
echo "fi" >> ${PACKAGE_DIR}/DEBIAN/postrm && echo "Finish!"
|
|
|
|
|
|
echo -e "\nEmpower DEBIAN..."
|
|
fakeroot chmod 755 ${PACKAGE_DIR}/DEBIAN
|
|
fakeroot chmod 644 ${PACKAGE_DIR}/DEBIAN/control
|
|
fakeroot chmod 755 ${PACKAGE_DIR}/DEBIAN/postrm
|
|
fakeroot chmod 755 ${PACKAGE_DIR}/DEBIAN/postinst && echo "Finish!"
|
|
|
|
|
|
echo -e "\nMake Deb..."
|
|
fakeroot dpkg -b ${PACKAGE_DIR} ${CURRENT_DIR} && echo "Finish!" && rm -rf ${CURRENT_DIR}/.appimage2deb_tmp
|