Skip to content

Commit

Permalink
iostreams
Browse files Browse the repository at this point in the history
  • Loading branch information
michaeldwan committed Mar 12, 2021
1 parent d859925 commit 4c6cae9
Show file tree
Hide file tree
Showing 52 changed files with 1,032 additions and 326 deletions.
19 changes: 9 additions & 10 deletions cmd/apps.go
@@ -1,16 +1,15 @@
package cmd

import (
"os"

"github.com/superfly/flyctl/cmdctx"
"github.com/superfly/flyctl/internal/client"

"github.com/spf13/cobra"
"github.com/superfly/flyctl/cmd/presenters"
"github.com/superfly/flyctl/docstrings"
)

func newAppsCommand() *Command {
func newAppsCommand(client *client.Client) *Command {

appsStrings := docstrings.Get("apps")

Expand All @@ -24,11 +23,11 @@ func newAppsCommand() *Command {

appsListStrings := docstrings.Get("apps.list")

BuildCommand(cmd, runAppsList, appsListStrings.Usage, appsListStrings.Short, appsListStrings.Long, os.Stdout, requireSession)
BuildCommand(cmd, runAppsList, appsListStrings.Usage, appsListStrings.Short, appsListStrings.Long, client, requireSession)

appsCreateStrings := docstrings.Get("apps.create")

create := BuildCommand(cmd, runInit, appsCreateStrings.Usage, appsCreateStrings.Short, appsCreateStrings.Long, os.Stdout, requireSession)
create := BuildCommand(cmd, runInit, appsCreateStrings.Usage, appsCreateStrings.Short, appsCreateStrings.Long, client, requireSession)
create.Args = cobra.RangeArgs(0, 1)

// TODO: Move flag descriptions into the docStrings
Expand All @@ -54,13 +53,13 @@ func newAppsCommand() *Command {
})

appsDestroyStrings := docstrings.Get("apps.destroy")
destroy := BuildCommand(cmd, runDestroy, appsDestroyStrings.Usage, appsDestroyStrings.Short, appsDestroyStrings.Long, os.Stdout, requireSession)
destroy := BuildCommand(cmd, runDestroy, appsDestroyStrings.Usage, appsDestroyStrings.Short, appsDestroyStrings.Long, client, requireSession)
destroy.Args = cobra.ExactArgs(1)
// TODO: Move flag descriptions into the docStrings
destroy.AddBoolFlag(BoolFlagOpts{Name: "yes", Shorthand: "y", Description: "Accept all confirmations"})

appsMoveStrings := docstrings.Get("apps.move")
move := BuildCommand(cmd, runMove, appsMoveStrings.Usage, appsMoveStrings.Short, appsMoveStrings.Long, os.Stdout, requireSession)
move := BuildCommand(cmd, runMove, appsMoveStrings.Usage, appsMoveStrings.Short, appsMoveStrings.Long, client, requireSession)
move.Args = cobra.ExactArgs(1)
// TODO: Move flag descriptions into the docStrings
move.AddBoolFlag(BoolFlagOpts{Name: "yes", Shorthand: "y", Description: "Accept all confirmations"})
Expand All @@ -70,15 +69,15 @@ func newAppsCommand() *Command {
})

appsSuspendStrings := docstrings.Get("apps.suspend")
appsSuspendCmd := BuildCommand(cmd, runSuspend, appsSuspendStrings.Usage, appsSuspendStrings.Short, appsSuspendStrings.Long, os.Stdout, requireSession, requireAppNameAsArg)
appsSuspendCmd := BuildCommand(cmd, runSuspend, appsSuspendStrings.Usage, appsSuspendStrings.Short, appsSuspendStrings.Long, client, requireSession, requireAppNameAsArg)
appsSuspendCmd.Args = cobra.RangeArgs(0, 1)

appsResumeStrings := docstrings.Get("apps.resume")
appsResumeCmd := BuildCommand(cmd, runResume, appsResumeStrings.Usage, appsResumeStrings.Short, appsResumeStrings.Long, os.Stdout, requireSession, requireAppNameAsArg)
appsResumeCmd := BuildCommand(cmd, runResume, appsResumeStrings.Usage, appsResumeStrings.Short, appsResumeStrings.Long, client, requireSession, requireAppNameAsArg)
appsResumeCmd.Args = cobra.RangeArgs(0, 1)

appsRestartStrings := docstrings.Get("apps.restart")
appsRestartCmd := BuildCommand(cmd, runRestart, appsRestartStrings.Usage, appsRestartStrings.Short, appsRestartStrings.Long, os.Stdout, requireSession, requireAppNameAsArg)
appsRestartCmd := BuildCommand(cmd, runRestart, appsRestartStrings.Usage, appsRestartStrings.Short, appsRestartStrings.Long, client, requireSession, requireAppNameAsArg)
appsRestartCmd.Args = cobra.RangeArgs(0, 1)

return cmd
Expand Down
16 changes: 8 additions & 8 deletions cmd/auth.go
Expand Up @@ -22,23 +22,23 @@ import (
"github.com/superfly/flyctl/terminal"
)

func newAuthCommand() *Command {
func newAuthCommand(client *client.Client) *Command {

authStrings := docstrings.Get("auth")

cmd := BuildCommandKS(nil, nil, authStrings, os.Stdout)
cmd := BuildCommandKS(nil, nil, authStrings, client)

authWhoamiStrings := docstrings.Get("auth.whoami")
BuildCommand(cmd, runWhoami, authWhoamiStrings.Usage, authWhoamiStrings.Short, authWhoamiStrings.Long, os.Stdout, requireSession)
BuildCommand(cmd, runWhoami, authWhoamiStrings.Usage, authWhoamiStrings.Short, authWhoamiStrings.Long, client, requireSession)

authTokenStrings := docstrings.Get("auth.token")
BuildCommand(cmd, runAuthToken, authTokenStrings.Usage, authTokenStrings.Short, authTokenStrings.Long, os.Stdout, requireSession)
BuildCommand(cmd, runAuthToken, authTokenStrings.Usage, authTokenStrings.Short, authTokenStrings.Long, client, requireSession)

authLoginStrings := docstrings.Get("auth.login")
login := BuildCommand(cmd, runLogin, authLoginStrings.Usage, authLoginStrings.Short, authLoginStrings.Long, os.Stdout)
login := BuildCommand(cmd, runLogin, authLoginStrings.Usage, authLoginStrings.Short, authLoginStrings.Long, client)

authDockerStrings := docstrings.Get("auth.docker")
BuildCommand(cmd, runAuthDocker, authDockerStrings.Usage, authDockerStrings.Short, authDockerStrings.Long, os.Stdout)
BuildCommand(cmd, runAuthDocker, authDockerStrings.Usage, authDockerStrings.Short, authDockerStrings.Long, client)

// TODO: Move flag descriptions into the docStrings
login.AddBoolFlag(BoolFlagOpts{
Expand All @@ -60,10 +60,10 @@ func newAuthCommand() *Command {
})

authLogoutStrings := docstrings.Get("auth.logout")
BuildCommand(cmd, runLogout, authLogoutStrings.Usage, authLogoutStrings.Short, authLogoutStrings.Long, os.Stdout, requireSession)
BuildCommand(cmd, runLogout, authLogoutStrings.Usage, authLogoutStrings.Short, authLogoutStrings.Long, client, requireSession)

authSignupStrings := docstrings.Get("auth.signup")
BuildCommand(cmd, runSignup, authSignupStrings.Usage, authSignupStrings.Short, authSignupStrings.Long, os.Stdout)
BuildCommand(cmd, runSignup, authSignupStrings.Usage, authSignupStrings.Short, authSignupStrings.Long, client)

return cmd
}
Expand Down
16 changes: 8 additions & 8 deletions cmd/autoscaling.go
Expand Up @@ -3,42 +3,42 @@ package cmd
import (
"errors"
"fmt"
"os"
"strconv"
"strings"

"github.com/superfly/flyctl/cmdctx"
"github.com/superfly/flyctl/internal/client"

"github.com/superfly/flyctl/api"
"github.com/superfly/flyctl/docstrings"

"github.com/spf13/cobra"
)

func newAutoscaleCommand() *Command {
func newAutoscaleCommand(client *client.Client) *Command {
autoscaleStrings := docstrings.Get("autoscale")

cmd := BuildCommandKS(nil, nil, autoscaleStrings, os.Stdout, requireSession, requireAppName)
cmd := BuildCommandKS(nil, nil, autoscaleStrings, client, requireSession, requireAppName)
//cmd.Deprecated = "use `flyctl scale` instead"

disableCmdStrings := docstrings.Get("autoscale.disable")
disableCmd := BuildCommand(cmd, runDisableAutoscaling, disableCmdStrings.Usage, disableCmdStrings.Short, disableCmdStrings.Long, os.Stdout, requireSession, requireAppName)
disableCmd := BuildCommand(cmd, runDisableAutoscaling, disableCmdStrings.Usage, disableCmdStrings.Short, disableCmdStrings.Long, client, requireSession, requireAppName)
disableCmd.Args = cobra.RangeArgs(0, 2)

balanceCmdStrings := docstrings.Get("autoscale.balanced")
balanceCmd := BuildCommand(cmd, runBalanceScale, balanceCmdStrings.Usage, balanceCmdStrings.Short, balanceCmdStrings.Long, os.Stdout, requireSession, requireAppName)
balanceCmd := BuildCommand(cmd, runBalanceScale, balanceCmdStrings.Usage, balanceCmdStrings.Short, balanceCmdStrings.Long, client, requireSession, requireAppName)
balanceCmd.Args = cobra.RangeArgs(0, 2)

standardCmdStrings := docstrings.Get("autoscale.standard")
standardCmd := BuildCommand(cmd, runStandardScale, standardCmdStrings.Usage, standardCmdStrings.Short, standardCmdStrings.Long, os.Stdout, requireSession, requireAppName)
standardCmd := BuildCommand(cmd, runStandardScale, standardCmdStrings.Usage, standardCmdStrings.Short, standardCmdStrings.Long, client, requireSession, requireAppName)
standardCmd.Args = cobra.RangeArgs(0, 2)

setCmdStrings := docstrings.Get("autoscale.set")
setCmd := BuildCommand(cmd, runSetParamsOnly, setCmdStrings.Usage, setCmdStrings.Short, setCmdStrings.Long, os.Stdout, requireSession, requireAppName)
setCmd := BuildCommand(cmd, runSetParamsOnly, setCmdStrings.Usage, setCmdStrings.Short, setCmdStrings.Long, client, requireSession, requireAppName)
setCmd.Args = cobra.RangeArgs(0, 2)

showCmdStrings := docstrings.Get("autoscale.show")
BuildCommand(cmd, runAutoscalingShow, showCmdStrings.Usage, showCmdStrings.Short, showCmdStrings.Long, os.Stdout, requireSession, requireAppName)
BuildCommand(cmd, runAutoscalingShow, showCmdStrings.Usage, showCmdStrings.Short, showCmdStrings.Long, client, requireSession, requireAppName)

return cmd
}
Expand Down
10 changes: 5 additions & 5 deletions cmd/builds.go
Expand Up @@ -2,26 +2,26 @@ package cmd

import (
"fmt"
"os"

"github.com/superfly/flyctl/cmdctx"

"github.com/superfly/flyctl/docstrings"
"github.com/superfly/flyctl/internal/builds"
"github.com/superfly/flyctl/internal/client"

"github.com/spf13/cobra"
"github.com/superfly/flyctl/cmd/presenters"
)

func newBuildsCommand() *Command {
func newBuildsCommand(client *client.Client) *Command {
buildsStrings := docstrings.Get("builds")

cmd := BuildCommandKS(nil, nil, buildsStrings, os.Stdout, requireSession, requireAppName)
cmd := BuildCommandKS(nil, nil, buildsStrings, client, requireSession, requireAppName)

buildsListStrings := docstrings.Get("builds.list")
BuildCommandKS(cmd, runListBuilds, buildsListStrings, os.Stdout, requireSession, requireAppName)
BuildCommandKS(cmd, runListBuilds, buildsListStrings, client, requireSession, requireAppName)
buildsLogsStrings := docstrings.Get("builds.logs")
logs := BuildCommandKS(cmd, runBuildLogs, buildsLogsStrings, os.Stdout, requireSession, requireAppName)
logs := BuildCommandKS(cmd, runBuildLogs, buildsLogsStrings, client, requireSession, requireAppName)
logs.Command.Args = cobra.ExactArgs(1)

return cmd
Expand Down
12 changes: 6 additions & 6 deletions cmd/builtins.go
Expand Up @@ -2,7 +2,6 @@ package cmd

import (
"fmt"
"os"
"sort"
"strings"

Expand All @@ -11,21 +10,22 @@ import (
"github.com/superfly/flyctl/builtinsupport"
"github.com/superfly/flyctl/cmdctx"
"github.com/superfly/flyctl/helpers"
"github.com/superfly/flyctl/internal/client"

"github.com/superfly/flyctl/docstrings"
)

func newBuiltinsCommand() *Command {
func newBuiltinsCommand(client *client.Client) *Command {
builtinsStrings := docstrings.Get("builtins")

cmd := BuildCommandKS(nil, nil, builtinsStrings, os.Stdout)
cmd := BuildCommandKS(nil, nil, builtinsStrings, client)

builtinsListStrings := docstrings.Get("builtins.list")
BuildCommandKS(cmd, runListBuiltins, builtinsListStrings, os.Stdout)
BuildCommandKS(cmd, runListBuiltins, builtinsListStrings, client)
builtinShowStrings := docstrings.Get("builtins.show")
BuildCommandKS(cmd, runShowBuiltin, builtinShowStrings, os.Stdout)
BuildCommandKS(cmd, runShowBuiltin, builtinShowStrings, client)
builtinShowAppStrings := docstrings.Get("builtins.show-app")
showappcmd := BuildCommandKS(cmd, runShowAppBuiltin, builtinShowAppStrings, os.Stdout, requireAppName)
showappcmd := BuildCommandKS(cmd, runShowAppBuiltin, builtinShowAppStrings, client, requireAppName)
showappcmd.Args = cobra.MaximumNArgs(0)

return cmd
Expand Down
16 changes: 8 additions & 8 deletions cmd/certificates.go
Expand Up @@ -3,12 +3,12 @@ package cmd
import (
"fmt"
"net"
"os"
"strings"

"github.com/dustin/go-humanize"
"github.com/superfly/flyctl/api"
"github.com/superfly/flyctl/cmdctx"
"github.com/superfly/flyctl/internal/client"

"github.com/superfly/flyctl/docstrings"

Expand All @@ -17,31 +17,31 @@ import (
"golang.org/x/net/publicsuffix"
)

func newCertificatesCommand() *Command {
func newCertificatesCommand(client *client.Client) *Command {
certsStrings := docstrings.Get("certs")

cmd := BuildCommandKS(nil, nil, certsStrings, os.Stdout, requireAppName, requireSession)
cmd := BuildCommandKS(nil, nil, certsStrings, client, requireAppName, requireSession)

certsListStrings := docstrings.Get("certs.list")
BuildCommandKS(cmd, runCertsList, certsListStrings, os.Stdout, requireSession, requireAppName)
BuildCommandKS(cmd, runCertsList, certsListStrings, client, requireSession, requireAppName)

certsCreateStrings := docstrings.Get("certs.add")
createCmd := BuildCommandKS(cmd, runCertAdd, certsCreateStrings, os.Stdout, requireSession, requireAppName)
createCmd := BuildCommandKS(cmd, runCertAdd, certsCreateStrings, client, requireSession, requireAppName)
createCmd.Aliases = []string{"create"}
createCmd.Command.Args = cobra.ExactArgs(1)

certsDeleteStrings := docstrings.Get("certs.remove")
deleteCmd := BuildCommandKS(cmd, runCertDelete, certsDeleteStrings, os.Stdout, requireSession, requireAppName)
deleteCmd := BuildCommandKS(cmd, runCertDelete, certsDeleteStrings, client, requireSession, requireAppName)
deleteCmd.Aliases = []string{"delete"}
deleteCmd.Command.Args = cobra.ExactArgs(1)
deleteCmd.AddBoolFlag(BoolFlagOpts{Name: "yes", Shorthand: "y", Description: "accept all confirmations"})

certsShowStrings := docstrings.Get("certs.show")
show := BuildCommandKS(cmd, runCertShow, certsShowStrings, os.Stdout, requireSession, requireAppName)
show := BuildCommandKS(cmd, runCertShow, certsShowStrings, client, requireSession, requireAppName)
show.Command.Args = cobra.ExactArgs(1)

certsCheckStrings := docstrings.Get("certs.check")
check := BuildCommandKS(cmd, runCertCheck, certsCheckStrings, os.Stdout, requireSession, requireAppName)
check := BuildCommandKS(cmd, runCertCheck, certsCheckStrings, client, requireSession, requireAppName)
check.Command.Args = cobra.ExactArgs(1)

return cmd
Expand Down
16 changes: 8 additions & 8 deletions cmd/checks.go
Expand Up @@ -2,7 +2,6 @@ package cmd

import (
"fmt"
"os"

"github.com/AlecAivazis/survey/v2"
"github.com/spf13/cobra"
Expand All @@ -11,30 +10,31 @@ import (
"github.com/superfly/flyctl/cmdctx"
"github.com/superfly/flyctl/docstrings"
"github.com/superfly/flyctl/helpers"
"github.com/superfly/flyctl/internal/client"
)

func newChecksCommand() *Command {
func newChecksCommand(client *client.Client) *Command {
checksStrings := docstrings.Get("checks")
cmd := BuildCommandKS(nil, nil, checksStrings, os.Stdout)
cmd := BuildCommandKS(nil, nil, checksStrings, client)

handlersStrings := docstrings.Get("checks.handlers")
handlersCmd := BuildCommandKS(cmd, nil, handlersStrings, os.Stdout)
handlersCmd := BuildCommandKS(cmd, nil, handlersStrings, client)

handlersListStrings := docstrings.Get("checks.handlers.list")
listHandlersCmd := BuildCommandKS(handlersCmd, runListChecksHandlers, handlersListStrings, os.Stdout, requireSession)
listHandlersCmd := BuildCommandKS(handlersCmd, runListChecksHandlers, handlersListStrings, client, requireSession)
listHandlersCmd.Args = cobra.ExactArgs(1)

handlersCreateStrings := docstrings.Get("checks.handlers.create")
createHandlersCmd := BuildCommandKS(handlersCmd, runCreateChecksHandler, handlersCreateStrings, os.Stdout, requireSession)
createHandlersCmd := BuildCommandKS(handlersCmd, runCreateChecksHandler, handlersCreateStrings, client, requireSession)
createHandlersCmd.AddStringFlag(StringFlagOpts{Name: "type", Description: "The type of handler to create, can be slack or pagerduty"})
createHandlersCmd.AddStringFlag(StringFlagOpts{Name: "organization", Shorthand: "o", Description: "The organization to add the handler to"})

handlersDeleteStrings := docstrings.Get("checks.handlers.delete")
deleteHandlerCmd := BuildCommandKS(handlersCmd, runDeleteChecksHandler, handlersDeleteStrings, os.Stdout, requireSession)
deleteHandlerCmd := BuildCommandKS(handlersCmd, runDeleteChecksHandler, handlersDeleteStrings, client, requireSession)
deleteHandlerCmd.Args = cobra.ExactArgs(2)

checksListStrings := docstrings.Get("checks.list")
listChecksCmd := BuildCommandKS(cmd, runAppCheckList, checksListStrings, os.Stdout, requireSession, requireAppName)
listChecksCmd := BuildCommandKS(cmd, runAppCheckList, checksListStrings, client, requireSession, requireAppName)
listChecksCmd.AddStringFlag(StringFlagOpts{Name: "check-name", Description: "Filter checks by name"})

return cmd
Expand Down
9 changes: 4 additions & 5 deletions cmd/command.go
Expand Up @@ -4,7 +4,6 @@ import (
"bufio"
"context"
"fmt"
"io"
"os"
"os/signal"
"path"
Expand Down Expand Up @@ -162,12 +161,12 @@ type Option func(*Command) Initializer
type InitializerFn func(*cmdctx.CmdContext) error

// BuildCommandKS - A wrapper for BuildCommand which takes the docs.KeyStrings bundle instead of the coder having to manually unwrap it
func BuildCommandKS(parent *Command, fn RunFn, keystrings docstrings.KeyStrings, out io.Writer, options ...Option) *Command {
return BuildCommand(parent, fn, keystrings.Usage, keystrings.Short, keystrings.Long, out, options...)
func BuildCommandKS(parent *Command, fn RunFn, keystrings docstrings.KeyStrings, client *client.Client, options ...Option) *Command {
return BuildCommand(parent, fn, keystrings.Usage, keystrings.Short, keystrings.Long, client, options...)
}

// BuildCommand - builds a functioning Command using all the initializers
func BuildCommand(parent *Command, fn RunFn, usageText string, shortHelpText string, longHelpText string, out io.Writer, options ...Option) *Command {
func BuildCommand(parent *Command, fn RunFn, usageText string, shortHelpText string, longHelpText string, client *client.Client, options ...Option) *Command {
flycmd := &Command{
Command: &cobra.Command{
Use: usageText,
Expand All @@ -190,7 +189,7 @@ func BuildCommand(parent *Command, fn RunFn, usageText string, shortHelpText str

if fn != nil {
flycmd.Run = func(cmd *cobra.Command, args []string) {
ctx, err := cmdctx.NewCmdContext(flyctlClient, namespace(cmd), out, args)
ctx, err := cmdctx.NewCmdContext(client, namespace(cmd), args)
checkErr(err)

for _, init := range initializers {
Expand Down
12 changes: 6 additions & 6 deletions cmd/config.go
Expand Up @@ -3,9 +3,9 @@ package cmd
import (
"errors"
"fmt"
"os"

"github.com/superfly/flyctl/cmdctx"
"github.com/superfly/flyctl/internal/client"

"github.com/superfly/flyctl/docstrings"

Expand All @@ -15,20 +15,20 @@ import (
"github.com/superfly/flyctl/helpers"
)

func newConfigCommand() *Command {
func newConfigCommand(client *client.Client) *Command {

configStrings := docstrings.Get("config")

cmd := BuildCommandKS(nil, nil, configStrings, os.Stdout, requireSession, requireAppName)
cmd := BuildCommandKS(nil, nil, configStrings, client, requireSession, requireAppName)

configDisplayStrings := docstrings.Get("config.display")
BuildCommandKS(cmd, runDisplayConfig, configDisplayStrings, os.Stdout, requireSession, requireAppName)
BuildCommandKS(cmd, runDisplayConfig, configDisplayStrings, client, requireSession, requireAppName)

configSaveStrings := docstrings.Get("config.save")
BuildCommandKS(cmd, runSaveConfig, configSaveStrings, os.Stdout, requireSession, requireAppName)
BuildCommandKS(cmd, runSaveConfig, configSaveStrings, client, requireSession, requireAppName)

configValidateStrings := docstrings.Get("config.validate")
BuildCommandKS(cmd, runValidateConfig, configValidateStrings, os.Stdout, requireSession, requireAppName)
BuildCommandKS(cmd, runValidateConfig, configValidateStrings, client, requireSession, requireAppName)

return cmd
}
Expand Down

0 comments on commit 4c6cae9

Please sign in to comment.