| import os |
|
|
| import requests |
| import yaml |
| from colorama import Fore |
| from git import Repo |
|
|
|
|
| def clean_input(prompt: str = ""): |
| try: |
| return input(prompt) |
| except KeyboardInterrupt: |
| print("You interrupted Auto-GPT") |
| print("Quitting...") |
| exit(0) |
|
|
|
|
| def validate_yaml_file(file: str): |
| try: |
| with open(file, encoding="utf-8") as fp: |
| yaml.load(fp.read(), Loader=yaml.FullLoader) |
| except FileNotFoundError: |
| return (False, f"The file {Fore.CYAN}`{file}`{Fore.RESET} wasn't found") |
| except yaml.YAMLError as e: |
| return ( |
| False, |
| f"There was an issue while trying to read with your AI Settings file: {e}", |
| ) |
|
|
| return (True, f"Successfully validated {Fore.CYAN}`{file}`{Fore.RESET}!") |
|
|
|
|
| def readable_file_size(size, decimal_places=2): |
| """Converts the given size in bytes to a readable format. |
| Args: |
| size: Size in bytes |
| decimal_places (int): Number of decimal places to display |
| """ |
| for unit in ["B", "KB", "MB", "GB", "TB"]: |
| if size < 1024.0: |
| break |
| size /= 1024.0 |
| return f"{size:.{decimal_places}f} {unit}" |
|
|
|
|
| def get_bulletin_from_web() -> str: |
| try: |
| response = requests.get( |
| "https://raw.githubusercontent.com/Significant-Gravitas/Auto-GPT/master/BULLETIN.md" |
| ) |
| if response.status_code == 200: |
| return response.text |
| except: |
| return "" |
|
|
|
|
| def get_current_git_branch() -> str: |
| try: |
| repo = Repo(search_parent_directories=True) |
| branch = repo.active_branch |
| return branch.name |
| except: |
| return "" |
|
|
|
|
| def get_latest_bulletin() -> str: |
| exists = os.path.exists("CURRENT_BULLETIN.md") |
| current_bulletin = "" |
| if exists: |
| current_bulletin = open("CURRENT_BULLETIN.md", "r", encoding="utf-8").read() |
| new_bulletin = get_bulletin_from_web() |
| is_new_news = new_bulletin != current_bulletin |
|
|
| if new_bulletin and is_new_news: |
| open("CURRENT_BULLETIN.md", "w", encoding="utf-8").write(new_bulletin) |
| return f" {Fore.RED}::UPDATED:: {Fore.CYAN}{new_bulletin}{Fore.RESET}" |
| return current_bulletin |
|
|