scripts/temp_help/convert_all.py (176 lines of code) (raw):

# -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- import sys import os import subprocess def get_repo_root(): """ Returns the root path to this repository. The root is where .git folder is. """ import os.path here = os.path.dirname(os.path.realpath(__file__)) while not os.path.exists(os.path.join(here, '.git')): here = os.path.dirname(here) return here def comment_import_help(init_file, out_file): f_out = open(out_file, "w") output = "" updated = False with open(init_file, "r") as f_in: for line in f_in: if "import" in line and "_help" in line and not updated: updated = True line = "# " + line output += line f_out.write(output) f_out.close() return updated def decomment_import_help(init_file, out_file): f_out = open(out_file, "w") output = "" updated = False with open(init_file, "r") as f_in: for line in f_in: if "import" in line and "_help" in line and not updated: updated = True line = line.lstrip("# ") output += line f_out.write(output) f_out.close() return updated def install_extension(ext_name): command = "az extension add -n " + ext_name completed = subprocess.run(command.split()) if completed.returncode == 0: print("{} was successfully installed.".format(ext_name)) return True else: print("{} was not installed.".format(ext_name)) return False def uninstall_extension(ext_name): command = "az extension remove -n " + ext_name completed = subprocess.run(command.split()) if completed.returncode == 0: print("{} was successfully uninstalled.".format(ext_name)) return True else: print("{} was not uninstalled.".format(ext_name)) return False if __name__ == "__main__": args = sys.argv[1:] if args: if args[0].lower() == "--core": test = False try: if args[1].lower() == "--test": test = True except IndexError: pass subprocess.run(["python", "./help_convert.py", "--get-all-mods"]) module_names = [] with open("mod.txt", "r") as f: for line in f: module_names.append(line) if "sqlvm" not in module_names: module_names.append("sqlvm") os.remove("mod.txt") successes = 0 with open(os.devnull, 'w') as devnull: # silence stdout by redirecting to devnull for mod in module_names: args = ["python", "./help_convert.py", mod] if test: args.append("--test") completed_process = subprocess.run(args, stdout=devnull) if completed_process.returncode == 0: successes += 1 if successes: print("\n----------------------------------------------------------" "\nSuccessfuly converted {} help.py files to help.yaml files." "\n----------------------------------------------------------".format(successes)) elif args[0].lower() == "--extensions": pass elif args[0].lower() == "--count": # Get info about help.py modules and converted help.yaml modules. src_root = os.path.join(get_repo_root(), "src", "command_modules") py_count = 0 yaml_count = 0 for root, dirs, files in os.walk(src_root): for file in files: if file.endswith("_help.py") and os.path.dirname(root).endswith("command_modules") and os.path.join("build", "lib") not in root: print("Found {}\n".format(os.path.join(root, file))) py_count +=1 if file.endswith("help.yaml") and os.path.dirname(root).endswith("command_modules"): print("Found {}\n".format(os.path.join(root, file))) yaml_count +=1 print("Found {} _help.py files\n".format(py_count)) print("Found {} help.yaml files\n".format(yaml_count)) elif args[0].lower() == "--move-py": src_root = os.path.join(get_repo_root(), "src", "command_modules") py_count = 0 yaml_count = 0 failures = 0 for root, dirs, files in os.walk(src_root): for file in files: if file.endswith("_help.py") and os.path.dirname(root).endswith("command_modules") and os.path.join("build", "lib") not in root: src = os.path.join(root, file) dst = os.path.join(root, "foo.py") print("Found {}\n".format(src)) print("Renaming {}\n\tto {}\n.".format(src, dst)) os.rename(src, dst) py_count +=1 src = os.path.join(root, "__init__.py") dst = os.path.join(root, "__init__2.py") success = comment_import_help(src, dst) if success: os.remove(src) os.rename(dst, src) print("Commented out import in {}\n".format(src)) else: os.remove(dst) print("Failed to comment out import in {}\n".format(src)) failures+=1 print("Renamed {} _help.py files to foo.py.\n".format(py_count)) print("There were {} failures to decomment import statements\n".format(failures)) elif args[0].lower() == "--move-foo": src_root = os.path.join(get_repo_root(), "src", "command_modules") py_count = 0 yaml_count = 0 failures = 0 for root, dirs, files in os.walk(src_root): for file in files: if file.endswith("foo.py") and os.path.dirname(root).endswith("command_modules") and os.path.join("build", "lib") not in root: src = os.path.join(root, file) dst = os.path.join(root, "_help.py") print("Found {}\n".format(src)) print("Renaming {}\n\tto {}\n.".format(src, dst)) os.rename(src, dst) py_count +=1 src = os.path.join(root, "__init__.py") dst = os.path.join(root, "__init__2.py") success = decomment_import_help(src, dst) if success: os.remove(src) os.rename(dst, src) print("De-commented out import in {}\n".format(src)) else: os.remove(dst) print("Failed to de-comment out import in {}\n".format(src)) failures+=1 print("Renamed {} foo.py files to _help.py.\n".format(py_count)) print("There were {} failures to decomment import statements\n".format(failures)) elif args[0].lower() == "--add-extensions": command = "az extension list-available --query [].name -o tsv" completed = subprocess.run(command.split(), stdout=subprocess.PIPE, universal_newlines=True) if completed.returncode == 0: num_installed = 0 extensions = completed.stdout.splitlines() for ext in extensions: success = install_extension(ext) if success: num_installed += 1 print("Installed {} extensions".format(num_installed)) elif args[0].lower() == "--remove-extensions": command = "az extension list --query [].name -o tsv" completed = subprocess.run(command.split(), stdout=subprocess.PIPE, universal_newlines=True) if completed.returncode == 0: num_installed = 0 extensions = completed.stdout.splitlines() for ext in extensions: success = uninstall_extension(ext) if success: num_installed += 1 print("Uninstalled {} extensions".format(num_installed))