# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from __future__ import absolute_import, unicode_literals, print_function

import os
import subprocess
import tempfile

from mozlint import formatters


def get_editor():
    return os.environ.get('EDITOR')


def edit_results(results):
    if not results:
        return

    editor = get_editor()
    if not editor:
        print('warning: could not find a default editor')
        return

    name = os.path.basename(editor)
    if name in ('vim', 'nvim', 'gvim'):
        cmd = [
            editor,
            # need errorformat to match both Error and Warning, with or without a column
            '--cmd', 'set errorformat+=%f:\\ line\\ %l\\\\,\\ col\\ %c\\\\,\\ %trror\\ -\\ %m',
            '--cmd', 'set errorformat+=%f:\\ line\\ %l\\\\,\\ col\\ %c\\\\,\\ %tarning\\ -\\ %m',
            '--cmd', 'set errorformat+=%f:\\ line\\ %l\\\\,\\ %trror\\ -\\ %m',
            '--cmd', 'set errorformat+=%f:\\ line\\ %l\\\\,\\ %tarning\\ -\\ %m',
            # start with quickfix window opened
            '-c', 'copen',
            # running with -q seems to open an empty buffer in addition to the
            # first file, this removes that empty buffer
            '-c', '1bd',
        ]

        with tempfile.NamedTemporaryFile() as fh:
            s = formatters.get('compact', summary=False)(results)
            fh.write(s)
            fh.flush()

            cmd.extend(['-q', fh.name])
            subprocess.call(cmd)

    else:
        for path, errors in results.iteritems():
            subprocess.call([editor, path])
