kunchenguid--no-mistakes
26f897c1ec
release / release-please (push) Failing after 1m49s
docs / build (push) Failing after 6m34s
release / build-and-upload (arm64, linux) (push) Has been cancelled
release / build-and-upload (arm64, windows) (push) Has been cancelled
release / build-darwin (amd64, darwin) (push) Has been cancelled
release / checksums (push) Has been cancelled
release / finalize (push) Has been cancelled
release / build-darwin (arm64, darwin) (push) Has been cancelled
release / build-and-upload (amd64, linux) (push) Has been cancelled
release / build-and-upload (amd64, windows) (push) Has been cancelled
docs / deploy (push) Has been cancelled
50 行
979 B
Go
50 行
979 B
Go
package lifecycle
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/kunchenguid/no-mistakes/internal/db"
|
|
"github.com/kunchenguid/no-mistakes/internal/paths"
|
|
)
|
|
|
|
// ActiveRuns returns all pending/running pipeline runs from the local state DB.
|
|
func ActiveRuns(p *paths.Paths) ([]*db.Run, error) {
|
|
if p == nil {
|
|
return nil, nil
|
|
}
|
|
dbPath := p.DB()
|
|
if _, err := os.Stat(dbPath); err != nil {
|
|
if errors.Is(err, os.ErrNotExist) {
|
|
return nil, nil
|
|
}
|
|
return nil, fmt.Errorf("stat database: %w", err)
|
|
}
|
|
|
|
database, err := db.Open(dbPath)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer database.Close()
|
|
return database.GetActiveRuns()
|
|
}
|
|
|
|
func RunList(runs []*db.Run) string {
|
|
if len(runs) == 0 {
|
|
return ""
|
|
}
|
|
out := "active pipeline runs:\n"
|
|
for _, run := range runs {
|
|
out += fmt.Sprintf(" %s %s %s %s\n", run.ID, run.Status, run.Branch, ShortSHA(run.HeadSHA))
|
|
}
|
|
return out
|
|
}
|
|
|
|
func ShortSHA(sha string) string {
|
|
if len(sha) <= 8 {
|
|
return sha
|
|
}
|
|
return sha[:8]
|
|
}
|