Skip to content

Commit

Permalink
feat: add support for converting whole directory
Browse files Browse the repository at this point in the history
  • Loading branch information
motzel committed Sep 7, 2022
1 parent d459add commit 09c0d5d
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 10 deletions.
57 changes: 48 additions & 9 deletions bsor2json.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"errors"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"path/filepath"
Expand Down Expand Up @@ -48,7 +49,7 @@ func (argv *rootT) Validate(ctx *cli.Context) error {

var root = &cli.Command{
Name: "root",
Desc: "bsor2json v0.4.0",
Desc: "bsor2json v0.4.1",
Argv: func() interface{} { return new(rootT) },
Fn: func(ctx *cli.Context) error {
return nil
Expand All @@ -64,6 +65,21 @@ const (
ReplayStats
)

func (s OutputType) String() string {
switch s {
case RawReplay:
return "raw"
case ReplayEvents:
return "events"
case ReplayEventsWithStats:
return "events_and_stats"
case ReplayStats:
return "stats"
default:
return "unknown"
}
}

func loadAndDecodeReplay(fileName string, buffered bool) (*bsor.Replay, error) {
file, err := os.Open(fileName)
if err != nil {
Expand Down Expand Up @@ -167,16 +183,39 @@ func convertReplay(fileName string, outputType OutputType, output string, buffer
}

func convert(argv *ReplayT, outputType OutputType) error {
if len(argv.File) == 0 {
return fmt.Errorf("Directory option is not implemented yet! Please use the -f option")
}

var outputFilename = argv.Output
if len(argv.Dir) > 0 {
outputFilename = filepath.Join(argv.Output, fileNameWithoutExt(filepath.Base(argv.File))+".json")
}
files, err := ioutil.ReadDir(argv.Dir)
if err != nil {
return err
}

return convertReplay(argv.File, outputType, outputFilename, argv.Buffered, argv.Pretty, argv.Force)
for _, file := range files {
inputFilename := filepath.Join(argv.Dir, file.Name())

if file.IsDir() || strings.ToLower(filepath.Ext(inputFilename)) != ".bsor" {
continue
}

outputDirectory := argv.Output
if len(outputDirectory) == 0 {
outputDirectory = argv.Dir
}

outputFilename := filepath.Join(outputDirectory, fileNameWithoutExt(filepath.Base(file.Name()))+"."+string(outputType.String())+".json")

fmt.Printf("Converting %v...", inputFilename)

if err = convertReplay(inputFilename, outputType, outputFilename, argv.Buffered, argv.Pretty, argv.Force); err != nil {
fmt.Println(err)
} else {
fmt.Print("OK\n")
}
}

return nil
} else {
return convertReplay(argv.File, outputType, argv.Output, argv.Buffered, argv.Pretty, argv.Force)
}
}

type ReplayT struct {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.18

require (
github.com/mkideal/cli v0.2.7
github.com/motzel/go-bsor v0.4.0
github.com/motzel/go-bsor v0.4.1
)

require (
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ github.com/motzel/go-bsor v0.3.1 h1:ZTzOXwOq8c/WJ7m2XBwygdjWiG0kdXOqmsudUMJkyT0=
github.com/motzel/go-bsor v0.3.1/go.mod h1:46rfFmgCS5qcHmQVShsCnpygHt/LEureIHCcLyr2WCo=
github.com/motzel/go-bsor v0.4.0 h1:bx5zPMXmbjipuS7HaHnkJTcmLJ3WMpkG09hEk2bd/Kk=
github.com/motzel/go-bsor v0.4.0/go.mod h1:46rfFmgCS5qcHmQVShsCnpygHt/LEureIHCcLyr2WCo=
github.com/motzel/go-bsor v0.4.1 h1:h+kiXFPYZO2QkrEkT9Cq1fpBNw7JhC0A9oU34XBIigc=
github.com/motzel/go-bsor v0.4.1/go.mod h1:46rfFmgCS5qcHmQVShsCnpygHt/LEureIHCcLyr2WCo=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
Expand Down

0 comments on commit 09c0d5d

Please sign in to comment.