[game-data-packager] 01/01: doom_common.py: generate .desktop files for PWADs automatically

Alexandre Detiste detiste-guest at moszumanska.debian.org
Fri Mar 6 10:27:33 UTC 2015


This is an automated email from the git hooks/post-receive script.

detiste-guest pushed a commit to branch master
in repository game-data-packager.

commit 575b1883f3a034cb5af239fa2bcc97bd05093a63
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date:   Fri Mar 6 11:20:53 2015 +0100

    doom_common.py: generate .desktop files for PWADs automatically
    
    remove exceptions for "Doom 2 - No Rest For The Living"
    & "Hexen: Deathkings of the Dark Citadel" expansions,
    this also fix "Chex Quest 2"
    
    as no exception remains nor are foreseen,
    support for exceptions has also been removed,
    but can be added back if needed
---
 data/chex.yaml                          |  1 +
 data/doom-common.desktop.in             |  9 -------
 data/doom2-norest-wad.desktop.in        |  9 -------
 data/hexen-deathkings-data.desktop.in   |  9 -------
 game_data_packager/games/doom_common.py | 43 +++++++++++++++++++++++----------
 5 files changed, 31 insertions(+), 40 deletions(-)

diff --git a/data/chex.yaml b/data/chex.yaml
index cb34051..ca3c42b 100644
--- a/data/chex.yaml
+++ b/data/chex.yaml
@@ -39,3 +39,4 @@ sha1sums: |
   d5b970834b8ff364d377ef04eb7d12fa6035e10a  chex2.wad
 sha256sums: |
   d8eb5277918883f490fb1a4be3c9a8588df2dbaee6dc4beb8df4929148bbffb1  chex.wad
+  ec668ca28b9077ecbcacc4fad5cf2df2127f1e831233723f77420559959652e4  chex2.wad
diff --git a/data/doom-common.desktop.in b/data/doom-common.desktop.in
deleted file mode 100644
index 518579f..0000000
--- a/data/doom-common.desktop.in
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Name=LONG
-GenericName=First Person Shooter Game
-TryExec=ENGINE
-Exec=ENGINE -iwad /usr/share/games/doom/GAME.wad
-Icon=GAME
-Terminal=false
-Type=Application
-Categories=Game
diff --git a/data/doom2-norest-wad.desktop.in b/data/doom2-norest-wad.desktop.in
deleted file mode 100644
index 2592a3e..0000000
--- a/data/doom2-norest-wad.desktop.in
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Name=Doom 2: No Rest for the Living
-GenericName=First Person Shooter Game
-TryExec=ENGINE
-Exec=ENGINE -iwad /usr/share/games/doom/doom2.wad -file /usr/share/games/doom/nerve.wad
-Icon=GAME.png
-Terminal=false
-Type=Application
-Categories=Game
diff --git a/data/hexen-deathkings-data.desktop.in b/data/hexen-deathkings-data.desktop.in
deleted file mode 100644
index 2774afa..0000000
--- a/data/hexen-deathkings-data.desktop.in
+++ /dev/null
@@ -1,9 +0,0 @@
-[Desktop Entry]
-Name=Hexen: Deathkings of the Dark Citadel
-GenericName=First Person Shooter Game
-TryExec=ENGINE
-Exec=ENGINE -iwad /usr/share/games/doom/hexen.wad -file /usr/share/games/doom/GAME.wad
-Icon=GAME.png
-Terminal=false
-Type=Application
-Categories=Game
diff --git a/game_data_packager/games/doom_common.py b/game_data_packager/games/doom_common.py
index cca5bf7..06cdc8b 100644
--- a/game_data_packager/games/doom_common.py
+++ b/game_data_packager/games/doom_common.py
@@ -15,6 +15,7 @@
 # You can find the GPL license text on a Debian system under
 # /usr/share/common-licenses/GPL-2.
 
+import configparser
 import logging
 import os
 import subprocess
@@ -156,7 +157,8 @@ class DoomGameData(GameData):
 
             from_ = os.path.splitext(from_)[0] + '.svgz'
             if os.path.exists(from_):
-                svgdir = os.path.join(destdir, 'usr/share/icons/hicolor/scalable/apps')
+                svgdir = os.path.join(destdir,
+                                      'usr/share/icons/hicolor/scalable/apps')
                 mkdir_p(svgdir)
                 install_data(from_,
                     os.path.join(svgdir, '%s.svgz' % wad_base))
@@ -166,19 +168,34 @@ class DoomGameData(GameData):
 
             appdir = os.path.join(destdir, 'usr/share/applications')
             mkdir_p(appdir)
-            for basename in (package.name, 'doom-common'):
-                from_ = os.path.join(DATADIR, basename + '.desktop.in')
-                if os.path.exists(from_):
-                    copy_with_substitutions(open(from_,
-                        encoding='utf-8'),
-                            open(os.path.join(appdir, '%s.desktop' % package.name),
-                                'w', encoding='utf-8'),
-                            GAME=wad_base,
-                            LONG=(package.longname or self.longname),
-                            ENGINE=(package.engine or self.engine))
-                    break
+
+            desktop = configparser.RawConfigParser()
+            desktop.optionxform = lambda option: option
+            desktop['Desktop Entry'] = {}
+            entry = desktop['Desktop Entry']
+            entry['Name'] = package.longname or self.longname
+            entry['GenericName'] = 'First Person Shooter Game'
+            entry['TryExec'] = engine = package.engine or self.engine
+            if package.expansion_for:
+                for f in self.packages[package.expansion_for].install:
+                    if f.endswith('.wad'):
+                        iwad = f
+                        break
+                else:
+                    raise AssertionError("Couldn't find %s's IWAD" % main_wad)
+                args = (  '-iwad /usr/share/games/doom/' + iwad
+                       + ' -file /usr/share/games/doom/' + main_wad)
             else:
-                raise AssertionError('doom-common.desktop.in should have existed')
+                args = '-iwad /usr/share/games/doom/' + main_wad
+            entry['Exec'] = engine + ' ' + args
+            entry['Icon'] = wad_base
+            entry['Terminal'] = 'false'
+            entry['Type'] = 'Application'
+            entry['Categories'] = 'Game'
+
+            with open(os.path.join(appdir, '%s.desktop' % package.name),
+                      'w', encoding='utf-8') as output:
+                 desktop.write(output, space_around_delimiters=False)
 
             debdir = os.path.join(destdir, 'DEBIAN')
             mkdir_p(debdir)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git



More information about the Pkg-games-commits mailing list