#!/usr/bin/python2 -u
# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""
Check if a json file is valid.

This wrapper is invoked through autotest's PRESUBMIT.cfg for every commit
that edits a json file.
"""

import json
import os


class InvalidJsonFile(Exception):
    """Exception to raise when a json file can't be parsed."""


def main():
    """Check if all json files that are a part of this commit are valid."""
    file_list = os.environ.get('PRESUBMIT_FILES')
    if file_list is None:
        raise InvalidJsonFile('Expected a list of presubmit files in '
                              'the PRESUBMIT_FILES environment variable.')

    for f in file_list.split():
        if f.lower().endswith('.json'):
            try:
                with open(f) as json_file:
                    json.load(json_file)
            except ValueError:
                # Re-raise the error to include the file path.
                print ('Presubmit check `check_json_file` failed. If the file '
                       'is meant to be malformated, please do not name it as a '
                       'json file, or you will have to upload the CL using '
                       '--no-verify')
                raise InvalidJsonFile('Invalid json file: %s' % f)


if __name__ == '__main__':
    main()
