main.go (63 lines of code) (raw):

package main import ( "context" "flag" "fmt" "log" "os" "strings" bucketutils "github.com/guardian/fsbp-tools/fsbp-fix/bucket-utils" vpcutils "github.com/guardian/fsbp-tools/fsbp-fix/vpc-utils" ) func main() { ctx := context.Background() fixS3_8 := flag.NewFlagSet("s3.8", flag.ExitOnError) fixEc2_2 := flag.NewFlagSet("ec2.2", flag.ExitOnError) if len(os.Args) < 2 { fmt.Println(len(os.Args)) fmt.Println(os.Args) fmt.Println("expected 's3.8' or 'ec2.2' subcommands") os.Exit(1) } switch strings.ToLower(os.Args[1]) { case "s3.8": execute := fixS3_8.Bool("execute", false, "Execute the block operation") profile := fixS3_8.String("profile", "", "AWS profile to use") region := fixS3_8.String("region", "", "The region of the bucket") bucketCount := fixS3_8.Int("max", 100, "The maximum number of buckets to attempt to process") exclusions := fixS3_8.String("exclusions", "", "Comma-separated list of buckets to skip") fixS3_8.Parse(os.Args[2:]) if *profile == "" { log.Fatal("Please provide a named AWS profile") } if *region == "" { log.Fatal("Please provide a region") } if *bucketCount < 1 || *bucketCount > 100 { log.Fatal("Please provide a max between 1 and 100") } var exclusionsSlice []string if *exclusions == "" { exclusionsSlice = []string{} } else { fmt.Printf("Parsing exclusions") exclusionsSlice = bucketutils.SplitAndTrim(*exclusions) } bucketutils.FixS3_8(ctx, *profile, *region, *bucketCount, exclusionsSlice, *execute) case "ec2.2": execute := fixEc2_2.Bool("execute", false, "Execute the block operation") profile := fixEc2_2.String("profile", "", "AWS profile to use") region := fixEc2_2.String("region", "", "The region of the bucket") fixEc2_2.Parse(os.Args[2:]) if *profile == "" { log.Fatal("Please provide a named AWS profile") } if *region == "" { log.Fatal("Please provide a region") } vpcutils.FixEc2_2(ctx, profile, region, execute) default: fmt.Println("expected 's3.8' or 'ec2.2' subcommands") os.Exit(1) } }