2 changed files with 65 additions and 27 deletions
-
80cmd/sutron/main.go
-
12sutron.go
@ -1,45 +1,83 @@ |
|||||
package main |
package main |
||||
|
|
||||
import ( |
import ( |
||||
"git.binarythought.com/cdramey/sutron" |
|
||||
"fmt" |
|
||||
"bytes" |
"bytes" |
||||
|
"flag" |
||||
|
"fmt" |
||||
|
"encoding/json" |
||||
|
"git.binarythought.com/cdramey/sutron" |
||||
"io/ioutil" |
"io/ioutil" |
||||
"os" |
"os" |
||||
) |
) |
||||
|
|
||||
|
type ParserConfig struct { |
||||
|
ParserType string `json:"parser_type"` |
||||
|
} |
||||
|
|
||||
func main() { |
func main() { |
||||
if len(os.Args) < 2 { |
|
||||
fmt.Fprintf(os.Stderr, |
|
||||
"required argument missing\n") |
|
||||
os.Exit(1) |
|
||||
|
flags := flag.NewFlagSet("sutron", flag.ExitOnError) |
||||
|
flags.SetOutput(os.Stdout) |
||||
|
flags.Usage = func() { |
||||
|
fmt.Fprintf(flags.Output(), |
||||
|
"Usage: %s [OPTION] <files> ...\nOptions:\n", |
||||
|
os.Args[0]) |
||||
|
flags.PrintDefaults() |
||||
} |
} |
||||
|
|
||||
var raw []byte |
|
||||
var err error |
|
||||
if os.Args[1] == "-" { |
|
||||
raw, err = ioutil.ReadAll(os.Stdin) |
|
||||
} else { |
|
||||
raw, err = ioutil.ReadFile(os.Args[1]) |
|
||||
|
jsonfn := flags.String("json", "sutron.json", |
||||
|
"json parser definition file name") |
||||
|
|
||||
|
flags.Parse(os.Args[1:]) |
||||
|
|
||||
|
if flags.NArg() < 1 { |
||||
|
fmt.Fprintf(os.Stderr, "files parameter cannot be empty\n") |
||||
|
os.Exit(1) |
||||
} |
} |
||||
|
|
||||
|
jsonsrc, err := ioutil.ReadFile(*jsonfn) |
||||
if err != nil { |
if err != nil { |
||||
fmt.Fprintf(os.Stderr, |
fmt.Fprintf(os.Stderr, |
||||
"error reading \"%s\": %s\n", |
"error reading \"%s\": %s\n", |
||||
os.Args[1], err.Error()) |
os.Args[1], err.Error()) |
||||
} |
} |
||||
|
|
||||
i := bytes.Index(raw, []byte("B")) |
|
||||
if i != -1 { |
|
||||
sutrondata, err := sutron.ParseSutronB(raw[i:]) |
|
||||
|
var pcfg ParserConfig |
||||
|
err = json.Unmarshal(jsonsrc, &pcfg) |
||||
|
if err != nil { |
||||
|
fmt.Fprintf(os.Stderr, |
||||
|
"parser config error: %s\n", err.Error()) |
||||
|
os.Exit(1) |
||||
|
} |
||||
|
|
||||
|
fmt.Printf("Parser type: %s\n", pcfg.ParserType) |
||||
|
|
||||
|
for _, fn := range flags.Args() { |
||||
|
var raw []byte |
||||
|
var err error |
||||
|
if fn == "-" { |
||||
|
raw, err = ioutil.ReadAll(os.Stdin) |
||||
|
} else { |
||||
|
raw, err = ioutil.ReadFile(fn) |
||||
|
} |
||||
if err != nil { |
if err != nil { |
||||
fmt.Fprintf(os.Stderr, |
fmt.Fprintf(os.Stderr, |
||||
"%s\n", err.Error()) |
|
||||
os.Exit(1) |
|
||||
|
"error reading \"%s\": %s\n", |
||||
|
os.Args[1], err.Error()) |
||||
} |
} |
||||
|
|
||||
fmt.Printf("Sutron Block: %s\n", string(sutrondata.Block)) |
|
||||
fmt.Printf("Sutron Group: %s\n", string(sutrondata.Group)) |
|
||||
fmt.Printf("Sutron Delta: %s\n", string(sutrondata.Delta)) |
|
||||
fmt.Printf("Sutron Voltage: %s\n", string(sutrondata.Voltage)) |
|
||||
|
i := bytes.Index(raw, []byte("B")) |
||||
|
if i != -1 { |
||||
|
sutrondata, err := sutron.ParseSutronB(raw[i:]) |
||||
|
if err != nil { |
||||
|
fmt.Fprintf(os.Stderr, |
||||
|
"%s\n", err.Error()) |
||||
|
os.Exit(1) |
||||
|
} |
||||
|
|
||||
|
fmt.Printf("Sutron Block: %s\n", string(sutrondata.Block)) |
||||
|
fmt.Printf("Sutron Group: %s\n", string(sutrondata.Group)) |
||||
|
fmt.Printf("Sutron Delta: %s\n", string(sutrondata.Delta)) |
||||
|
fmt.Printf("Sutron Voltage: %s\n", string(sutrondata.Voltage)) |
||||
|
} |
||||
} |
} |
||||
} |
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue