mirror of
https://github.com/dokku/dokku.git
synced 2025-12-16 20:17:44 +01:00
104 lines
2.6 KiB
Go
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
|
|
}
|