Skip to content
Snippets Groups Projects
Commit ae2bb02f authored by Julien (jvoisin) Voisin's avatar Julien (jvoisin) Voisin
Browse files

Implement a check for dependencies in mat2

Example use:

```
$ mat2 -c
Dependencies required for MAT2 0.1.3:
- Cairo: yes
- Exiftool: yes
- GdkPixbuf from PyGobject: yes
- Mutagen: yes
- Poppler from PyGobject: yes
- PyGobject: yes
```

This should close #35
parent 22e3918f
No related branches found
No related tags found
No related merge requests found
Pipeline #17573 failed
#!/bin/env python3
import os
import collections
import importlib
from typing import Dict
# make pyflakes happy
assert Dict
# A set of extension that aren't supported, despite matching a supported mimetype
UNSUPPORTED_EXTENSIONS = {
'.asc',
......@@ -17,3 +25,28 @@ UNSUPPORTED_EXTENSIONS = {
'.xsd',
'.xsl',
}
DEPENDENCIES = {
'cairo': 'Cairo',
'gi': 'PyGobject',
'gi.repository.GdkPixbuf': 'GdkPixbuf from PyGobject',
'gi.repository.Poppler': 'Poppler from PyGobject',
'mutagen': 'Mutagen',
}
def check_dependencies() -> dict:
ret = collections.defaultdict(bool) # type: Dict[str, bool]
exiftool = '/usr/bin/exiftool'
ret['Exiftool'] = False
if os.path.isfile(exiftool) and os.access(exiftool, os.X_OK):
ret['Exiftool'] = True
for key, value in DEPENDENCIES.items():
ret[value] = True
try:
importlib.import_module(key)
except ImportError:
ret[value] = False
return ret
......@@ -9,7 +9,7 @@ import argparse
import multiprocessing
try:
from libmat2 import parser_factory, UNSUPPORTED_EXTENSIONS
from libmat2 import parser_factory, UNSUPPORTED_EXTENSIONS, check_dependencies
except ValueError as e:
print(e)
sys.exit(1)
......@@ -36,6 +36,9 @@ def create_arg_parser():
version='MAT2 %s' % __version__)
parser.add_argument('-l', '--list', action='store_true',
help='list all supported fileformats')
parser.add_argument('-c', '--check-dependencies', action='store_true',
help='check if MAT2 has all the dependencies it needs')
info = parser.add_mutually_exclusive_group()
info.add_argument('-s', '--show', action='store_true',
......@@ -108,9 +111,14 @@ def main():
args = arg_parser.parse_args()
if not args.files:
if not args.list:
if args.list:
show_parsers()
elif args.check_dependencies:
print("Dependencies required for MAT2 %s:" % __version__)
for key, value in sorted(check_dependencies().items()):
print('- %s: %s' % (key, 'yes' if value else 'no'))
else:
return arg_parser.print_help()
show_parsers()
return 0
elif args.show:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment