"""
Collects files matching glob patterns and writes a depfile.
Updates a marker file with a timestamp.
"""
import argparse
import glob
import os
def match_sources(patterns):
files = set()
for pattern in patterns:
matches = glob.glob(pattern, recursive=True)
for m in matches:
if os.path.isfile(m):
files.add(m)
return sorted(files)
def write_depfile(depfile, output_file, deps):
with open(depfile, 'w') as output:
output.write(f'{output_file}:')
for dep in deps:
output.write(f' {dep}')
output.write('\n')
def main():
parser = argparse.ArgumentParser(
description='Collect files matching glob patterns and write a depfile'
)
parser.add_argument('--source', action='append', default=[],
help='Glob pattern to match files (repeatable)')
parser.add_argument('--marker', help='Marker file to update')
parser.add_argument('--depfile', help='Depfile path')
args = parser.parse_args()
matched_files = match_sources(args.source)
write_depfile(args.depfile, args.marker, matched_files)
with open(args.marker, 'w') as output:
for f in matched_files:
output.write(f + '\n')
if __name__ == '__main__':
main()