in pkg/archive/deb.go [140:189]
func (d *DebPackager) installScript(script *InstallScript, c *dagger.Container) (*dagger.Container, []string) {
newArgs := []string{}
var templateStr, filename, flag string
switch script.When {
case PkgActionPostInstall:
filename = filenamePostInstall
flag = flagPostInstall
templateStr = `
{{ replace .Script "\n" "\n " }}
`
case PkgActionUpgrade:
filename = filenamePostUpgrade
flag = flagUpgrade
templateStr = `
{{ replace .Script "\n" "\n " }}
`
case PkgActionPreRemoval:
filename = filenamePreRm
flag = flagPreRm
templateStr = `
{{ replace .Script "\n" "\n " }}
`
case PkgActionPostRemoval:
filename = filenamePostRm
flag = flagPostRm
templateStr = `
{{ replace .Script "\n" "\n " }}
`
default:
panic("unrecognized package action: " + fmt.Sprintf("%d", script.When))
}
filename = filepath.Join("/build", filename)
tpl, err := template.New("installScript").Funcs(template.FuncMap{"replace": strings.ReplaceAll}).Parse(templateStr)
if err != nil {
panic(err)
}
buf := new(bytes.Buffer)
err = tpl.Execute(buf, script)
if err != nil {
panic(err)
}
c = c.WithNewFile(filename, buf.String())
newArgs = append(newArgs, flag, filename)
return c, newArgs
}