| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import logging
- from pathlib import Path
- from typing import Optional
- from pydantic import BaseModel
- logger = logging.getLogger("fastapi_cli")
- class AppConfig(BaseModel):
- app_id: str
- team_id: str
- def get_app_config(path_to_deploy: Path) -> Optional[AppConfig]:
- config_path = path_to_deploy / ".fastapicloud/cloud.json"
- logger.debug("Looking for app config at: %s", config_path)
- if not config_path.exists():
- logger.debug("App config file doesn't exist")
- return None
- logger.debug("App config loaded successfully")
- return AppConfig.model_validate_json(config_path.read_text(encoding="utf-8"))
- README = """
- > Why do I have a folder named ".fastapicloud" in my project? 🤔
- The ".fastapicloud" folder is created when you link a directory to a FastAPI Cloud project.
- > What does the "cloud.json" file contain?
- The "cloud.json" file contains:
- - The ID of the FastAPI app that you linked ("app_id")
- - The ID of the team your FastAPI Cloud project is owned by ("team_id")
- > Should I commit the ".fastapicloud" folder?
- No, you should not commit the ".fastapicloud" folder to your version control system.
- That's why there's a ".gitignore" file in this folder.
- """
- def write_app_config(path_to_deploy: Path, app_config: AppConfig) -> None:
- config_path = path_to_deploy / ".fastapicloud/cloud.json"
- readme_path = path_to_deploy / ".fastapicloud/README.md"
- gitignore_path = path_to_deploy / ".fastapicloud/.gitignore"
- logger.debug("Writing app config to: %s", config_path)
- logger.debug("App config data: %s", app_config)
- config_path.parent.mkdir(parents=True, exist_ok=True)
- config_path.write_text(
- app_config.model_dump_json(),
- encoding="utf-8",
- )
- readme_path.write_text(README, encoding="utf-8")
- gitignore_path.write_text("*")
- logger.debug("App config files written successfully")
|