mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-10-21 11:29:56 +00:00
add proc and file structs
This commit is contained in:
57
model/proc.go
Normal file
57
model/proc.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package model
|
||||
|
||||
// ProcStore persists process information to storage.
|
||||
type ProcStore interface {
|
||||
ProcFind(*Build, int) (*Proc, error)
|
||||
ProcChild(*Build, int, string) (*Proc, error)
|
||||
ProcList(*Build) ([]*Proc, error)
|
||||
ProcCreate([]*Proc) error
|
||||
ProcUpdate(*Proc) error
|
||||
}
|
||||
|
||||
// Proc represents a process in the build pipeline.
|
||||
type Proc struct {
|
||||
ID int64 `json:"id" meddler:"proc_id,pk"`
|
||||
BuildID int64 `json:"build_id" meddler:"proc_build_id"`
|
||||
PID int `json:"pid" meddler:"proc_pid"`
|
||||
PPID int `json:"ppid" meddler:"proc_ppid"`
|
||||
PGID int `json:"pgid" meddler:"proc_pgid"`
|
||||
Name string `json:"name" meddler:"proc_name"`
|
||||
State string `json:"state" meddler:"proc_state"`
|
||||
Error string `json:"error,omitempty" meddler:"proc_error"`
|
||||
ExitCode int `json:"exit_code" meddler:"proc_exit_code"`
|
||||
Started int64 `json:"start_time,omitempty" meddler:"proc_started"`
|
||||
Stopped int64 `json:"end_time,omitempty" meddler:"proc_stopped"`
|
||||
Machine string `json:"machine,omitempty" meddler:"proc_machine"`
|
||||
Platform string `json:"platform,omitempty" meddler:"proc_platform"`
|
||||
Environ map[string]string `json:"environ,omitempty" meddler:"proc_environ,json"`
|
||||
Children []*Proc `json:"children,omitempty" meddler:"-"`
|
||||
}
|
||||
|
||||
// Running returns true if the process state is pending or running.
|
||||
func (p *Proc) Running() bool {
|
||||
return p.State == StatusPending || p.State == StatusRunning
|
||||
}
|
||||
|
||||
// Failing returns true if the process state is failed, killed or error.
|
||||
func (p *Proc) Failing() bool {
|
||||
return p.State == StatusError || p.State == StatusKilled || p.State == StatusFailure
|
||||
}
|
||||
|
||||
// Tree creates a process tree from a flat process list.
|
||||
func Tree(procs []*Proc) []*Proc {
|
||||
var (
|
||||
nodes []*Proc
|
||||
parent *Proc
|
||||
)
|
||||
for _, proc := range procs {
|
||||
if proc.PPID == 0 {
|
||||
nodes = append(nodes, proc)
|
||||
parent = proc
|
||||
continue
|
||||
} else {
|
||||
parent.Children = append(parent.Children, proc)
|
||||
}
|
||||
}
|
||||
return nodes
|
||||
}
|
Reference in New Issue
Block a user