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

import json
import os
import sys

SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
FUCHSIA_ROOT = os.path.dirname(  # $root
    os.path.dirname(  # scripts
        SCRIPT_DIR))  # tests


# Stdin: lines of URLs of tests
# Stdout: lines of corresponding GN labels (empty line for no match)
# Assumes that you called `fx set ...`
def main():
    with open(os.path.join(FUCHSIA_ROOT,
                           'out/default/tests.json')) as json_file:
        tests_json = json.loads(json_file.read())
        url_to_label = {
            entry['test']['name']: entry['test']['label']
            for entry in tests_json
        }
        for line in sys.stdin:
            print url_to_label.get(line.strip(), '')

    return 0


if __name__ == '__main__':
    sys.exit(main())
