on bce304a help sign in
bat/tests/syntax-tests/create_highlighted_versions.py
88 lines 2.6 kB history raw
1#!/usr/bin/env python3
3import subprocess
4import glob
5import sys
6import os.path as path
7import os
8import argparse
11BAT_OPTIONS = [
12 "--no-config",
13 "--style=plain",
14 "--color=always",
15 "--theme='1337'",
16 "--italic-text=always",
20def create_highlighted_versions(output_basepath):
21 root = os.path.dirname(os.path.abspath(__file__))
23 for source in glob.glob(path.join(root, "source", "*", "*")):
24 try:
25 env = os.environ.copy()
26 env.pop("PAGER", None)
27 env.pop("BAT_PAGER", None)
28 env.pop("BAT_CONFIG_PATH", None)
29 env.pop("BAT_STYLE", None)
30 env.pop("BAT_THEME", None)
31 env.pop("BAT_TABS", None)
32 env["COLORTERM"] = "truecolor" # make sure to output 24bit colors
34 bat_output = subprocess.check_output(
35 ["bat"] + BAT_OPTIONS + [source], stderr=subprocess.PIPE, env=env,
36 )
38 source_dirname = path.basename(path.dirname(source))
39 source_filename = path.basename(source)
41 if source_filename == "LICENSE.md":
42 continue
44 output_dir = path.join(output_basepath, source_dirname)
45 output_path = path.join(output_dir, source_filename)
47 os.makedirs(output_dir, exist_ok=True)
49 with open(output_path, "wb") as output_file:
50 output_file.write(bat_output)
52 print("Created '{}'".format(output_path))
53 except subprocess.CalledProcessError as err:
54 print(
55 "=== Error: Could not highlight source file '{}".format(source),
56 file=sys.stderr,
57 )
58 print(
59 "=== bat stdout:\n{}".format(err.stdout.decode("utf-8")),
60 file=sys.stderr,
61 )
62 print(
63 "=== bat stderr:\n{}".format(err.stderr.decode("utf-8")),
64 file=sys.stderr,
65 )
66 sys.exit(1)
67 except FileNotFoundError:
68 print("Error: Could not execute 'bat'. Please make sure that the executable is available on the PATH.")
69 sys.exit(1)
72if __name__ == "__main__":
73 parser = argparse.ArgumentParser(
74 description="This script creates syntax-highlighted versions of all "
75 "files in the 'source' directory."
76 )
77 parser.add_argument(
78 "--output",
79 "-O",
80 metavar="PATH",
81 help="Output directory",
82 required=True,
83 type=str,
84 )
86 args = parser.parse_args()
88 create_highlighted_versions(output_basepath=args.output)