xref: /aosp_15_r20/external/pytorch/torchgen/_autoheuristic/merge_data.py (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1import sys
2from typing import List
3
4
5def merge_txt_files(file_list: List[str], output_file: str) -> None:
6    if not file_list:
7        print("No input files provided.")
8        return
9
10    metadata: List[str] = []
11    content: List[str] = []
12
13    # Read metadata and content from all files
14    for file_path in file_list:
15        try:
16            with open(file_path) as file:
17                lines = file.readlines()
18                if len(lines) < 2:
19                    print(
20                        f"Error: {file_path} does not have enough lines for metadata."
21                    )
22                    return
23
24                file_metadata = lines[:2]
25                file_content = lines[2:]
26
27                if not metadata:
28                    metadata = file_metadata
29                elif metadata != file_metadata:
30                    print(f"Error: Metadata mismatch in {file_path}")
31                    print("Expected metadata:")
32                    print("".join(metadata))
33                    print(f"Metadata in {file_path}:")
34                    print("".join(file_metadata))
35                    return
36
37                content.extend(file_content)
38        except OSError as e:
39            print(f"Error reading file {file_path}: {e}")
40            return
41
42    # Write merged content to output file
43    try:
44        with open(output_file, "w") as outfile:
45            outfile.writelines(metadata)
46            outfile.writelines(content)
47        print(f"Successfully merged files into {output_file}")
48    except OSError as e:
49        print(f"Error writing to output file {output_file}: {e}")
50
51
52if __name__ == "__main__":
53    if len(sys.argv) < 3:
54        print(
55            "Usage: python script.py output_file.txt input_file1.txt input_file2.txt ..."
56        )
57    else:
58        output_file = sys.argv[1]
59        input_files = sys.argv[2:]
60        merge_txt_files(input_files, output_file)
61