func prowJobStatus(ps pipelinev1alpha1.PipelineRunStatus) (prowjobv1.ProwJobState, string) {
	started := ps.StartTime
	finished := ps.CompletionTime
	pcond := ps.GetCondition(duckv1alpha1.ConditionSucceeded)
	if pcond == nil {
		if !finished.IsZero() {
			return prowjobv1.ErrorState, descMissingCondition
		}
		return prowjobv1.TriggeredState, descScheduling
	}
	cond := *pcond
	switch {
	case cond.Status == untypedcorev1.ConditionTrue:
		return prowjobv1.SuccessState, description(cond, descSucceeded)
	case cond.Status == untypedcorev1.ConditionFalse:
		return prowjobv1.FailureState, description(cond, descFailed)
	case started.IsZero():
		return prowjobv1.TriggeredState, description(cond, descInitializing)
	case cond.Status == untypedcorev1.ConditionUnknown, finished.IsZero():
		return prowjobv1.PendingState, description(cond, descRunning)
	}

	logrus.Warnf("Unknown condition %#v", cond)
	return prowjobv1.ErrorState, description(cond, descUnknown) // shouldn't happen
}
func prowJobStatus(ps pipelinev1alpha1.PipelineRunStatus) (prowjobv1.ProwJobState, string) {
	started := ps.StartTime
	finished := ps.CompletionTime
	pcond := ps.GetCondition(duckv1alpha1.ConditionSucceeded)
	if pcond == nil {
		if !finished.IsZero() {
			return prowjobv1.ErrorState, descMissingCondition
		}
		return prowjobv1.TriggeredState, descScheduling
	}
	cond := *pcond
	switch {
	case cond.Status == untypedcorev1.ConditionTrue:
		return prowjobv1.SuccessState, description(cond, descSucceeded)
	case cond.Status == untypedcorev1.ConditionFalse:
		return prowjobv1.FailureState, description(cond, descFailed)
	case started.IsZero():
		return prowjobv1.TriggeredState, description(cond, descInitializing)
	case cond.Status == untypedcorev1.ConditionUnknown, finished.IsZero():
		return prowjobv1.PendingState, description(cond, descRunning)
	}

	logrus.Warnf("Unknown condition %#v", cond)
	return prowjobv1.ErrorState, description(cond, descUnknown) 
}
func prowJobStatus ( ps pipelinev1alpha1 . PipelineRunStatus ) ( prowjobv1 . ProwJobState , string ) { started := ps . StartTime finished := ps . CompletionTime pcond := ps . GetCondition ( duckv1alpha1 . ConditionSucceeded ) if pcond == nil { if ! finished . IsZero ( ) { return prowjobv1 . ErrorState , descMissingCondition } return prowjobv1 . TriggeredState , descScheduling } cond := * pcond switch { case cond . Status == untypedcorev1 . ConditionTrue : return prowjobv1 . SuccessState , description ( cond , descSucceeded ) case cond . Status == untypedcorev1 . ConditionFalse : return prowjobv1 . FailureState , description ( cond , descFailed ) case started . IsZero ( ) : return prowjobv1 . TriggeredState , description ( cond , descInitializing ) case cond . Status == untypedcorev1 . ConditionUnknown , finished . IsZero ( ) : return prowjobv1 . PendingState , description ( cond , descRunning ) } logrus . Warnf ( " " , cond ) return prowjobv1 . ErrorState , description ( cond , descUnknown ) // shouldn't happen }
// prowJobStatus returns the desired state and description based on the pipeline status
prowJobStatus returns the desired state and description based on the pipeline status