summaryrefslogtreecommitdiffstats
path: root/src/debputy/integration_detection.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/debputy/integration_detection.py')
-rw-r--r--src/debputy/integration_detection.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/debputy/integration_detection.py b/src/debputy/integration_detection.py
index f412268..cc19057 100644
--- a/src/debputy/integration_detection.py
+++ b/src/debputy/integration_detection.py
@@ -1,16 +1,21 @@
-from typing import Container, Optional
+from typing import Container, Optional, Mapping
from debputy.plugin.api.spec import (
DebputyIntegrationMode,
INTEGRATION_MODE_DH_DEBPUTY_RRR,
INTEGRATION_MODE_DH_DEBPUTY,
+ INTEGRATION_MODE_FULL,
)
def determine_debputy_integration_mode(
+ source_fields: Mapping[str, str],
all_sequences: Container[str],
) -> Optional[DebputyIntegrationMode]:
+ if source_fields.get("Build-Driver", "").lower() == "debputy":
+ return INTEGRATION_MODE_FULL
+
has_zz_debputy = "zz-debputy" in all_sequences or "debputy" in all_sequences
has_zz_debputy_rrr = "zz-debputy-rrr" in all_sequences
has_any_existing = has_zz_debputy or has_zz_debputy_rrr
@@ -18,4 +23,7 @@ def determine_debputy_integration_mode(
return INTEGRATION_MODE_DH_DEBPUTY_RRR
if has_any_existing:
return INTEGRATION_MODE_DH_DEBPUTY
+ if source_fields.get("Source", "") == "debputy":
+ # Self-hosting. We cannot set the Build-Driver field since that creates a self-circular dependency loop
+ return INTEGRATION_MODE_FULL
return None