buildZeiten (einbau.js) liefert dem Runner-Auftrag { siteKey } bei Funktion in setup/active,
null bei Sperrliste und Fehlern. stosseNeubauAn (neubau.js) stößt den Neubau unter der
Sperre zeiten-neubau an und meldet angestossen oder manuell.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
1.4 KiB
JavaScript
34 lines
1.4 KiB
JavaScript
import { config } from '../../config.js'
|
|
import { getFeatureDoc } from '../siteFeatures.js'
|
|
|
|
/**
|
|
* Einbau des Zeiten-Skripts beim Deploy (Spec 4.6, Runner-Feld `zeiten`).
|
|
* Darf weder neubau.js noch previewRebuild.js importieren: previewDeploy laedt diese Datei, previewRebuild laedt
|
|
* previewDeploy (Zyklus).
|
|
*/
|
|
|
|
/** Zustaende, in denen die Leisten ausgespielt werden (wie teilweiseLive im Register). */
|
|
const AUSGEBEND = ['setup', 'active']
|
|
|
|
/** Subdomain auf der Sperrliste ZEITEN_KEIN_NEUBAU (Einbau von Hand, weder Neubau noch Einsetzen)? */
|
|
export function aufSperrliste(project) {
|
|
const subdomain = String(project?.subdomain || '').trim().toLowerCase()
|
|
return subdomain !== '' && config.zeiten.keinNeubau.includes(subdomain)
|
|
}
|
|
|
|
/**
|
|
* Zeiten-Feld fuer den Build-Auftrag: { siteKey } nur bei Funktion in setup/active und Projekt nicht auf der
|
|
* Sperrliste, sonst null. isPublic ist nicht noetig. Wirft nie: der Build darf an den Zeiten nicht scheitern.
|
|
*/
|
|
export async function buildZeiten(project) {
|
|
try {
|
|
if (!project?.$id || !project.customerId || aufSperrliste(project)) return null
|
|
const feature = await getFeatureDoc(project.customerId, project.$id, 'zeiten')
|
|
if (!feature || !AUSGEBEND.includes(feature.state) || !feature.siteKey) return null
|
|
return { siteKey: feature.siteKey }
|
|
} catch (err) {
|
|
console.warn(`[zeiten] Einbau-Abfrage für Projekt ${project?.$id} fehlgeschlagen: ${err?.message}`)
|
|
return null
|
|
}
|
|
}
|