summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/build_profile_docs.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/build_profile_docs.py b/scripts/build_profile_docs.py
new file mode 100755
index 00000000..e0a86f89
--- /dev/null
+++ b/scripts/build_profile_docs.py
@@ -0,0 +1,44 @@
+#! /bin/env python
+import os
+from typing import Any, Generator, Iterable, Type, Dict
+
+from isort._future import dataclass
+from isort.main import _build_arg_parser
+from isort.profiles import profiles
+from isort.settings import _DEFAULT_SETTINGS as config
+
+OUTPUT_FILE = os.path.abspath(
+ os.path.join(os.path.dirname(os.path.abspath(__file__)), "../docs/configuration/profiles.md")
+)
+
+HEADER = """Built-in Profile for isort
+========
+
+The following profiles are built into isort to allow easy interoperability with
+common projects and code styles.
+
+To use any of the listed profiles, use `isort --profile PROFILE_NAME` from the command line, or `profile=PROFILE_NAME` in your configuration file.
+
+"""
+
+def format_profile(profile_name: str, profile: Dict[str, Any]) -> str:
+ options = "\n".join(f" - **{name}**: `{repr(value)}`" for name, value in profile.items())
+ return f"""
+#{profile_name}
+
+{profile.get('descripiton', '')}
+{options}
+"""
+
+
+def document_text() -> str:
+ return f"{HEADER}{''.join(format_profile(profile_name, profile) for profile_name, profile in profiles.items())}"
+
+
+def write_document():
+ with open(OUTPUT_FILE, "w") as output_file:
+ output_file.write(document_text())
+
+
+if __name__ == "__main__":
+ write_document()