blob: 574ce8014247ed0b20f74e3e7f08f07830c52fbb [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package analytics_util
import (
"sort"
"strings"
"time"
)
type Command struct {
name string
flags map[string]string
startTime time.Time
endTime time.Time
}
func newCommand(name string, flags map[string]string) *Command {
c := &Command{name: name, flags: flags}
c.startTime = time.Now()
return c
}
func (c *Command) AnalyticsObject() AnayticsObject {
e := Event{}
e.Category = "Command"
e.Action = c.name
if c.endTime.Second() != 0 {
e.Label = "Complete"
e.Value = c.endTime.Sub(c.startTime).Nanoseconds() / 1000000
}
value := ""
if len(c.flags) > 0 {
keys := []string{}
for k, _ := range c.flags {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
v := c.flags[k]
value = value + k + ":" + v + ","
}
value = strings.TrimRight(value, ",")
} else {
// track no flag
value = "()"
}
e.CustomDimension = make(map[string]string)
e.CustomDimension["flags"] = value
return e
}
func (c *Command) Done() {
c.endTime = time.Now()
}