Source code for uhugo.post_install.detect_providers

import os
from pathlib import Path
from typing import Union, List

from pydantic import BaseModel

HERE = os.getcwd()


[docs] class Provider(BaseModel): """ This holds the information about the provider """ name: Union[str, None] = None project: Union[str, None] = None file_name: Union[str, None] = None api_key: Union[str, None] = None account_id: Union[str, None] = None email_address: Union[str, None] = None path: Union[str, None] = None
[docs] def check_hugo_file() -> Provider: """ Checks for ``config.yaml`` or ``config.toml``, if exists then it checks for ``uhugo`` key :return Provider: An object with ``name`` and ``file_name`` """ path = Path(HERE, "config.toml") if not path.exists(): path = Path(HERE, "config.yaml") if not path.exists(): return Provider() else: import yaml try: from yaml import CLoader as Loader, CDumper as Dumper except ImportError: from yaml import Loader, Dumper with open(path) as f: data = yaml.load(f, Loader=Loader) else: import toml with open(path) as f: data = toml.load(f) if "uhugo" not in data: return Provider() return Provider(**data["uhugo"])
[docs] def check_providers_fs() -> List[Provider]: """ Checks file system for any providers that matches the list :return: A Provider """ files = ["netlify.yaml", "vercel.json", "netlify.toml", "wrangler.toml"] providers: List[Provider] = [] for file in files: path = Path(HERE, file) if path.exists(): providers.append(Provider(**{"name": path.name.split(".")[0], "path": path.__str__()})) return providers