#!/usr/bin/env python3
"""Aktifkan built-in variable yang dibutuhkan trigger, lalu publish versi baru."""
import os
from google.oauth2 import service_account
from googleapiclient.discovery import build

creds = service_account.Credentials.from_service_account_file(
    os.path.expanduser("~/.hermes/gsc_service_account.json"),
    scopes=["https://www.googleapis.com/auth/tagmanager.edit.containers",
            "https://www.googleapis.com/auth/tagmanager.edit.containerversions",
            "https://www.googleapis.com/auth/tagmanager.publish",
            "https://www.googleapis.com/auth/tagmanager.readonly"])
gtm = build("tagmanager", "v2", credentials=creds, cache_discovery=False)
CONTAINER = "accounts/6303077991/containers/224445829"
res = gtm.accounts().containers().workspaces().built_in_variables()
print("method:", [m for m in dir(res) if not m.startswith("_")])

C = gtm.accounts().containers()
ws = C.workspaces().list(parent=CONTAINER).execute().get("workspace", [])
WS = ws[-1]["path"]
print("workspace dipakai:", ws[-1]["name"], "|", WS)

# daftar built-in yang sudah aktif
try:
    ada = res.list(parent=WS).execute().get("builtInVariable", [])
    print("sudah aktif:", [x.get("type") for x in ada])
except Exception as e:
    print("list error:", str(e)[:160])

# aktifkan yang diperlukan
perlu = ["event"]
try:
    out = res.create(parent=WS, type=perlu).execute()
    print("diaktifkan:", [x.get("type") for x in out.get("builtInVariable", [])] or out)
except Exception as e:
    print("create error:", str(e)[:200])

try:
    ada = res.list(parent=WS).execute().get("builtInVariable", [])
    print("built-in aktif sekarang:", [x.get("type") for x in ada])
except Exception as e:
    print("list ulang error:", str(e)[:160])

# versi + publish
ver = C.workspaces().create_version(path=WS, body={"name": "v4 - aktifkan built-in Event + tag konversi",
                                                   "notes": "Built-in variable Event diaktifkan supaya Custom Event trigger cocok."}).execute()
cv = ver.get("containerVersion", {})
print(f"versi {cv.get('containerVersionId')} dibuat | tag={len(cv.get('tag', []))} trigger={len(cv.get('trigger', []))}")
C.versions().publish(path=f"{CONTAINER}/versions/{cv.get('containerVersionId')}").execute()
lv = C.versions().live(parent=CONTAINER).execute()
print("LIVE:", lv.get("name"), "| tag:", [t.get("name") for t in lv.get("tag", [])])
