# -*- mode: python -*-
# qemu_helpers: Helpers to find QEMU and handle its quirks
# Copyright © 2014 Andy Lutomirski
# Licensed under the GPLv2, which is available in the virtme distribution
# as a file called LICENSE with SHA-256 hash:
# 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643

import os
import re
import shutil
import subprocess

class Qemu(object):
    def __init__(self, arch):
        self.arch = arch

        qemubin = shutil.which('qemu-system-%s' % arch)
        if qemubin is None and arch == os.uname().machine:
            qemubin = shutil.which('qemu-kvm')
        if qemubin is None:
            raise ValueError('cannot find qemu for %s' % arch)

        self.qemubin = qemubin
        self.version = None

    def probe(self):
        if self.version is None:
            self.version = subprocess.check_output([self.qemubin, '--version'])\
                                     .decode('utf-8')
            self.cannot_overmount_virtfs = (
                re.search(r'version 1\.[012345]', self.version) is not None)

    def quote_optarg(self, a):
        """Quote an argument to an option."""
        return a.replace(',', ',,')

