Blame build-aux/gen-thumbnailer.py

Packit a4058c
#!/usr/bin/env python3
Packit a4058c
Packit a4058c
# Ancillary wrapper around gdk-pixbuf-print-mime-types that sets up a
Packit a4058c
# modified environment in order to use the tools that we just built
Packit a4058c
# instead of the system ones
Packit a4058c
Packit a4058c
import argparse
Packit a4058c
import os
Packit a4058c
import subprocess
Packit a4058c
import sys
Packit a4058c
Packit a4058c
argparser = argparse.ArgumentParser(description='Compile resources')
Packit a4058c
argparser.add_argument('--printer', metavar='PATH', help='Path to gdk-pixbuf-print-mime-types')
Packit a4058c
argparser.add_argument('--pixdata', metavar='PATH', help='Path to gdk-pixbuf-pixdata')
Packit a4058c
argparser.add_argument('--loaders', metavar='PATH', help='Path to the loaders.cache file')
Packit a4058c
argparser.add_argument('--bindir', metavar='PATH', help='Path to the source directory')
Packit a4058c
argparser.add_argument('input', help='Template file')
Packit a4058c
argparser.add_argument('output', help='Output file')
Packit a4058c
Packit a4058c
args = argparser.parse_args()
Packit a4058c
Packit a4058c
newenv = os.environ.copy()
Packit a4058c
newenv['GDK_PIXBUF_PIXDATA'] = args.pixdata
Packit a4058c
newenv['GDK_PIXBUF_MODULE_FILE'] = args.loaders
Packit a4058c
# 'nt': NT-based Windows, see https://docs.python.org/3/library/os.html
Packit a4058c
if os.name == 'nt':
Packit a4058c
    gdk_pixbuf_dll_buildpath = os.path.dirname(args.pixdata)
Packit a4058c
    newenv['PATH'] = gdk_pixbuf_dll_buildpath + os.pathsep + newenv['PATH']
Packit a4058c
Packit a4058c
cmd = args.printer
Packit a4058c
Packit a4058c
mimetypes_out = subprocess.Popen(cmd, env=newenv, stdout=subprocess.PIPE).communicate()[0]
Packit a4058c
if not mimetypes_out:
Packit a4058c
    sys.exit(1)
Packit a4058c
Packit a4058c
infile = open(args.input, 'r')
Packit a4058c
outfile = open(args.output, 'w')
Packit a4058c
Packit a4058c
for line in infile:
Packit a4058c
    line = line.replace('@bindir@', args.bindir)
Packit a4058c
    line = line.replace('@mimetypes@', mimetypes_out.decode('ascii'))
Packit a4058c
    outfile.write(line)
Packit a4058c
Packit a4058c
infile.close()
Packit a4058c
outfile.close()
Packit a4058c
Packit a4058c
sys.exit(0)