Files

84 lines
2.3 KiB
Go
Raw Permalink Normal View History

package builderherokuish
import (
"github.com/dokku/dokku/plugins/common"
)
// ReportSingleApp is an internal function that displays the builder-herokuish report for one or more apps
func ReportSingleApp(appName string, format string, infoFlag string) error {
if appName != "--global" {
if err := common.VerifyAppName(appName); err != nil {
return err
}
}
var flags map[string]common.ReportFunc
if appName == "--global" {
flags = map[string]common.ReportFunc{
"--builder-herokuish-computed-allowed": reportComputedAllowed,
"--builder-herokuish-global-allowed": reportGlobalAllowed,
}
} else {
flags = map[string]common.ReportFunc{
"--builder-herokuish-computed-allowed": reportComputedAllowed,
"--builder-herokuish-global-allowed": reportGlobalAllowed,
"--builder-herokuish-allowed": reportAllowed,
}
}
flagKeys := []string{}
for flagKey := range flags {
flagKeys = append(flagKeys, flagKey)
}
infoFlags := common.CollectReport(appName, infoFlag, flags)
return common.ReportSingleApp(common.ReportSingleAppInput{
ReportType: "builder-herokuish",
AppName: appName,
InfoFlag: infoFlag,
InfoFlags: infoFlags,
InfoFlagKeys: flagKeys,
Format: format,
TrimPrefix: true,
UppercaseFirstCharacter: true,
EmitLegacyPrefix: false,
})
}
func reportAllowed(appName string) string {
return common.PropertyGet("builder-herokuish", appName, "allowed")
}
func reportGlobalAllowed(appName string) string {
return common.PropertyGet("builder-herokuish", "--global", "allowed")
}
func reportComputedAllowed(appName string) string {
allowed := reportAllowed(appName)
if allowed == "" {
allowed = reportGlobalAllowed(appName)
}
if allowed == "" {
allowed = "true"
if hostArchitecture() != "amd64" {
allowed = "false"
}
}
return allowed
}
// hostArchitecture returns the dpkg architecture of the host, or an empty string
// when it cannot be determined (matching the bash `dpkg --print-architecture` check)
func hostArchitecture() string {
result, err := common.CallExecCommand(common.ExecCommandInput{
Command: "dpkg",
Args: []string{"--print-architecture"},
})
if err != nil {
return ""
}
return result.StdoutContents()
}