blob: 721b1ad48d0970a828dbb731a6a97c4b5b2f4d86 [file] [log] [blame]
#!/usr/bin/env python
# modify-non-primary-files.py - Fake build while modifying files -*- python -*-
#
# 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
#
# ----------------------------------------------------------------------------
#
# modify-non-primary-files.py simulates a build where the user is modifying the
# source files during compilation.
#
# ----------------------------------------------------------------------------
from __future__ import print_function
import os
import sys
assert sys.argv[1] == '-frontend'
if '-primary-file' in sys.argv:
primaryFileIndex = sys.argv.index('-primary-file') + 1
primaryFile = sys.argv[primaryFileIndex]
# Modify all files after the primary file.
# Ideally this would modify every non-primary file, but that's harder to
# infer without actually parsing the arguments.
for file in sys.argv[primaryFileIndex + 1:]:
if file.startswith('-'):
break
os.utime(file, None)
else:
primaryFile = None
outputFile = sys.argv[sys.argv.index('-o') + 1]
# Update the output file mtime, or create it if necessary.
# From http://stackoverflow.com/a/1160227.
with open(outputFile, 'a'):
os.utime(outputFile, None)
if primaryFile:
print("Handled", os.path.basename(primaryFile))
else:
print("Produced", os.path.basename(outputFile))