diff --git a/README.md b/README.md index e5c23db..9459ae8 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ to set the game icon on Windows. `--package-name` Set the name of the package and the command that will be used to launch your game. By default, it is the name of your project converted to lowercase, with eventual spaces replaced by dashes. -`--version` Set the version of your package. +`--package-version` Set the version of your package. #### ANDROID Note that every argument passed to the options should be alphanumerical, diff --git a/love-release.1 b/love-release.1 index 4ca4bc9..b3a28b9 100644 --- a/love-release.1 +++ b/love-release.1 @@ -103,7 +103,7 @@ Set the name of the package and the command that will be use to launch your game By default, it is the name of your project converted to lowercase, with eventual spaces replaced by dashes. .TP -.B \-\-version \fIversion\fR +.B \-\-package\-version \fIversion\fR Set the version of your package. .SH ANDROID Note that every argument passed to the options should be alphanumerical, diff --git a/love-release.sh b/love-release.sh index e4e8893..05d2451 100755 --- a/love-release.sh +++ b/love-release.sh @@ -14,15 +14,19 @@ LOVE_VERSION=0.9.1 ## - a colon ":" if it requires an argument ## SCRIPT_ARGS="a; osname:" -SCRIPT_ARGS="l; w." +SCRIPT_ARGS="l; d; w." ## Windows SCRIPT_ARGS="icon: $SCRIPT_ARGS" +## Debian +SCRIPT_ARGS="package-version: maintainer-name: maintainer-email: homepage: description: package-name: $SCRIPT_ARGS" + ## Add a short summary of your platform script here ## SHORT_HELP=" -a Create an executable for a ## --osname Create an executable for osname" SHORT_HELP=" -l Create a plain Love file + -d Create a Debian package -w, Create a Windows application -w32 Create a Windows x86 application -w64 Create a Windows x64 application" @@ -184,6 +188,8 @@ do ## fi if [ "$OPTOPT" = "l" ]; then source "$PLATFORMS_DIR"/love.sh + elif [ "$OPTOPT" = "d" ]; then + source "$PLATFORMS_DIR"/debian.sh elif [ "$OPTOPT" = "w" ]; then if [ "$OPTARG" = "32" ]; then RELEASE_WIN_32=true diff --git a/scripts/debian.sh b/scripts/debian.sh new file mode 100644 index 0000000..42484ab --- /dev/null +++ b/scripts/debian.sh @@ -0,0 +1,116 @@ +# Debian package +init_module "Debian" + + +# Options +package_name_defined_argument=false +while getoptex "$SCRIPT_ARGS" "$@" +do + if [ "$OPTOPT" = "package-version" ]; then + PACKAGE_VERSION=$OPTARG + elif [ "$OPTOPT" = "homepage" ]; then + PROJECT_HOMEPAGE=$OPTARG + elif [ "$OPTOPT" = "description" ]; then + PROJECT_DESCRIPTION=$OPTARG + elif [ "$OPTOPT" = "maintainer-name" ]; then + MAINTAINER_NAME=$OPTARG + elif [ "$OPTOPT" = "maintainer-email" ]; then + MAINTAINER_EMAIL=$OPTARG + elif [ "$OPTOPT" = "package-name" ]; then + PACKAGE_NAME=$OPTARG + package_name_defined_argument=true + fi +done +if [ "$package_name_defined_argument" = false ]; then + PACKAGE_NAME=$(echo $PROJECT_NAME | sed -e 's/[^-a-zA-Z0-9_]/-/g') +fi + + +create_love_file + + +# Debian +MISSING_INFO=0 +ERROR_MSG="Could not build Debian package." +if [ -z "$PACKAGE_VERSION" ]; then + MISSING_INFO=1 + ERROR_MSG="$ERROR_MSG\nMissing project's version. Use --package-version." +fi +if [ -z "$PROJECT_HOMEPAGE" ]; then + MISSING_INFO=1 + ERROR_MSG="$ERROR_MSG\nMissing project's homepage. Use --homepage." +fi +if [ -z "$PROJECT_DESCRIPTION" ]; then + MISSING_INFO=1 + ERROR_MSG="$ERROR_MSG\nMissing project's description. Use --description." +fi +if [ -z "$MAINTAINER_NAME" ]; then + MISSING_INFO=1 + ERROR_MSG="$ERROR_MSG\nMissing maintainer's name. Use --maintainer-name." +fi +if [ -z "$MAINTAINER_EMAIL" ]; then + MISSING_INFO=1 + ERROR_MSG="$ERROR_MSG\nMissing maintainer's email. Use --maintainer-email." +fi +if [ "$MISSING_INFO" -eq 1 ]; then + exit_module "$MISSING_INFO" "$ERROR_MSG" +fi + + +TEMP=`mktemp -d` +mkdir -p $TEMP/DEBIAN + +echo "Package: $PACKAGE_NAME" > $TEMP/DEBIAN/control +echo "Version: $PACKAGE_VERSION" >> $TEMP/DEBIAN/control +echo "Architecture: all" >> $TEMP/DEBIAN/control +echo "Maintainer: $MAINTAINER_NAME <$MAINTAINER_EMAIL>" >> $TEMP/DEBIAN/control +echo "Installed-Size: $(echo "$(stat -c %s "$PROJECT_NAME".love) / 1024" | bc)" >> $TEMP/DEBIAN/control +echo "Depends: love (>= $LOVE_VERSION)" >> $TEMP/DEBIAN/control +echo "Priority: extra" >> $TEMP/DEBIAN/control +echo "Homepage: $PROJECT_HOMEPAGE" >> $TEMP/DEBIAN/control +echo "Description: $PROJECT_DESCRIPTION" >> $TEMP/DEBIAN/control +chmod 0644 $TEMP/DEBIAN/control + +DESKTOP=$TEMP/usr/share/applications/"$PACKAGE_NAME".desktop +mkdir -p $TEMP/usr/share/applications +echo "[Desktop Entry]" > $DESKTOP +echo "Name=$PROJECT_NAME" >> $DESKTOP +echo "Comment=$PROJECT_DESCRIPTION" >> $DESKTOP +echo "Exec=$PACKAGE_NAME" >> $DESKTOP +echo "Type=Application" >> $DESKTOP +echo "Categories=Game;" >> $DESKTOP +echo "Icon=love" >> $DESKTOP +chmod 0644 $DESKTOP + +PACKAGE_DIR=/usr/share/games/"$PACKAGE_NAME"/ +PACKAGE_LOC=$PACKAGE_NAME-$PACKAGE_VERSION.love + +mkdir -p $TEMP"$PACKAGE_DIR" +cp "$LOVE_FILE" $TEMP"$PACKAGE_DIR""$PACKAGE_LOC" +chmod 0644 $TEMP"$PACKAGE_DIR""$PACKAGE_LOC" + +BIN_LOC=/usr/bin/ +mkdir -p $TEMP$BIN_LOC +echo "#!/usr/bin/env bash" > $TEMP$BIN_LOC"$PACKAGE_NAME" +echo "set -e" >> $TEMP$BIN_LOC"$PACKAGE_NAME" +echo "love $PACKAGE_DIR$PACKAGE_LOC" >> $TEMP$BIN_LOC"$PACKAGE_NAME" +chmod 0755 $TEMP$BIN_LOC"$PACKAGE_NAME" + +cd $TEMP +for line in $(find usr/ -type f); do + md5sum $line >> $TEMP/DEBIAN/md5sums +done +chmod 0644 $TEMP/DEBIAN/md5sums + +for line in $(find usr/ -type d); do + chmod 0755 $line +done + +fakeroot dpkg-deb -b $TEMP "$RELEASE_DIR"/"$PACKAGE_NAME"-"$PACKAGE_VERSION"_all.deb +cd "$RELEASE_DIR" +rm -rf $TEMP + + +remove_love_file +exit_module +