1 # -*- coding: utf-8 -*-
5 # check xdg file format violation
7 # http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
10 from Filter import addDetails, printError
11 from Pkg import getstatusoutput, is_utf8
15 class MenuXDGCheck(AbstractCheck.AbstractFilesCheck):
17 # desktop file need to be in $XDG_DATA_DIRS
18 # $ echo $XDG_DATA_DIRS/applications
19 # /var/lib/menu-xdg:/usr/share
20 AbstractCheck.AbstractFilesCheck.__init__(
21 self, "MenuXDGCheck", "(?:/usr/share|/etc/opt/.*/share|/opt/.*)/applications/.*\.desktop$")
23 def check_file(self, pkg, filename):
24 f = pkg.dirName() + filename
25 st = getstatusoutput(('desktop-file-validate', f), True)
28 for line in st[1].splitlines():
30 printError(pkg, 'invalid-desktopfile', filename,
31 line.split('error: ')[1])
34 printError(pkg, 'invalid-desktopfile', filename)
36 printError(pkg, 'non-utf8-desktopfile', filename)
39 check = MenuXDGCheck()
42 'invalid-desktopfile',
43 '''.desktop file is not valid, check with desktop-file-validate''',
45 'non-utf8-desktopfile',
46 '''.desktop file is not encoded in UTF-8''',
50 # indent-tabs-mode: nil