Files
dokku/plugins/buildpacks/triggers.go
2024-03-14 01:18:28 -04:00

104 lines
2.6 KiB
Go

package buildpacks
import (
"bufio"
"fmt"
"os"
"path/filepath"
"github.com/dokku/dokku/plugins/common"
)
// TriggerBuildpackStackName echos the stack name for the app
func TriggerBuildpackStackName(appName string) error {
if stack := common.PropertyGetDefault("buildpacks", appName, "stack", ""); stack != "" {
fmt.Println(stack)
return nil
}
if stack := common.PropertyGetDefault("buildpacks", "--global", "stack", ""); stack != "" {
fmt.Println(stack)
return nil
}
results, _ := common.CallPlugnTrigger(common.PlugnTriggerInput{
Trigger: "config-get",
Args: []string{appName, "DOKKU_IMAGE"},
})
dokkuImage := results.StdoutContents()
if dokkuImage != "" {
common.LogWarn("Deprecated: use buildpacks:set-property instead of specifying DOKKU_IMAGE environment variable")
fmt.Println(dokkuImage)
return nil
}
return nil
}
// TriggerInstall runs the install step for the buildpacks plugin
func TriggerInstall() error {
if err := common.PropertySetup("buildpacks"); err != nil {
return fmt.Errorf("Unable to install the buildpacks plugin: %s", err.Error())
}
return nil
}
// TriggerPostAppCloneSetup creates new buildpacks files
func TriggerPostAppCloneSetup(oldAppName string, newAppName string) error {
err := common.PropertyClone("buildpacks", oldAppName, newAppName)
if err != nil {
return err
}
return nil
}
// TriggerPostAppRenameSetup renames buildpacks files
func TriggerPostAppRenameSetup(oldAppName string, newAppName string) error {
if err := common.PropertyClone("buildpacks", oldAppName, newAppName); err != nil {
return err
}
if err := common.PropertyDestroy("buildpacks", oldAppName); err != nil {
return err
}
return nil
}
// TriggerPostDelete destroys the buildpacks property for a given app container
func TriggerPostDelete(appName string) error {
return common.PropertyDestroy("buildpacks", appName)
}
// TriggerPostExtract writes a .buildpacks file into the app
func TriggerPostExtract(appName string, sourceWorkDir string) error {
buildpacks, err := common.PropertyListGet("buildpacks", appName, "buildpacks")
if err != nil {
return nil
}
if len(buildpacks) == 0 {
return rewriteBuildpacksFile(sourceWorkDir)
}
buildpacksPath := filepath.Join(sourceWorkDir, ".buildpacks")
file, err := os.OpenFile(buildpacksPath, os.O_RDWR|os.O_TRUNC|os.O_CREATE, 0600)
if err != nil {
return fmt.Errorf("Error writing .buildpacks file: %s", err.Error())
}
w := bufio.NewWriter(file)
for _, buildpack := range buildpacks {
fmt.Fprintln(w, buildpack)
}
if err = w.Flush(); err != nil {
return fmt.Errorf("Error writing .buildpacks file: %s", err.Error())
}
file.Chmod(0600)
return nil
}