diff options
Diffstat (limited to 'vendor/github.com/segmentio')
-rw-r--r-- | vendor/github.com/segmentio/analytics-go/cli/cli.go | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/vendor/github.com/segmentio/analytics-go/cli/cli.go b/vendor/github.com/segmentio/analytics-go/cli/cli.go deleted file mode 100644 index 9d1f940c9..000000000 --- a/vendor/github.com/segmentio/analytics-go/cli/cli.go +++ /dev/null @@ -1,174 +0,0 @@ -package main - -import ( - "encoding/json" - "log" - "os" - "reflect" - - "github.com/segmentio/analytics-go" - "github.com/tj/docopt" -) - -const Usage = ` -Analytics Go CLI - -Usage: - analytics track <event> [--properties=<properties>] [--context=<context>] [--writeKey=<writeKey>] [--userId=<userId>] [--anonymousId=<anonymousId>] [--integrations=<integrations>] [--timestamp=<timestamp>] - analytics screen <name> [--properties=<properties>] [--context=<context>] [--writeKey=<writeKey>] [--userId=<userId>] [--anonymousId=<anonymousId>] [--integrations=<integrations>] [--timestamp=<timestamp>] - analytics page <name> [--properties=<properties>] [--context=<context>] [--writeKey=<writeKey>] [--userId=<userId>] [--anonymousId=<anonymousId>] [--integrations=<integrations>] [--timestamp=<timestamp>] - analytics identify [--traits=<traits>] [--context=<context>] [--writeKey=<writeKey>] [--userId=<userId>] [--anonymousId=<anonymousId>] [--integrations=<integrations>] [--timestamp=<timestamp>] - analytics group --groupId=<groupId> [--traits=<traits>] [--properties=<properties>] [--context=<context>] [--writeKey=<writeKey>] [--userId=<userId>] [--anonymousId=<anonymousId>] [--integrations=<integrations>] [--timestamp=<timestamp>] - analytics alias --userId=<userId> --previousId=<previousId> [--traits=<traits>] [--properties=<properties>] [--context=<context>] [--writeKey=<writeKey>] [--anonymousId=<anonymousId>] [--integrations=<integrations>] [--timestamp=<timestamp>] - analytics -h | --help - analytics --version - -Options: - -h --help Show this screen. - --version Show version. -` - -func main() { - arguments, err := docopt.Parse(Usage, nil, true, "Anaytics Go CLI", false) - check(err) - - writeKey := getOptionalString(arguments, "--writeKey") - if writeKey == "" { - writeKey = os.Getenv("SEGMENT_WRITE_KEY") - if writeKey == "" { - log.Fatal("either $SEGMENT_WRITE_KEY or --writeKey must be provided") - } - } - - client := analytics.New(writeKey) - client.Size = 1 - client.Verbose = true - - if arguments["track"].(bool) { - m := &analytics.Track{ - Event: arguments["<event>"].(string), - } - properties := getOptionalString(arguments, "--properties") - if properties != "" { - var parsedProperties map[string]interface{} - err := json.Unmarshal([]byte(properties), &parsedProperties) - check(err) - m.Properties = parsedProperties - } - - setCommonFields(m, arguments) - - check(client.Track(m)) - } - - if arguments["screen"].(bool) || arguments["page"].(bool) { - m := &analytics.Page{ - Name: arguments["<name>"].(string), - } - /* Bug in Go library - page has traits not properties. - properties := getOptionalString(arguments, "--properties") - if properties != "" { - var parsedProperties map[string]interface{} - err := json.Unmarshal([]byte(properties), &parsedProperties) - check(err) - t.Properties = parsedProperties - } - */ - - setCommonFields(m, arguments) - - check(client.Page(m)) - } - - if arguments["identify"].(bool) { - m := &analytics.Identify{} - traits := getOptionalString(arguments, "--traits") - if traits != "" { - var parsedTraits map[string]interface{} - err := json.Unmarshal([]byte(traits), &parsedTraits) - check(err) - m.Traits = parsedTraits - } - - setCommonFields(m, arguments) - - check(client.Identify(m)) - } - - if arguments["group"].(bool) { - m := &analytics.Group{ - GroupId: arguments["--groupId"].(string), - } - traits := getOptionalString(arguments, "--traits") - if traits != "" { - var parsedTraits map[string]interface{} - err := json.Unmarshal([]byte(traits), &parsedTraits) - check(err) - m.Traits = parsedTraits - } - - setCommonFields(m, arguments) - - check(client.Group(m)) - } - - if arguments["alias"].(bool) { - m := &analytics.Alias{ - PreviousId: arguments["--previousId"].(string), - } - - setCommonFields(m, arguments) - - check(client.Alias(m)) - } - - client.Close() -} - -func setCommonFields(message interface{}, arguments map[string]interface{}) { - userId := getOptionalString(arguments, "--userId") - if userId != "" { - setFieldValue(message, "UserId", userId) - } - anonymousId := getOptionalString(arguments, "--anonymousId") - if anonymousId != "" { - setFieldValue(message, "AnonymousId", anonymousId) - } - integrations := getOptionalString(arguments, "--integrations") - if integrations != "" { - var parsedIntegrations map[string]interface{} - err := json.Unmarshal([]byte(integrations), &parsedIntegrations) - check(err) - setFieldValue(message, "Integrations", parsedIntegrations) - } - context := getOptionalString(arguments, "--context") - if context != "" { - var parsedContext map[string]interface{} - err := json.Unmarshal([]byte(context), &parsedContext) - check(err) - setFieldValue(message, "Context", parsedContext) - - } - timestamp := getOptionalString(arguments, "--timestamp") - if timestamp != "" { - setFieldValue(message, "Timestamp", timestamp) - } -} - -func setFieldValue(target interface{}, field string, value interface{}) { - reflect.ValueOf(target).Elem().FieldByName(field).Set(reflect.ValueOf(value)) -} - -func getOptionalString(m map[string]interface{}, k string) string { - v := m[k] - if v == nil { - return "" - } - return v.(string) -} - -func check(err error) { - if err != nil { - log.Fatal(err) - } -} |