这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions plugins/00_dokku-standard/subcommands/report
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ cmd-report() {
[[ "$1" == "$cmd" ]] && shift 1
declare APP="$1"

if [[ "$APP" == "--format" ]]; then
dokku_log_fail "--format flag not supported on global report"
fi

dokku_log_info1 "uname: $(uname -a)"
dokku_log_info1 "memory: "
free -m | sed "s/^/ /"
Expand Down
4 changes: 2 additions & 2 deletions plugins/apps/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

// ReportSingleApp is an internal function that displays the app report for one or more apps
func ReportSingleApp(appName, infoFlag string) error {
func ReportSingleApp(appName string, format string, infoFlag string) error {
if err := common.VerifyAppName(appName); err != nil {
return err
}
Expand All @@ -26,7 +26,7 @@ func ReportSingleApp(appName, infoFlag string) error {
trimPrefix := false
uppercaseFirstCharacter := true
infoFlags := common.CollectReport(appName, infoFlag, flags)
return common.ReportSingleApp("app", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter)
return common.ReportSingleApp("app", appName, infoFlag, infoFlags, flagKeys, format, trimPrefix, uppercaseFirstCharacter)
}

func reportDir(appName string) string {
Expand Down
3 changes: 2 additions & 1 deletion plugins/apps/src/subcommands/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,12 @@ func main() {
err = apps.CommandRename(oldAppName, newAppName, *skipDeploy)
case "report":
args := flag.NewFlagSet("apps:report", flag.ExitOnError)
format := args.String("format", "stdout", "format: [ stdout | json ]")
osArgs, infoFlag, flagErr := common.ParseReportArgs("apps", os.Args[2:])
if flagErr == nil {
args.Parse(osArgs)
appName := args.Arg(0)
err = apps.CommandReport(appName, infoFlag)
err = apps.CommandReport(appName, *format, infoFlag)
}
case "unlock":
args := flag.NewFlagSet("apps:unlock", flag.ExitOnError)
Expand Down
2 changes: 1 addition & 1 deletion plugins/apps/src/triggers/triggers.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func main() {
err = apps.TriggerPostDelete(appName)
case "report":
appName := flag.Arg(0)
err = apps.ReportSingleApp(appName, "")
err = apps.ReportSingleApp(appName, "", "")
default:
common.LogFail(fmt.Sprintf("Invalid plugin trigger call: %s", trigger))
}
Expand Down
6 changes: 3 additions & 3 deletions plugins/apps/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,21 +175,21 @@ func CommandRename(oldAppName string, newAppName string, skipDeploy bool) error
}

// CommandReport displays an app report for one or more apps
func CommandReport(appName string, infoFlag string) error {
func CommandReport(appName string, format string, infoFlag string) error {
if len(appName) == 0 {
apps, err := common.DokkuApps()
if err != nil {
return err
}
for _, appName := range apps {
if err := ReportSingleApp(appName, infoFlag); err != nil {
if err := ReportSingleApp(appName, format, infoFlag); err != nil {
return err
}
}
return nil
}

return ReportSingleApp(appName, infoFlag)
return ReportSingleApp(appName, format, infoFlag)
}

// CommandUnlock unlocks an app for deployment
Expand Down
4 changes: 2 additions & 2 deletions plugins/buildpacks/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
)

// ReportSingleApp is an internal function that displays the buildpacks report for one or more apps
func ReportSingleApp(appName, infoFlag string) error {
func ReportSingleApp(appName string, format string, infoFlag string) error {
if err := common.VerifyAppName(appName); err != nil {
return err
}
Expand All @@ -28,7 +28,7 @@ func ReportSingleApp(appName, infoFlag string) error {
trimPrefix := false
uppercaseFirstCharacter := true
infoFlags := common.CollectReport(appName, infoFlag, flags)
return common.ReportSingleApp("buildpacks", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter)
return common.ReportSingleApp("buildpacks", appName, infoFlag, infoFlags, flagKeys, format, trimPrefix, uppercaseFirstCharacter)
}

func reportComputedStack(appName string) string {
Expand Down
3 changes: 2 additions & 1 deletion plugins/buildpacks/src/subcommands/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,12 @@ func main() {
err = buildpacks.CommandRemove(appName, buildpack, *index)
case "report":
args := flag.NewFlagSet("buildpacks:report", flag.ExitOnError)
format := args.String("format", "stdout", "format: [ stdout | json ]")
osArgs, infoFlag, flagErr := common.ParseReportArgs("buildpacks", os.Args[2:])
if flagErr == nil {
args.Parse(osArgs)
appName := args.Arg(0)
err = buildpacks.CommandReport(appName, infoFlag)
err = buildpacks.CommandReport(appName, *format, infoFlag)
}
case "set":
args := flag.NewFlagSet("buildpacks:set", flag.ExitOnError)
Expand Down
2 changes: 1 addition & 1 deletion plugins/buildpacks/src/triggers/triggers.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func main() {
err = buildpacks.TriggerPostExtract(appName, sourceWorkDir)
case "report":
appName := flag.Arg(0)
err = buildpacks.ReportSingleApp(appName, "")
err = buildpacks.ReportSingleApp(appName, "", "")
default:
common.LogFail(fmt.Sprintf("Invalid plugin trigger call: %s", trigger))
}
Expand Down
6 changes: 3 additions & 3 deletions plugins/buildpacks/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,21 +104,21 @@ func CommandRemove(appName string, buildpack string, index int) (err error) {
}

// CommandReport displays a buildpacks report for one or more apps
func CommandReport(appName string, infoFlag string) error {
func CommandReport(appName string, format string, infoFlag string) error {
if len(appName) == 0 {
apps, err := common.DokkuApps()
if err != nil {
return err
}
for _, appName := range apps {
if err := ReportSingleApp(appName, infoFlag); err != nil {
if err := ReportSingleApp(appName, format, infoFlag); err != nil {
return err
}
}
return nil
}

return ReportSingleApp(appName, infoFlag)
return ReportSingleApp(appName, format, infoFlag)
}

// CommandSet implements buildpacks:set
Expand Down
38 changes: 36 additions & 2 deletions plugins/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package common

import (
"context"
"encoding/json"
"errors"
"fmt"
"io/ioutil"
Expand Down Expand Up @@ -305,7 +306,17 @@ func GetenvWithDefault(key string, defaultValue string) (val string) {
func ParseReportArgs(pluginName string, arguments []string) ([]string, string, error) {
osArgs := []string{}
infoFlags := []string{}
for _, argument := range arguments {
skipNext := false
for i, argument := range arguments {
if skipNext {
skipNext = false
continue
}
if argument == "--format" {
osArgs = append(osArgs, argument, arguments[i+1])
skipNext = true
continue
}
if strings.HasPrefix(argument, "--") {
infoFlags = append(infoFlags, argument)
} else {
Expand All @@ -323,7 +334,30 @@ func ParseReportArgs(pluginName string, arguments []string) ([]string, string, e
}

// ReportSingleApp is an internal function that displays a report for an app
func ReportSingleApp(reportType string, appName string, infoFlag string, infoFlags map[string]string, infoFlagKeys []string, trimPrefix bool, uppercaseFirstCharacter bool) error {
func ReportSingleApp(reportType string, appName string, infoFlag string, infoFlags map[string]string, infoFlagKeys []string, format string, trimPrefix bool, uppercaseFirstCharacter bool) error {
if format != "stdout" && infoFlag != "" {
return errors.New("--format flag cannot be specified when specifying an info flag")
}

if format == "json" {
data := map[string]string{}
for key, value := range infoFlags {
prefix := "--"
if trimPrefix {
prefix = fmt.Sprintf("--%v-", reportType)
}

// key = strings.Replace(strings.Replace(strings.TrimPrefix(key, prefix), "-", " ", -1), ".", " ", -1)
data[strings.TrimPrefix(key, prefix)] = value
}
out, err := json.Marshal(data)
if err != nil {
return err
}
Log(string(out))
return nil
}

flags := []string{}
for key := range infoFlags {
flags = append(flags, key)
Expand Down
4 changes: 2 additions & 2 deletions plugins/cron/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

// ReportSingleApp is an internal function that displays the cron report for one or more apps
func ReportSingleApp(appName, infoFlag string) error {
func ReportSingleApp(appName string, format string, infoFlag string) error {
if err := common.VerifyAppName(appName); err != nil {
return err
}
Expand All @@ -24,7 +24,7 @@ func ReportSingleApp(appName, infoFlag string) error {
trimPrefix := false
uppercaseFirstCharacter := true
infoFlags := common.CollectReport(appName, infoFlag, flags)
return common.ReportSingleApp("cron", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter)
return common.ReportSingleApp("cron", appName, infoFlag, infoFlags, flagKeys, format, trimPrefix, uppercaseFirstCharacter)
}

func reportTasks(appName string) string {
Expand Down
3 changes: 2 additions & 1 deletion plugins/cron/src/subcommands/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ func main() {
err = cron.CommandList(appName)
case "report":
args := flag.NewFlagSet("cron:report", flag.ExitOnError)
format := args.String("format", "stdout", "format: [ stdout | json ]")
osArgs, infoFlag, flagErr := common.ParseReportArgs("cron", os.Args[2:])
if flagErr == nil {
args.Parse(osArgs)
appName := args.Arg(0)
err = cron.CommandReport(appName, infoFlag)
err = cron.CommandReport(appName, *format, infoFlag)
}
default:
common.LogFail(fmt.Sprintf("Invalid plugin subcommand call: %s", subcommand))
Expand Down
2 changes: 1 addition & 1 deletion plugins/cron/src/triggers/triggers.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func main() {
err = cron.TriggerPostDeploy()
case "report":
appName := flag.Arg(0)
err = cron.ReportSingleApp(appName, "")
err = cron.ReportSingleApp(appName, "", "")
default:
common.LogFail(fmt.Sprintf("Invalid plugin trigger call: %s", trigger))
}
Expand Down
6 changes: 3 additions & 3 deletions plugins/cron/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,19 @@ func CommandList(appName string) error {
}

// CommandReport displays a cron report for one or more apps
func CommandReport(appName string, infoFlag string) error {
func CommandReport(appName string, format string, infoFlag string) error {
if len(appName) == 0 {
apps, err := common.DokkuApps()
if err != nil {
return err
}
for _, appName := range apps {
if err := ReportSingleApp(appName, infoFlag); err != nil {
if err := ReportSingleApp(appName, format, infoFlag); err != nil {
return err
}
}
return nil
}

return ReportSingleApp(appName, infoFlag)
return ReportSingleApp(appName, format, infoFlag)
}
4 changes: 2 additions & 2 deletions plugins/logs/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
)

// ReportSingleApp is an internal function that displays the logs report for one or more apps
func ReportSingleApp(appName, infoFlag string) error {
func ReportSingleApp(appName string, format string, infoFlag string) error {
if err := common.VerifyAppName(appName); err != nil {
return err
}
Expand All @@ -26,7 +26,7 @@ func ReportSingleApp(appName, infoFlag string) error {
trimPrefix := false
uppercaseFirstCharacter := true
infoFlags := common.CollectReport(appName, infoFlag, flags)
return common.ReportSingleApp("logs", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter)
return common.ReportSingleApp("logs", appName, infoFlag, infoFlags, flagKeys, format, trimPrefix, uppercaseFirstCharacter)
}

func reportComputedMaxSize(appName string) string {
Expand Down
3 changes: 2 additions & 1 deletion plugins/logs/src/subcommands/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@ func main() {
err = logs.CommandFailed(appName, *allApps)
case "report":
args := flag.NewFlagSet("logs:report", flag.ExitOnError)
format := args.String("format", "stdout", "format: [ stdout | json ]")
osArgs, infoFlag, flagErr := common.ParseReportArgs("logs", os.Args[2:])
if flagErr == nil {
args.Parse(osArgs)
appName := args.Arg(0)
err = logs.CommandReport(appName, infoFlag)
err = logs.CommandReport(appName, *format, infoFlag)
}
case "set":
args := flag.NewFlagSet("logs:set", flag.ExitOnError)
Expand Down
2 changes: 1 addition & 1 deletion plugins/logs/src/triggers/triggers.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ func main() {
err = logs.TriggerPostDelete(appName)
case "report":
appName := flag.Arg(0)
err = logs.ReportSingleApp(appName, "")
err = logs.ReportSingleApp(appName, "", "")
default:
common.LogFail(fmt.Sprintf("Invalid plugin trigger call: %s", trigger))
}
Expand Down
6 changes: 3 additions & 3 deletions plugins/logs/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,21 +50,21 @@ func CommandFailed(appName string, allApps bool) error {
}

// CommandReport displays a logs report for one or more apps
func CommandReport(appName string, infoFlag string) error {
func CommandReport(appName string, format string, infoFlag string) error {
if len(appName) == 0 {
apps, err := common.DokkuApps()
if err != nil {
return err
}
for _, appName := range apps {
if err := ReportSingleApp(appName, infoFlag); err != nil {
if err := ReportSingleApp(appName, format, infoFlag); err != nil {
return err
}
}
return nil
}

return ReportSingleApp(appName, infoFlag)
return ReportSingleApp(appName, format, infoFlag)
}

// CommandSet sets or clears a logs property for an app
Expand Down
4 changes: 2 additions & 2 deletions plugins/network/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

// ReportSingleApp is an internal function that displays the network report for one or more apps
func ReportSingleApp(appName, infoFlag string) error {
func ReportSingleApp(appName string, format string, infoFlag string) error {
if err := common.VerifyAppName(appName); err != nil {
return err
}
Expand All @@ -27,7 +27,7 @@ func ReportSingleApp(appName, infoFlag string) error {
trimPrefix := false
uppercaseFirstCharacter := true
infoFlags := common.CollectReport(appName, infoFlag, flags)
return common.ReportSingleApp("network", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter)
return common.ReportSingleApp("network", appName, infoFlag, infoFlags, flagKeys, format, trimPrefix, uppercaseFirstCharacter)
}

func reportBindAllInterfaces(appName string) string {
Expand Down
3 changes: 2 additions & 1 deletion plugins/network/src/subcommands/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,12 @@ func main() {
err = network.CommandRebuildall()
case "report":
args := flag.NewFlagSet("network:report", flag.ExitOnError)
format := args.String("format", "stdout", "format: [ stdout | json ]")
osArgs, infoFlag, flagErr := common.ParseReportArgs("network", os.Args[2:])
if flagErr == nil {
args.Parse(osArgs)
appName := args.Arg(0)
err = network.CommandReport(appName, infoFlag)
err = network.CommandReport(appName, *format, infoFlag)
}
case "set":
args := flag.NewFlagSet("network:set", flag.ExitOnError)
Expand Down
2 changes: 1 addition & 1 deletion plugins/network/src/triggers/triggers.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func main() {
network.TriggerCorePostDeploy(appName)
case "report":
appName := flag.Arg(0)
err = network.ReportSingleApp(appName, "")
err = network.ReportSingleApp(appName, "", "")
default:
common.LogFail(fmt.Sprintf("Invalid plugin trigger call: %s", trigger))
}
Expand Down
6 changes: 3 additions & 3 deletions plugins/network/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,21 +123,21 @@ func CommandRebuildall() error {
}

// CommandReport displays a network report for one or more apps
func CommandReport(appName string, infoFlag string) error {
func CommandReport(appName string, format string, infoFlag string) error {
if len(appName) == 0 {
apps, err := common.DokkuApps()
if err != nil {
return err
}
for _, appName := range apps {
if err := ReportSingleApp(appName, infoFlag); err != nil {
if err := ReportSingleApp(appName, format, infoFlag); err != nil {
return err
}
}
return nil
}

return ReportSingleApp(appName, infoFlag)
return ReportSingleApp(appName, format, infoFlag)
}

// CommandSet set or clear a network property for an app
Expand Down
Loading