Files
2025-01-31 21:05:33 +08:00

96 lines
3.4 KiB
Bash

#!/bin/bash
WORKING_DIR=$1
APPIMAGE_LOCATION=$2
PACKAGE_NAME=$3
SOFTWARE_NAME=$4
ARCHITECTURE=$5
VERSION=$6
DEVELOPER=$7
DEVELOPER_MAIL=$8
MAINTAINER=$9
MAINTAINER_MAIL=${10}
CATEGORY=${11}
SIMPLE_DESCRIPTION=${12}
DETAILED_DESCRIPTION=${13}
HOMEPAGE=${14}
cp "$APPIMAGE_LOCATION" "$WORKING_DIR"
cd "$WORKING_DIR" || exit
APPIMAGE_NAME="${APPIMAGE_LOCATION##*/}"
fakeroot chmod +x ./"$APPIMAGE_NAME"
./"$APPIMAGE_NAME" --appimage-extract >/dev/null
echo "Extract AppImage Successfully!"
# TODO 有些图像的分辨率不是标准的,这会导致映射出问题
ICON_SIZE=$(identify -format "%w" ./squashfs-root/*.png)
mkdir -p ./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/entries/icons/hicolor/"$ICON_SIZE"x"$ICON_SIZE"/apps
cp ./squashfs-root/*.png ./"$PACKAGE_NAME".png
mv ./"$PACKAGE_NAME".png ./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/entries/icons/hicolor/"$ICON_SIZE"x"$ICON_SIZE"/apps
mkdir ./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/entries/applications
cp ./squashfs-root/*.desktop ./"$PACKAGE_NAME".desktop
mv ./"$PACKAGE_NAME".desktop ./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/entries/applications
sed -i "s|^Name=.*|Name=$SOFTWARE_NAME|" \
./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/entries/applications/"$PACKAGE_NAME".desktop
sed -i "s|^Exec=.*|Exec=/opt/apps/$PACKAGE_NAME/files/AppRun|" \
./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/entries/applications/"$PACKAGE_NAME".desktop
sed -i "s|^Icon=.*|Icon=/opt/apps/$PACKAGE_NAME/entries/icons/hicolor/${ICON_SIZE}x${ICON_SIZE}/apps/$PACKAGE_NAME|" \
./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/entries/applications/"$PACKAGE_NAME".desktop
sed -i "s|^Categories=.*|Categories=$CATEGORY;|" \
./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/entries/applications/"$PACKAGE_NAME".desktop
mkdir ./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/files
mv ./squashfs-root/* ./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/files
mv ./squashfs-root/.[!.]* ./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/files
rmdir ./squashfs-root
touch ./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/info
{
echo "{"
echo -e "\t\"appid\": \"$PACKAGE_NAME\""
echo "}"
} >>./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME"/info
mkdir ./"$PACKAGE_NAME"/DEBIAN
touch ./"$PACKAGE_NAME"/DEBIAN/control
touch ./"$PACKAGE_NAME"/DEBIAN/postinst
INSTALLED_SIZE=$(du -sk ./"$PACKAGE_NAME"/opt/apps/"$PACKAGE_NAME" | cut -f1)
{
echo "Package: ""$PACKAGE_NAME"
echo "Version: ""$VERSION"
echo "Architecture: ""$ARCHITECTURE"
echo "Section: utils"
echo "Priority: Optional"
echo "Installed-Size: ""$INSTALLED_SIZE"
echo "Developer: ""$DEVELOPER"" <""$DEVELOPER_MAIL"">"
echo "Maintainer: ""$MAINTAINER"" <""$MAINTAINER_MAIL"">"
echo "Homepage: ""$HOMEPAGE"
echo "Description: ""$SIMPLE_DESCRIPTION"
echo " ""$DETAILED_DESCRIPTION"
} >>./"$PACKAGE_NAME"/DEBIAN/control
{
echo "#!/bin/bash"
echo "chmod -R 777 /opt/apps/""$PACKAGE_NAME""/*"
echo "ln -s /opt/apps/$PACKAGE_NAME/entries/icons/hicolor/${ICON_SIZE}x${ICON_SIZE}/apps/$PACKAGE_NAME.png \
/usr/share/icons/hicolor/${ICON_SIZE}x${ICON_SIZE}/apps/$PACKAGE_NAME.png"
} >>./"$PACKAGE_NAME"/DEBIAN/postinst
fakeroot chmod 755 ./"$PACKAGE_NAME"/DEBIAN
fakeroot chmod 644 ./"$PACKAGE_NAME"/DEBIAN/control
fakeroot chmod 755 ./"$PACKAGE_NAME"/DEBIAN/postinst
echo "Construct Package Successfully!"
fakeroot dpkg -b ./"$PACKAGE_NAME" . >/dev/null && echo "Make deb Successfully"
rm ./"$APPIMAGE_NAME"
rm -rf ./"$PACKAGE_NAME"