pkg/archive/win.go (45 lines of code) (raw):
package archive
import (
"strings"
"dagger.io/dagger"
)
type WinPackager struct {
a Archive
mirrorPrefix string
}
func NewWinPackager(a *Archive, mp string) *WinPackager {
if a == nil {
panic("nil archive supplied")
}
return &WinPackager{
a: *a,
mirrorPrefix: mp,
}
}
func (w *WinPackager) Package(client *dagger.Client, c *dagger.Container, project *Spec) *dagger.Directory {
dir := client.Directory()
rootDir := "/package"
sanitizedArch := strings.ReplaceAll(project.Arch, "/", "")
c = c.WithDirectory(rootDir, dir)
c = w.moveStaticFiles(c, rootDir)
c = c.
WithEnvVariable("PROJECT", project.Pkg).
WithEnvVariable("VERSION", project.Tag).
WithEnvVariable("REVISION", project.Revision).
WithEnvVariable("ARCH", sanitizedArch).
WithExec([]string{"bash", "-xuec", `
: ${PROJECT}
: ${VERSION}
mkdir -p "/out"
cd /package
zip "/out/${PROJECT}-${VERSION}+azure-u${REVISION}.${ARCH}.zip" *
`})
return c.Directory("/out")
}
func (w *WinPackager) moveStaticFiles(c *dagger.Container, rootdir string) *dagger.Container {
for i := range w.a.WinBinaries {
b := w.a.WinBinaries[i]
c = c.WithExec([]string{"cp", b, "/package"})
}
return c
}