// Copyright 2019 Drone IO, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package core import "context" type ( // Step represents an individual step in the stage. Step struct { ID int64 `json:"id"` StageID int64 `json:"step_id"` // this is a typo, fixing it has far reaching ramifications. It should only be attempted in a major version change Number int `json:"number"` Name string `json:"name"` Status string `json:"status"` Error string `json:"error,omitempty"` ErrIgnore bool `json:"errignore,omitempty"` ExitCode int `json:"exit_code"` Started int64 `json:"started,omitempty"` Stopped int64 `json:"stopped,omitempty"` Version int64 `json:"version"` DependsOn []string `json:"depends_on,omitempty"` Image string `json:"image,omitempty"` Detached bool `json:"detached,omitempty"` Schema string `json:"schema,omitempty"` } // StepStore persists build step information to storage. StepStore interface { // List returns a build stage list from the datastore. List(context.Context, int64) ([]*Step, error) // Find returns a build stage from the datastore by ID. Find(context.Context, int64) (*Step, error) // FindNumber returns a stage from the datastore by number. FindNumber(context.Context, int64, int) (*Step, error) // Create persists a new stage to the datastore. Create(context.Context, *Step) error // Update persists an updated stage to the datastore. Update(context.Context, *Step) error } ) // IsDone returns true if the step has a completed state. func (s *Step) IsDone() bool { switch s.Status { case StatusWaiting, StatusPending, StatusRunning, StatusBlocked: return false default: return true } }