main.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package main
  2. import (
  3. "os"
  4. "fmt"
  5. "time"
  6. "code.google.com/p/getopt"
  7. "devel.mephi.ru/dyokunev/voltlogger_parser/voltloggerParser"
  8. )
  9. type printRow_arg struct {
  10. outputPath string
  11. }
  12. func handleHeader(h voltloggerParser.VoltloggerDumpHeader, arg_iface interface{}) (error) {
  13. arg := arg_iface.(*printRow_arg)
  14. if (arg.outputPath == "") {
  15. now := time.Now()
  16. year, month, day := now.Date()
  17. hour, min, sec := now.Clock()
  18. arg.outputPath = fmt.Sprintf("%v_%v-%02v-%02v_%02v:%02v:%02v.csv", h.DeviceName, year, int(month), day, hour, min, sec)
  19. }
  20. return nil
  21. }
  22. func printRow(ts int64, row []int, h voltloggerParser.VoltloggerDumpHeader, arg_iface interface{}) (error) {
  23. fmt.Printf("%v", ts)
  24. rowLen := len(row)
  25. for i:=0; i < rowLen; i++ {
  26. fmt.Printf("\t%v", row[i])
  27. }
  28. fmt.Printf("\n")
  29. return nil
  30. }
  31. func main() {
  32. var dumpPath string
  33. var printRow_arg printRow_arg
  34. getopt.StringVar(&dumpPath, 'i', "dump-path")
  35. getopt.StringVar(&printRow_arg.outputPath, 'o', "output-path").SetOptional()
  36. getopt.Parse()
  37. if (getopt.NArgs() > 0 || dumpPath == "") {
  38. getopt.Usage()
  39. os.Exit(-2)
  40. }
  41. err := voltloggerParser.ParseVoltloggerDump(dumpPath, handleHeader, printRow, &printRow_arg)
  42. if (err != nil) {
  43. fmt.Printf("Cannot parse the dump: %v\n", err.Error())
  44. os.Exit(-1)
  45. }
  46. fmt.Printf("%v %v\n", dumpPath, printRow_arg)
  47. }