mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-05-18 02:34:38 +02:00
58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import argparse
|
|
from pathlib import Path
|
|
|
|
FILES_FIXED = []
|
|
|
|
def fix_tabs_in_file(file_path):
|
|
"""Replaces tab characters with two spaces in the specified file."""
|
|
with open(file_path, "r", encoding="utf-8") as f:
|
|
lines = f.readlines()
|
|
|
|
if any('\t' in line for line in lines):
|
|
fixed_lines = [line.replace('\t', ' ') for line in lines]
|
|
with open(file_path, "w", encoding="utf-8") as f:
|
|
f.writelines(fixed_lines)
|
|
FILES_FIXED.append(str(file_path))
|
|
|
|
def find_yml_files(path):
|
|
"""Yield all .yml files under a given path recursively."""
|
|
for file in path.rglob("*.yml"):
|
|
if file.is_file():
|
|
yield file
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description="Fix tab characters in all .yml files under a given path (recursively)."
|
|
)
|
|
parser.add_argument(
|
|
"path",
|
|
nargs="?",
|
|
default="./",
|
|
help="Base path to search for .yml files (default: ./)"
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
base_path = Path(args.path).resolve()
|
|
|
|
if not base_path.exists():
|
|
print(f"❌ Path does not exist: {base_path}")
|
|
exit(1)
|
|
|
|
print(f"🔍 Searching for .yml files under: {base_path}\n")
|
|
|
|
for yml_file in find_yml_files(base_path):
|
|
fix_tabs_in_file(yml_file)
|
|
|
|
if FILES_FIXED:
|
|
print("✅ Fixed tab characters in the following files:")
|
|
for f in FILES_FIXED:
|
|
print(f" - {f}")
|
|
else:
|
|
print("✅ No tabs found in any .yml files.")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|