func main()

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
    }
}