#!/usr/bin/env python
# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import os
import sys

import package_version_interval

sys.path.append(
    os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        os.path.pardir,
        os.path.pardir,
        os.path.pardir,
        os.path.pardir,
        'build',
    )
)
import action_helpers

if len(sys.argv) < 3:
    print(
        'Usage: %s output_deps_file input1_deps_file input2_deps_file ...'
        % sys.argv[0]
    )
    sys.exit(1)

output_filename = sys.argv[1]
input_filenames = sys.argv[2:]

package_interval_sets = []
for input_filename in input_filenames:
    for line in open(input_filename):
        # Ignore blank lines
        if not line.strip():
            continue
        # Allow comments starting with '#'
        if line.startswith('#'):
            continue
        line = line.rstrip('\n')
        interval_set = package_version_interval.parse_interval_set(line)
        should_append_interval_set = True
        for i in range(len(package_interval_sets)):
            if package_interval_sets[i].implies(interval_set):
                should_append_interval_set = False
                break
            if interval_set.implies(package_interval_sets[i]):
                should_append_interval_set = False
                package_interval_sets[i] = interval_set
                break
        if should_append_interval_set:
            package_interval_sets.append(interval_set)

with action_helpers.atomic_output(output_filename, mode='w') as output_file:
    lines = [
        interval_set.formatted() + '\n'
        for interval_set in package_interval_sets
    ]
    output_file.write(''.join(sorted(lines)))
