in go/cloudtrail/cloudtrailOps.go [305:430]
func main() {
// Parse args ourselves so the user can request only one operation
op := ""
numOps := 0 // So we know when the user has requested more than one operation
length := len(os.Args)
i := 1
trailName := ""
bucketName := ""
userName := ""
for i < length {
switch os.Args[i] {
case "-h":
usage()
return
case "-c":
// -c TRAIL-NAME BUCKET-NAME
if length != 3 {
fmt.Println("You must supply a trail name and bucket name")
usage()
return
}
op = "create"
i++
trailName = os.Args[i]
i++
bucketName = os.Args[i]
numOps++
case "-d":
// -d TRAIL-NAME
op = "delete"
i++
trailName = os.Args[i]
numOps++
case "-e":
// -e TRAIL-NAME
op = "events"
i++
userName = os.Args[i]
i++
trailName = os.Args[i]
numOps++
case "-l":
// -l
op = "list"
numOps++
default:
fmt.Println("Unrecognized option: " + os.Args[i])
usage()
return
}
i++
}
if numOps > 1 {
fmt.Println("You cannot request more than one operation")
usage()
return
}
sess := session.Must(session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
}))
switch op {
case "create":
if trailName == "" || bucketName == "" {
fmt.Println("You must supply a trail name and a bucket name")
usage()
return
}
err := CreateTrail(sess, trailName, bucketName)
if err != nil {
fmt.Println("Got an error creating trail:")
fmt.Println(err)
return
}
case "delete":
if trailName == "" {
fmt.Println("You must supply a trail name")
usage()
return
}
err := DeleteTrail(sess, trailName)
if err != nil {
fmt.Println("Got an error deleting trail:")
fmt.Println(err)
return
}
case "events":
if userName == "" || trailName == "" {
fmt.Println("You must supply a user name and trail name")
usage()
return
}
err := listTrailEvents(sess, trailName, userName)
if err != nil {
fmt.Println("Got an error listing trail events:")
fmt.Println(err)
return
}
case "list":
err := listTrails(sess)
if err != nil {
fmt.Println("Got an error listing trails:")
fmt.Println(err)
return
}
default:
// This should never happen
fmt.Println("Unrecognized operation (typo?): " + op)
return
}
}