// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT.
package org_tangled
// schema: org.tangled.ci.defs
import (
"encoding/json"
"fmt"
"github.com/bluesky-social/indigo/lex/util"
)
const ()
// CiDefs_ExternalSource is a "externalSource" in the org.tangled.ci.defs schema.
//
// RECORDTYPE: CiDefs_ExternalSource
type CiDefs_ExternalSource struct {
LexiconTypeID string `json:"$type,const=org.tangled.ci.defs#externalSource" cborgen:"$type,const=org.tangled.ci.defs#externalSource"`
Link string `json:"link" cborgen:"link"`
// name: human-readable name of external source
Name *string `json:"name,omitempty" cborgen:"name,omitempty"`
}
// CiDefs_FileSource is a "fileSource" in the org.tangled.ci.defs schema.
//
// RECORDTYPE: CiDefs_FileSource
type CiDefs_FileSource struct {
LexiconTypeID string `json:"$type,const=org.tangled.ci.defs#fileSource" cborgen:"$type,const=org.tangled.ci.defs#fileSource"`
Commit string `json:"commit" cborgen:"commit"`
Lines *CiDefs_LineRange `json:"lines,omitempty" cborgen:"lines,omitempty"`
Path string `json:"path" cborgen:"path"`
Repo string `json:"repo" cborgen:"repo"`
}
// CiDefs_LineRange is a "lineRange" in the org.tangled.ci.defs schema.
type CiDefs_LineRange struct {
End int64 `json:"end" cborgen:"end"`
Start int64 `json:"start" cborgen:"start"`
}
// CiDefs_Pipeline is a "pipeline" in the org.tangled.ci.defs schema.
//
// A CI pipeline. Record-like, but owned by the spindle rather than a PDS.
type CiDefs_Pipeline struct {
// commit: Commit Id this pipeline is running on
Commit string `json:"commit" cborgen:"commit"`
CreatedAt *string `json:"createdAt,omitempty" cborgen:"createdAt,omitempty"`
// id: Spindle-local pipeline id
Id string `json:"id" cborgen:"id"`
// repo: Repository DID
Repo string `json:"repo" cborgen:"repo"`
// sourceRepo: Repository DID that the commit was checked out from, if different from repo (e.g. a fork for a fork-based pull request)
SourceRepo *string `json:"sourceRepo,omitempty" cborgen:"sourceRepo,omitempty"`
// trigger: Trigger event that triggered this pipeline.
Trigger *CiDefs_Pipeline_Trigger `json:"trigger" cborgen:"trigger"`
// workflows: Triggered workflows
Workflows []*CiDefs_WorkflowRun `json:"workflows" cborgen:"workflows"`
}
// Trigger event that triggered this pipeline.
type CiDefs_Pipeline_Trigger struct {
EventPush *EventPush
EventPullRequest *EventPullRequest
CiTriggerManual *CiTriggerManual
CiTriggerSchedule *CiTriggerSchedule
Unknown json.RawMessage
}
func (t *CiDefs_Pipeline_Trigger) MarshalJSON() ([]byte, error) {
if t.EventPush != nil {
t.EventPush.LexiconTypeID = "org.tangled.event.push"
return json.Marshal(t.EventPush)
}
if t.EventPullRequest != nil {
t.EventPullRequest.LexiconTypeID = "org.tangled.event.pullRequest"
return json.Marshal(t.EventPullRequest)
}
if t.CiTriggerManual != nil {
t.CiTriggerManual.LexiconTypeID = "org.tangled.ci.trigger.manual"
return json.Marshal(t.CiTriggerManual)
}
if t.CiTriggerSchedule != nil {
t.CiTriggerSchedule.LexiconTypeID = "org.tangled.ci.trigger.schedule"
return json.Marshal(t.CiTriggerSchedule)
}
if t.Unknown != nil {
return t.Unknown, nil
}
return nil, fmt.Errorf("cannot marshal empty enum")
}
func (t *CiDefs_Pipeline_Trigger) UnmarshalJSON(b []byte) error {
typ, err := util.TypeExtract(b)
if err != nil {
return err
}
*t = CiDefs_Pipeline_Trigger{}
switch typ {
case "org.tangled.event.push":
t.EventPush = new(EventPush)
return json.Unmarshal(b, t.EventPush)
case "org.tangled.event.pullRequest":
t.EventPullRequest = new(EventPullRequest)
return json.Unmarshal(b, t.EventPullRequest)
case "org.tangled.ci.trigger.manual":
t.CiTriggerManual = new(CiTriggerManual)
return json.Unmarshal(b, t.CiTriggerManual)
case "org.tangled.ci.trigger.schedule":
t.CiTriggerSchedule = new(CiTriggerSchedule)
return json.Unmarshal(b, t.CiTriggerSchedule)
default:
t.Unknown = append(t.Unknown[:0], b...)
return nil
}
}
// CiDefs_Workflow is a "workflow" in the org.tangled.ci.defs schema.
//
// A workflow definition
type CiDefs_Workflow struct {
// hash: Fingerprint of the workflow definition as resolved by the spindle.
Hash *string `json:"hash,omitempty" cborgen:"hash,omitempty"`
Id string `json:"id" cborgen:"id"`
// name: Human-readable name of the workflow
Name *string `json:"name,omitempty" cborgen:"name,omitempty"`
Source *CiDefs_Workflow_Source `json:"source" cborgen:"source"`
// triggers: Event types that triggers this workflow.
Triggers []string `json:"triggers" cborgen:"triggers"`
}
// CiDefs_WorkflowRun is a "workflowRun" in the org.tangled.ci.defs schema.
type CiDefs_WorkflowRun struct {
// definition: Workflow definition where this workflow run is originated from.
Definition *CiDefs_Workflow `json:"definition" cborgen:"definition"`
Error *string `json:"error,omitempty" cborgen:"error,omitempty"`
FinishedAt *string `json:"finishedAt,omitempty" cborgen:"finishedAt,omitempty"`
// id: Pipeline-local workflow id, usually same as name.
Id string `json:"id" cborgen:"id"`
// name: Human-readable name of the workflow
Name *string `json:"name,omitempty" cborgen:"name,omitempty"`
StartedAt *string `json:"startedAt,omitempty" cborgen:"startedAt,omitempty"`
// status: Workflow status
Status string `json:"status" cborgen:"status"`
}
type CiDefs_Workflow_Source struct {
CiDefs_FileSource *CiDefs_FileSource
CiDefs_ExternalSource *CiDefs_ExternalSource
}
func (t *CiDefs_Workflow_Source) MarshalJSON() ([]byte, error) {
if t.CiDefs_FileSource != nil {
t.CiDefs_FileSource.LexiconTypeID = "org.tangled.ci.defs#fileSource"
return json.Marshal(t.CiDefs_FileSource)
}
if t.CiDefs_ExternalSource != nil {
t.CiDefs_ExternalSource.LexiconTypeID = "org.tangled.ci.defs#externalSource"
return json.Marshal(t.CiDefs_ExternalSource)
}
return nil, fmt.Errorf("cannot marshal empty enum")
}
func (t *CiDefs_Workflow_Source) UnmarshalJSON(b []byte) error {
typ, err := util.TypeExtract(b)
if err != nil {
return err
}
switch typ {
case "org.tangled.ci.defs#fileSource":
t.CiDefs_FileSource = new(CiDefs_FileSource)
return json.Unmarshal(b, t.CiDefs_FileSource)
case "org.tangled.ci.defs#externalSource":
t.CiDefs_ExternalSource = new(CiDefs_ExternalSource)
return json.Unmarshal(b, t.CiDefs_ExternalSource)
default:
return nil
}
}