#!/usr/bin/env python3
# check-filelist-abc.py - Fake build to test driver-produced -filelists.
#
# This source file is part of the Swift.org open source project
#
# Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
# Licensed under Apache License v2.0 with Runtime Library Exception
#
# See https://swift.org/LICENSE.txt for license information
# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
#
# ----------------------------------------------------------------------------

import os
import sys

assert sys.argv[1] == '-frontend'

if '-primary-file' in sys.argv:
    primaryFile = sys.argv[sys.argv.index('-primary-file') + 1]
else:
    primaryFile = None

if primaryFile and primaryFile.endswith(".bc"):
    sys.exit()

filelistFile = sys.argv[sys.argv.index('-filelist') + 1]

with open(filelistFile, 'r') as f:
    lines = f.readlines()
    assert (lines[0].endswith("/a.swift\n") or
            lines[0].endswith("/a.swiftmodule\n"))
    assert (lines[1].endswith("/b.swift\n") or
            lines[1].endswith("/b.swiftmodule\n"))
    assert (lines[2].endswith("/c.swift\n") or
            lines[2].endswith("/c.swiftmodule\n"))

if primaryFile:
    print("Command-line primary", os.path.basename(primaryFile))

if '-primary-filelist' in sys.argv:
    primaryFilelistFile = sys.argv[sys.argv.index('-primary-filelist') + 1]
    with open(primaryFilelistFile, 'r') as f:
        lines = f.readlines()
        assert len(lines) == 1
        print("Handled", os.path.basename(lines[0]).rstrip())
elif lines[0].endswith(".swiftmodule\n"):
    print("Handled modules")
else:
    print("Handled all")


if '-supplementary-output-file-map' in sys.argv:
    supplementaryOutputMapFile = \
        sys.argv[sys.argv.index('-supplementary-output-file-map') + 1]
    with open(supplementaryOutputMapFile, 'r') as f:
        # The output is in DenseMap order, which is unstable, therefore sort.
        lines = sorted(f.readlines())
        for line in lines:
            print("Supplementary", line.rstrip())

if '-num-threads' in sys.argv:
    outputListFile = sys.argv[sys.argv.index('-output-filelist') + 1]
    with open(outputListFile, 'r') as f:
        lines = f.readlines()
        assert lines[0].endswith("/a.o\n") or lines[0].endswith("/a.bc\n")
        assert lines[1].endswith("/b.o\n") or lines[1].endswith("/b.bc\n")
        assert lines[2].endswith("/c.o\n") or lines[2].endswith("/c.bc\n")
    print("...with output!")
