mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-05-07 06:23:26 +08:00
* Removed prints * FIxed typing * FIxed typing * Fixed typing * Fixed typing * Fixed typing * Fixed typing * Fixed typing * Fix * Reverted stuff
100 lines
3.0 KiB
Python
100 lines
3.0 KiB
Python
import argparse
|
|
import os
|
|
import sys
|
|
from typing import List, Optional
|
|
|
|
|
|
def clean_input(text: str) -> List[str]:
|
|
text = text.replace(" str ", "")
|
|
text = text.strip()
|
|
text = text.replace("CHOICES_COMMANDS", "")
|
|
text = text.replace("=", "")
|
|
text = text.replace("[", "")
|
|
text = text.replace("]", "")
|
|
text = text.replace("[str]", "")
|
|
text = text.replace("List", "")
|
|
text = text.replace(":", "")
|
|
text = text.replace("str ", "")
|
|
text = text.replace('"', "")
|
|
text = text.replace("'", "")
|
|
text_list = text.split(",")
|
|
return [x.strip() for x in text_list if x]
|
|
|
|
|
|
def main(ignore_files: Optional[str], ignore_commands: Optional[str]):
|
|
"""Checks commands in the repository to ensure they are documented
|
|
|
|
Parameters
|
|
----------
|
|
ignore_files : Optional[str]
|
|
Files that should not be checked
|
|
ignore_commands : Optional[str]
|
|
Commands that should not be checked
|
|
"""
|
|
|
|
ignore_file_list = ignore_files.split(",") if ignore_files else []
|
|
ignore_cmds_list = ignore_commands.split(",") if ignore_commands else []
|
|
path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
gst_path = os.path.join(path, "openbb_terminal/")
|
|
main_yaml_filename = os.path.join(path, "website/data/menu/main.yml")
|
|
|
|
files = []
|
|
commands = []
|
|
for r, _, f in os.walk(gst_path):
|
|
for file in f:
|
|
if file.endswith("_controller.py") and file not in ignore_file_list:
|
|
files.append(os.path.join(r, file))
|
|
|
|
record = 0
|
|
for item in files:
|
|
with open(item) as controller:
|
|
for line in controller:
|
|
if "CHOICES_COMMANDS" in line or record == 1:
|
|
commands += clean_input(line)
|
|
record = 1
|
|
if "]" in line.replace("str]", ""):
|
|
record = 0
|
|
break
|
|
|
|
clean_commands = {
|
|
x for x in commands if x and "#" not in x and x not in ignore_cmds_list
|
|
}
|
|
|
|
with open(main_yaml_filename) as yaml:
|
|
lines = yaml.read()
|
|
|
|
undocumented = [command for command in clean_commands if command not in lines]
|
|
if not undocumented:
|
|
sys.exit(0)
|
|
else:
|
|
print("The following commands do not have documentation:") # noqa: T201
|
|
|
|
undocumented = list(undocumented)
|
|
undocumented.sort()
|
|
for item in undocumented:
|
|
print(item) # noqa: T201
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(
|
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
prog="check_doc",
|
|
description="checks for proper documentation in gst",
|
|
)
|
|
parser.add_argument(
|
|
"--ignore-files",
|
|
dest="files",
|
|
help="The files to not check.",
|
|
type=str,
|
|
)
|
|
parser.add_argument(
|
|
"--ignore-commands",
|
|
dest="commands",
|
|
help="The commands to not check.",
|
|
type=str,
|
|
)
|
|
|
|
ns_parser = parser.parse_args()
|
|
main(ns_parser.files, ns_parser.commands)
|