graph LR
Git_Hoster_Abstraction["Git Hoster Abstraction"]
GitLab_Hoster_Implementation["GitLab Hoster Implementation"]
Local_Hoster_Implementation["Local Hoster Implementation"]
Git_Operations_Core["Git Operations Core"]
Git_Specific_Error_Handling["Git-Specific Error Handling"]
GitLab_Hoster_Implementation -- "implements" --> Git_Hoster_Abstraction
Local_Hoster_Implementation -- "implements" --> Git_Hoster_Abstraction
GitLab_Hoster_Implementation -- "uses" --> Git_Operations_Core
Local_Hoster_Implementation -- "uses" --> Git_Operations_Core
Git_Operations_Core -- "raises/handles" --> Git_Specific_Error_Handling
GitLab_Hoster_Implementation -- "raises/handles" --> Git_Specific_Error_Handling
Local_Hoster_Implementation -- "raises/handles" --> Git_Specific_Error_Handling
Application_Services -- "depends on" --> Git_Hoster_Abstraction
The External Integration Layer in foxops provides a robust and unified interface for interacting with various Git hosting platforms, abstracting away their specific details. This layer is crucial for a DevOps/GitOps automation tool as it enables seamless communication with source code repositories, a core requirement for managing infrastructure as code and application deployments.
This component defines a generic interface (Hoster) that abstracts the specific details of different Git hosting platforms. This allows the higher-level application logic to interact with any supported hoster in a uniform manner, promoting loose coupling and extensibility. It defines the contract for hoster-specific operations like creating merge requests, checking project existence, and retrieving reconciliation statuses.
Related Classes/Methods:
This component provides the concrete implementation of the Hoster interface specifically for GitLab. It handles API calls unique to GitLab for tasks such as managing merge requests, verifying project existence, and fetching reconciliation statuses, translating generic Hoster operations into GitLab-specific API interactions.
Related Classes/Methods:
This component provides a local, file-system-based implementation of the Hoster interface. It is primarily used for testing, development, and potentially local dry-runs, simulating Git hoster functionalities (like merge requests) without requiring a live remote Git service. It manages local repositories and simulates merge request workflows within the file system.
Related Classes/Methods:
This component provides the foundational capabilities for interacting with Git repositories locally. It encapsulates low-level Git commands and manages the state of a local Git working directory. It acts as the direct interface to Git CLI operations, ensuring consistent and reliable execution of Git commands such as cloning, committing, and pushing.
Related Classes/Methods:
This component defines a hierarchy of custom exceptions specifically for Git-related operations. This allows for precise error handling and clearer communication of issues originating from Git interactions, distinguishing them from other application errors and enabling specific recovery strategies.
Related Classes/Methods: