in pkg/archive/rpm.go [130:177]
func (r *RpmPackager) 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 = `
if [ $1 -ge 1 ]; then
{{ replace .Script "\n" "\n " }}
fi
`
case PkgActionPreRemoval, PkgActionPostRemoval:
filename = filenamePreRm
flag = flagPreRm
templateStr = `
if [ $1 -eq 0 ]; then
{{ replace .Script "\n" "\n " }}
fi
`
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
}