2023-05-05 16:05:39 -03:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
r"""
|
2025-05-22 08:30:45 -03:00
|
|
|
Embeds a file into a String, a la #embed from C++23
|
2023-05-05 16:05:39 -03:00
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
import argparse
|
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
2025-05-22 08:30:45 -03:00
|
|
|
parser = argparse.ArgumentParser(epilog=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
|
|
|
parser.add_argument("input", help="input file to stringify")
|
|
|
|
|
parser.add_argument("-o", "--output", required=True, help="output file")
|
|
|
|
|
parser.add_argument("-n", "--variable-name", required=True, help="name of the C++ variable")
|
|
|
|
|
parser.add_argument("-s", "--namespace", required=False, help="C++ namespace to put the string into")
|
2023-05-05 16:05:39 -03:00
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
2026-02-21 03:11:31 -03:00
|
|
|
with open(args.output, "w", encoding="utf-8") as f:
|
2024-08-22 08:42:12 -03:00
|
|
|
f.write("#include <AK/String.h>\n")
|
2023-05-05 16:05:39 -03:00
|
|
|
if args.namespace:
|
|
|
|
|
f.write(f"namespace {args.namespace} {{\n")
|
2026-06-04 05:40:32 -03:00
|
|
|
f.write(f"extern String const& {args.variable_name};\n")
|
|
|
|
|
f.write(f'String const& {args.variable_name} = *new String(R"~~~(')
|
2026-02-21 03:11:31 -03:00
|
|
|
with open(args.input, "r", encoding="utf-8") as input:
|
2023-05-05 16:05:39 -03:00
|
|
|
for line in input.readlines():
|
|
|
|
|
f.write(f"{line}")
|
2026-06-04 05:40:32 -03:00
|
|
|
f.write(')~~~"_string);\n')
|
2023-05-05 16:05:39 -03:00
|
|
|
if args.namespace:
|
|
|
|
|
f.write("}\n")
|
|
|
|
|
|
|
|
|
|
|
2025-05-22 08:30:45 -03:00
|
|
|
if __name__ == "__main__":
|
2023-05-05 16:05:39 -03:00
|
|
|
sys.exit(main())
|