diff options
Diffstat (limited to 'misc/scripts/dotnet_format.py')
-rwxr-xr-x | misc/scripts/dotnet_format.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/misc/scripts/dotnet_format.py b/misc/scripts/dotnet_format.py new file mode 100755 index 0000000000..51fd7a1223 --- /dev/null +++ b/misc/scripts/dotnet_format.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import glob +import os +import sys + +if len(sys.argv) < 2: + print("Invalid usage of dotnet_format.py, it should be called with a path to one or multiple files.") + sys.exit(1) + +# Create dummy generated files, if needed. +for path in [ + "modules/mono/SdkPackageVersions.props", +]: + if os.path.exists(path): + continue + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, "w", encoding="utf-8", newline="\n") as f: + f.write("<Project />") + +# Avoid importing GeneratedIncludes.props. +os.environ["GodotSkipGenerated"] = "true" + +# Match all the input files to their respective C# project. +projects = { + path: " ".join([f for f in sys.argv[1:] if os.path.commonpath([f, path]) == path]) + for path in [os.path.dirname(f) for f in glob.glob("**/*.csproj", recursive=True)] +} + +# Run dotnet format on all projects with more than 0 modified files. +for path, files in projects.items(): + if files: + os.system(f"dotnet format {path} --include {files}") |