diff options
author | Chris Boesch <chrboesch@noreply.codeberg.org> | 2023-04-25 12:13:58 +0200 |
---|---|---|
committer | Chris Boesch <chrboesch@noreply.codeberg.org> | 2023-04-25 12:13:58 +0200 |
commit | cffbbff8bdff7198ba1b166c360f7f62116680ef (patch) | |
tree | 7c680a365934803bee939fd9caea4c3de2be9991 /tools/check-exercises.py | |
parent | 752efd891da5d640b345849471357ba176fe4d1b (diff) |
replaced check-exercises.pu with check-exercises.zig
Diffstat (limited to 'tools/check-exercises.py')
-rwxr-xr-x | tools/check-exercises.py | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/tools/check-exercises.py b/tools/check-exercises.py deleted file mode 100755 index fa0b5cb..0000000 --- a/tools/check-exercises.py +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env python - -import difflib -import io -import os -import os.path -import subprocess -import sys - - -IGNORE = subprocess.DEVNULL -PIPE = subprocess.PIPE - -EXERCISES_PATH = "exercises" -HEALED_PATH = "patches/healed" -PATCHES_PATH = "patches/patches" - - -# Heals all the exercises. -def heal(): - maketree(HEALED_PATH) - - with os.scandir(EXERCISES_PATH) as it: - for entry in it: - name = entry.name - - original_path = entry.path - patch_path = os.path.join(PATCHES_PATH, patch_name(name)) - output_path = os.path.join(HEALED_PATH, name) - - patch(original_path, patch_path, output_path) - - -# Yields all the healed exercises that are not correctly formatted. -def check_healed(): - term = subprocess.run( - ["zig", "fmt", "--check", HEALED_PATH], stdout=PIPE, text=True - ) - if term.stdout == "" and term.returncode != 0: - term.check_returncode() - - stream = io.StringIO(term.stdout) - for line in stream: - yield line.strip() - - -def main(): - heal() - - # Show the unified diff between the original example and the correctly - # formatted one. - for i, original in enumerate(check_healed()): - if i > 0: - print() - - name = os.path.basename(original) - print(f"checking exercise {name}...\n") - - from_file = open(original) - to_file = zig_fmt_file(original) - - diff = difflib.unified_diff( - from_file.readlines(), to_file.readlines(), name, name + "-fmt" - ) - sys.stderr.writelines(diff) - - -def maketree(path): - return os.makedirs(path, exist_ok=True) - - -# Returns path with the patch extension. -def patch_name(path): - name, _ = os.path.splitext(path) - - return name + ".patch" - - -# Applies patch to original, and write the file to output. -def patch(original, patch, output): - subprocess.run( - ["patch", "-i", patch, "-o", output, original], stdout=IGNORE, check=True - ) - - -# Formats the Zig file at path, and returns the possibly reformatted file as a -# file object. -def zig_fmt_file(path): - with open(path) as stdin: - term = subprocess.run( - ["zig", "fmt", "--stdin"], stdin=stdin, stdout=PIPE, check=True, text=True - ) - - return io.StringIO(term.stdout) - - -main() |