/
cmd.go
90 lines (74 loc) · 2.04 KB
/
cmd.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package cmd
import (
"fmt"
"log"
"os"
"github.com/aws/aws-sdk-go/aws"
awssession "github.com/aws/aws-sdk-go/aws/session"
"github.com/psanford/aws-buddy/awsconfig"
"github.com/psanford/aws-buddy/cost"
"github.com/psanford/aws-buddy/ec2"
"github.com/psanford/aws-buddy/iam"
"github.com/psanford/aws-buddy/org"
"github.com/psanford/aws-buddy/parameterstore"
"github.com/psanford/aws-buddy/route53"
"github.com/psanford/aws-buddy/s3"
"github.com/psanford/aws-buddy/textract"
"github.com/spf13/cobra"
)
var region = "us-east-1"
var rootCmd = &cobra.Command{
Use: "aws-buddy",
Short: "AWS tools",
}
func Execute() error {
if os.Getenv("AWS_DEFAULT_REGION") != "" {
region = os.Getenv("AWS_DEFAULT_REGION")
}
if os.Getenv("AWS_REGION") != "" {
region = os.Getenv("AWS_REGION")
}
os.Setenv("AWS_DEFAULT_REGION", region)
rootCmd.AddCommand(ec2.Command())
rootCmd.AddCommand(s3.Command())
rootCmd.AddCommand(org.Command())
rootCmd.AddCommand(route53.Command())
rootCmd.AddCommand(cost.Command())
rootCmd.AddCommand(iam.Command())
rootCmd.AddCommand(parameterstore.Command())
rootCmd.AddCommand(awsconfig.Command())
rootCmd.AddCommand(helpTreeCommand())
rootCmd.AddCommand(textract.Command())
return rootCmd.Execute()
}
func helpTreeCommand() *cobra.Command {
var cmd = &cobra.Command{
Use: "help-tree",
Short: "Print Help for all commands",
Run: func(cmd *cobra.Command, args []string) {
var printHelp func(cmd *cobra.Command)
printHelp = func(cmd *cobra.Command) {
fmt.Println("\n========================================")
cmd.Help()
for _, childCmd := range cmd.Commands() {
printHelp(childCmd)
}
}
printHelp(rootCmd)
},
}
return cmd
}
func session() *awssession.Session {
sess, err := awssession.NewSession(&aws.Config{Region: ®ion})
if err != nil {
log.Fatalf("AWS NewSession error: %s", err)
}
return sess
}
func confirm(prompt string) bool {
fmt.Print(prompt)
var result string
fmt.Scanln(&result)
return result == "y" || result == "Y" || result == "yes" || result == "Yes"
}