wip: mapping,setting import

This commit is contained in:
loveuer
2024-03-25 20:22:18 +08:00
parent b0b0ec2b58
commit d3524d0f05
6 changed files with 150 additions and 15 deletions

View File

@ -1,6 +1,7 @@
package cmd
import (
"context"
"encoding/json"
"errors"
"esgo2dump/internal/interfaces"
@ -17,17 +18,21 @@ import (
func run(cmd *cobra.Command, args []string) error {
var (
err error
ioi interfaces.DumpIO
ioo interfaces.DumpIO
lines []*interfaces.ESSource
succeed int
err error
ioi interfaces.DumpIO
ioo interfaces.DumpIO
)
if opt.Debug {
logrus.SetLevel(logrus.DebugLevel)
}
switch f_type {
case "data", "mapping", "setting":
default:
return fmt.Errorf("unknown type=%s", f_type)
}
if ioi, err = newIO(f_input, interfaces.IOInput); err != nil {
return err
}
@ -36,13 +41,46 @@ func run(cmd *cobra.Command, args []string) error {
return err
}
defer func() {
_ = ioi.Close()
_ = ioo.Close()
}()
switch f_type {
case "data":
return executeData(cmd.Context(), ioi, ioo)
case "mapping":
var mapping map[string]any
if mapping, err = ioi.ReadMapping(); err != nil {
return err
}
return ioo.WriteMapping(mapping)
case "setting":
var setting map[string]any
if setting, err = ioi.ReadSetting(); err != nil {
return err
}
return ioo.WriteSetting(setting)
default:
return fmt.Errorf("unknown type=%s", f_type)
}
}
func executeData(ctx context.Context, input, output interfaces.DumpIO) error {
var (
err error
lines []*interfaces.ESSource
succeed int
)
for {
select {
case <-cmd.Context().Done():
case <-ctx.Done():
default:
succeed = 0
if lines, err = ioi.Read(f_limit); err != nil {
if lines, err = input.ReadData(f_limit); err != nil {
if errors.Is(err, io.EOF) {
return nil
}
@ -54,7 +92,7 @@ func run(cmd *cobra.Command, args []string) error {
return nil
}
if succeed, err = ioo.Write(lines); err != nil {
if succeed, err = output.WriteData(lines); err != nil {
return err
}