mirror of
https://github.com/foomo/squadron.git
synced 2025-10-16 12:35:42 +00:00
50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package squadron
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/pterm/pterm"
|
|
)
|
|
|
|
type Unit struct {
|
|
Chart ChartDependency `yaml:"chart,omitempty"`
|
|
Builds map[string]Build `yaml:"builds,omitempty"`
|
|
Values map[string]interface{} `yaml:"values,omitempty"`
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
// ~ Public methods
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
// Build ...
|
|
func (u *Unit) Build(ctx context.Context, squadron, unit string) (string, error) {
|
|
var i int
|
|
for _, build := range u.Builds {
|
|
i++
|
|
pterm.Info.Printfln("[%d/%d] Building %s/%s", i, len(u.Builds), squadron, unit)
|
|
pterm.FgGray.Printfln("└ %s:%s", build.Image, build.Tag)
|
|
if out, err := build.Build(ctx); err != nil {
|
|
pterm.Error.Printfln("[%d/%d] Failed to build squadron unit %s/%s", i, len(u.Builds), squadron, unit)
|
|
pterm.FgGray.Printfln("└ %s:%s", build.Image, build.Tag)
|
|
return out, err
|
|
}
|
|
}
|
|
return "", nil
|
|
}
|
|
|
|
// Push ...
|
|
func (u *Unit) Push(ctx context.Context, squadron, unit string) (string, error) {
|
|
var i int
|
|
for _, build := range u.Builds {
|
|
i++
|
|
pterm.Info.Printfln("[%d/%d] Pushing %s/%s", i, len(u.Builds), squadron, unit)
|
|
pterm.FgGray.Printfln("└ %s:%s", build.Image, build.Tag)
|
|
if out, err := build.Push(ctx); err != nil {
|
|
pterm.Error.Printfln("[%d/%d] Failed to push %s/%s", i, len(u.Builds), squadron, unit)
|
|
pterm.FgGray.Printfln("└ %s:%s", build.Image, build.Tag)
|
|
return out, err
|
|
}
|
|
}
|
|
return "", nil
|
|
}
|