From 146d98797b6ed4c32657da02529bfca57f77b234 Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Tue, 27 Dec 2022 13:42:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=B7=A5=E5=85=B7=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/v2/FyneApp.toml | 4 +- cmd/v2/lib/common/constant.go | 8 -- cmd/v2/lib/common/utils_test.go | 6 +- cmd/v2/lib/storage/config.go | 50 +++++++++- cmd/v2/main.go | 22 ++--- cmd/v2/service/dbServer.go | 170 -------------------------------- cmd/v2/service/sshService.go | 4 + cmd/v2/ui/tool_luban.go | 32 +++--- cmd/v2/ui/tool_pb.go | 22 +++-- cmd/v2/ui/tool_term.go | 100 +++++++++++-------- 10 files changed, 152 insertions(+), 266 deletions(-) delete mode 100644 cmd/v2/service/dbServer.go diff --git a/cmd/v2/FyneApp.toml b/cmd/v2/FyneApp.toml index dff6c88bf..57d737750 100644 --- a/cmd/v2/FyneApp.toml +++ b/cmd/v2/FyneApp.toml @@ -4,5 +4,5 @@ Website = "http://legu.cc" Icon = "app.png" Name = "RobotGUI" ID = "cc.legu.app" - Version = "1.0.21" - Build = 25 + Version = "1.2.2" + Build = 29 diff --git a/cmd/v2/lib/common/constant.go b/cmd/v2/lib/common/constant.go index cdd9ecfe0..65a778414 100644 --- a/cmd/v2/lib/common/constant.go +++ b/cmd/v2/lib/common/constant.go @@ -25,11 +25,3 @@ const ( CONFIG_SERVICE_NAME = "name" CONFIG_SERVICE_URL = "url" ) - -const ( - BOLTDB_NAME = "my.db" - BOLTDB_BUCKETNAME = "robotBucket" - BUCKET_LUBANCONF = "lubanConf" - BUCKET_SSHCONF = "sshConf" - BUCKET_PBCONF = "pbConf" -) diff --git a/cmd/v2/lib/common/utils_test.go b/cmd/v2/lib/common/utils_test.go index aacb1f40e..180d48755 100644 --- a/cmd/v2/lib/common/utils_test.go +++ b/cmd/v2/lib/common/utils_test.go @@ -21,6 +21,10 @@ func TestConver(t *testing.T) { fmt.Println(s) } +func TestIsUpgrade(t *testing.T) { + IsUpgrade("1.2.2", "1.0.21") +} + func TestJsonToPb(t *testing.T) { jsonStr := `{"account":"zhaocy","sid":"dfz"}` login := &pb.UserLoginReq{} @@ -45,7 +49,7 @@ func TestDiv(t *testing.T) { value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", numF/1e6), 64) fmt.Println(reflect.TypeOf(value), value) fmt.Println(FormatFloatCommon(numF / 1e6)) - + num, _ := FormatFloat(numF, 2) fmt.Println(reflect.TypeOf(num), num) // 舍弃的尾数不为0,强制进位 diff --git a/cmd/v2/lib/storage/config.go b/cmd/v2/lib/storage/config.go index 8a7eda7c9..d9f83c29a 100644 --- a/cmd/v2/lib/storage/config.go +++ b/cmd/v2/lib/storage/config.go @@ -13,11 +13,14 @@ func newDefaultConfig() *Config { } type Config struct { - Pressure PressureConfig `json:"Pressure,omitempty"` - UserCount int32 `json:"UserCount,omitempty"` //用户数 - SId string `json:"sid,omitempty"` //区服ID - WsAddr string `json:"wsAddr,omitempty"` //websocket addr - IntervalS int32 `json:"intervalS,omitempty"` //间隔时间s + Pressure PressureConfig `json:"Pressure,omitempty"` + UserCount int32 `json:"UserCount,omitempty"` //用户数 + SId string `json:"sid,omitempty"` //区服ID + WsAddr string `json:"wsAddr,omitempty"` //websocket addr + IntervalS int32 `json:"intervalS,omitempty"` //间隔时间s + LubanConf *LubanConfig `json:"lubanConf,omitempty"` //luban工具配置 + PbConf *ProtobufConfig `json:"pbConf,omitempty"` //Pb配置 + SyncConf *SyncConfig `json:"syncConf,omitempty"` //同步配置 } //压测配置 @@ -26,3 +29,40 @@ type PressureConfig struct { Concurrency int32 `json:"concurrency,omitempty"` //并发量 DurationS int32 `json:"duration,omitempty"` //持续时间 秒 } + +//luban +type LubanConfig struct { + ServerAddr string + ProjectDir string + WorkDir string + Client string + GenType string + TmpDir string + InputDir string //输入目录 + OutputCodeDir string //输出Code目录 + OutputJsonDir string //输出json目录 +} + +type ProtobufConfig struct { + ProtoDir string + OutputDir string +} + +type SyncConfig struct { + Ip string + Port string + UserName string + Password string + LocalDir string + RemoteDir string + + ServerIp string + WorkDir string + LubanCli string + DataDir string + JsonDir string + + SaveDir string //保存目录 + LogDir string //远程日志目录 + Editor string //编辑器 +} diff --git a/cmd/v2/main.go b/cmd/v2/main.go index 6e774e6c6..57ab30cef 100644 --- a/cmd/v2/main.go +++ b/cmd/v2/main.go @@ -30,7 +30,6 @@ var ( connService service.ConnService pttService service.PttService configService service.ConfigService - dbService service.DbService obs = observer.NewObserver() logger *logrus.Logger ) @@ -50,10 +49,6 @@ func init() { os.Exit(1) } - if err = setupDb(); err != nil { - fmt.Println(err) - os.Exit(1) - } if err = setupWsConn(); err != nil { fmt.Println(err) os.Exit(1) @@ -86,7 +81,7 @@ func main() { checkVersion(app, w) } - w.SetContent(container.NewGridWithColumns(3, + w.SetContent(container.NewGridWithColumns(2, widget.NewButton("工具", func() { toolWindow := ui.NewToolWindow(appUI, w) toolWindow.CreateWindow(common.APP_NAME, 1499, 800, true) @@ -97,11 +92,11 @@ func main() { mainWindow.CreateWindow(common.APP_NAME, 1499, 800, true) w.Hide() }), - widget.NewButton("自动化测试", func() { - perfWindow := ui.NewPerfWindow(appUI, w) - perfWindow.CreateWindow(common.APP_NAME, 800, 600, true) - w.Hide() - }), + // widget.NewButton("自动化测试", func() { + // perfWindow := ui.NewPerfWindow(appUI, w) + // perfWindow.CreateWindow(common.APP_NAME, 800, 600, true) + // w.Hide() + // }), )) w.SetFixedSize(true) w.Resize(fyne.NewSize(400, 200)) @@ -140,11 +135,6 @@ func setupWsConn() (err error) { return } -func setupDb() (err error) { - dbService = service.NewDbService() - return -} - func setupConfig() (err error) { configService, err = service.NewConfigService() if err != nil { diff --git a/cmd/v2/service/dbServer.go b/cmd/v2/service/dbServer.go deleted file mode 100644 index 5c1c2c311..000000000 --- a/cmd/v2/service/dbServer.go +++ /dev/null @@ -1,170 +0,0 @@ -package service - -import ( - "encoding/json" - "fmt" - "go_dreamfactory/cmd/v2/lib/common" - "go_dreamfactory/cmd/v2/model" - "log" - "time" - - "github.com/boltdb/bolt" - "github.com/sirupsen/logrus" -) - -type DbService interface { - // 保存鲁班工具配置 - SaveLubanConf(conf *model.GenTool) error - // 获取鲁班工具配置 - GetLubanConf(key string) *model.GenTool - // 保存SSH连接信息 - SaveSSHConf(conf *model.SSHModel) error - //获取终端配置 - GetSSHConf(key string) *model.SSHModel - // 保存pb配置 - SavePbConf(conf *model.PbConfModel) error - // 获取pb配置 - GetPbConf() *model.PbConfModel -} - -type DbServiceImpl struct { -} - -var dbservice DbService - -func NewDbService() DbService { - dbservice = &DbServiceImpl{} - return dbservice -} - -func GetDbService() DbService { - return dbservice -} - -func (this *DbServiceImpl) save(key string, model interface{}) error { - boltDb = GetBoltDb() - defer boltDb.Close() - if err := boltDb.Update(func(tx *bolt.Tx) error { - b, err2 := json.Marshal(model) - if err2 != nil { - return err - } - c := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME)) - if c == nil { - return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME) - } - return c.Put([]byte(key), b) - }); err != nil { - logrus.Errorf("save err: %v", err) - return err - } - return nil -} - -func (this *DbServiceImpl) SaveLubanConf(conf *model.GenTool) error { - return this.save(common.BUCKET_LUBANCONF, conf) -} - -func (this *DbServiceImpl) SavePbConf(conf *model.PbConfModel) error { - return this.save(common.BUCKET_PBCONF, conf) -} - -func (this *DbServiceImpl) GetLubanConf(key string) *model.GenTool { - boltDb = GetBoltDb() - defer boltDb.Close() - model := &model.GenTool{} - if err = boltDb.View(func(tx *bolt.Tx) error { - b := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME)) - if b == nil { - return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME) - } - val := b.Get([]byte(key)) - if err = json.Unmarshal(val, model); err != nil { - logrus.Errorf("get gen conf err:%v", err) - return err - } - return nil - }); err != nil { - logrus.Errorf("get db conf err: %v", err) - return nil - } - - return model -} - -func (this *DbServiceImpl) SaveSSHConf(conf *model.SSHModel) error { - return this.save(common.BUCKET_SSHCONF, conf) -} - -func (this *DbServiceImpl) GetSSHConf(key string) *model.SSHModel { - boltDb = GetBoltDb() - defer boltDb.Close() - model := &model.SSHModel{} - if err = boltDb.View(func(tx *bolt.Tx) error { - b := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME)) - if b == nil { - return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME) - } - val := b.Get([]byte(key)) - if err = json.Unmarshal(val, model); err != nil { - logrus.Errorf("get gen conf err:%v", err) - return err - } - return nil - }); err != nil { - logrus.Errorf("get db conf err: %v", err) - return nil - } - - return model -} - -func (this *DbServiceImpl) GetPbConf() *model.PbConfModel { - boltDb = GetBoltDb() - defer boltDb.Close() - model := &model.PbConfModel{} - if err = boltDb.View(func(tx *bolt.Tx) error { - b := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME)) - if b == nil { - return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME) - } - val := b.Get([]byte(common.BUCKET_PBCONF)) - if err = json.Unmarshal(val, model); err != nil { - logrus.Errorf("get gen conf err:%v", err) - return err - } - return nil - }); err != nil { - logrus.Errorf("get db conf err: %v", err) - return nil - } - - return model -} - -var ( - boltDb *bolt.DB - bucket *bolt.Bucket - err error -) - -func GetBoltDb() *bolt.DB { - boltDb, err = bolt.Open(common.BOLTDB_NAME, 0600, &bolt.Options{Timeout: 5 * time.Second}) - if err != nil { - log.Fatal(err) - } - - boltDb.Update(func(tx *bolt.Tx) error { - b := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME)) - if b != nil { - bucket = b - } else { - bucket, err = tx.CreateBucket([]byte(common.BOLTDB_BUCKETNAME)) - if err != nil { - return fmt.Errorf("create bucket: %s", err) - } - } - return nil - }) - return boltDb -} diff --git a/cmd/v2/service/sshService.go b/cmd/v2/service/sshService.go index c7933bf02..a1f4e2e2a 100644 --- a/cmd/v2/service/sshService.go +++ b/cmd/v2/service/sshService.go @@ -102,6 +102,7 @@ func (ss *SSHService) getSftp() (*sftp.Client, error) { if ss.Client == nil { return nil, errors.New("ssh client is nil") } + var err error sftpOne.Do(func() { if sftpCli, err = sftp.NewClient(ss.Client); err != nil { return @@ -209,6 +210,7 @@ func (ss *SSHService) ScpCopy(localFilePath, remoteDir string) error { //批量copy func (ss *SSHService) BatchScpCoy(cfs []CopyFiles, remoteDir string) error { + var err error sftpCli, err = ss.getSftp() if err != nil { return fmt.Errorf("new sftp client error: %w", err) @@ -285,6 +287,7 @@ func (ss *SSHService) Scp(targetDir, srcFileName string) (int, error) { //Download func (ss *SSHService) ScpDownload(localDir, remoteFilePath string) error { + var err error sftpCli, err = ss.getSftp() if err != nil { return fmt.Errorf("new sftp client error: %w", err) @@ -342,6 +345,7 @@ func (ss *SSHService) GetRemoteDir(remoteDir string) (files []File, err error) { } func (ss *SSHService) BatchScpDownload(localDir, remoteDir string) error { + var err error sftpCli, err = ss.getSftp() if err != nil { return fmt.Errorf("new sftp client error: %w", err) diff --git a/cmd/v2/ui/tool_luban.go b/cmd/v2/ui/tool_luban.go index a60a7952d..a4a9ce817 100644 --- a/cmd/v2/ui/tool_luban.go +++ b/cmd/v2/ui/tool_luban.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" "go_dreamfactory/cmd/v2/lib/common" - "go_dreamfactory/cmd/v2/model" + os_storage "go_dreamfactory/cmd/v2/lib/storage" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service/observer" "os/exec" @@ -36,9 +36,11 @@ func (this *appGen) LazyInit(ptService service.PttService, obs observer.Observer this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_GEN, theme.ContentCopyIcon(), nil) - // load - gt := service.GetDbService().GetLubanConf(common.BUCKET_LUBANCONF) - logrus.Debugf("%v", gt) + storage, _ := os_storage.NewOSStorage() + conf, err := storage.LoadConfig() + if err != nil { + return err + } content := container.NewMax() content.Objects = []fyne.CanvasObject{} @@ -83,14 +85,14 @@ func (this *appGen) LazyInit(ptService service.PttService, obs observer.Observer }) genType.PlaceHolder = "生成类型" - if gt != nil { - serverAddr.Text = gt.ServerAddr - projectDir.Text = gt.ProjectDir - workDir.Text = gt.WorkDir - client.Text = gt.Client - genType.Selected = gt.GenType - genTypeText = gt.GenType - tmpDir.Text = gt.TmpDir + if conf.LubanConf != nil { + serverAddr.Text = conf.LubanConf.ServerAddr + projectDir.Text = conf.LubanConf.ProjectDir + workDir.Text = conf.LubanConf.WorkDir + client.Text = conf.LubanConf.Client + genType.Selected = conf.LubanConf.GenType + genTypeText = conf.LubanConf.GenType + tmpDir.Text = conf.LubanConf.TmpDir } form := widget.NewForm( @@ -127,7 +129,7 @@ func (this *appGen) LazyInit(ptService service.PttService, obs observer.Observer } saveBtn := widget.NewButtonWithIcon("保存配置", theme.DocumentSaveIcon(), func() { - if err := service.GetDbService().SaveLubanConf(&model.GenTool{ + lubanconf := &os_storage.LubanConfig{ ServerAddr: serverAddr.Text, ProjectDir: projectDir.Text, Client: client.Text, @@ -137,7 +139,9 @@ func (this *appGen) LazyInit(ptService service.PttService, obs observer.Observer OutputJsonDir: outputJsonDir.Text, GenType: genTypeText, TmpDir: tmpDir.Text, - }); err != nil { + } + conf.LubanConf = lubanconf + if err := storage.StoreConfig(conf); err != nil { logrus.WithField("err", err).Debug("保存配置") } logrus.Debug("save luban conf") diff --git a/cmd/v2/ui/tool_pb.go b/cmd/v2/ui/tool_pb.go index f40443e01..822362bdc 100644 --- a/cmd/v2/ui/tool_pb.go +++ b/cmd/v2/ui/tool_pb.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" "go_dreamfactory/cmd/v2/lib/common" - "go_dreamfactory/cmd/v2/model" + os_storage "go_dreamfactory/cmd/v2/lib/storage" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service/observer" "go_dreamfactory/utils" @@ -35,8 +35,11 @@ func (this *appPbGen) LazyInit(ptService service.PttService, obs observer.Observ countLabel := widget.NewLabel("") //load - pcm := service.GetDbService().GetPbConf() - logrus.Debugf("%v", pcm) + storage, _ := os_storage.NewOSStorage() + conf, err := storage.LoadConfig() + if err != nil { + return err + } // 打开目录 openFolder := func(entry *widget.Entry) { @@ -78,9 +81,9 @@ func (this *appPbGen) LazyInit(ptService service.PttService, obs observer.Observ }), outDir)), ) - if pcm != nil { - protoDir.SetText(pcm.ProtoDir) - outDir.SetText(pcm.OutputDir) + if conf.PbConf != nil { + protoDir.SetText(conf.PbConf.ProtoDir) + outDir.SetText(conf.PbConf.OutputDir) } //打开资源管理器 @@ -157,11 +160,14 @@ func (this *appPbGen) LazyInit(ptService service.PttService, obs observer.Observ confBtn := &widget.Button{Text: "保存配置", Icon: theme.DocumentSaveIcon()} confBtn.OnTapped = func() { - if err := service.GetDbService().SavePbConf(&model.PbConfModel{ + pbconf := &os_storage.ProtobufConfig{ ProtoDir: protoDir.Text, OutputDir: outDir.Text, - }); err != nil { + } + conf.PbConf = pbconf + if err := storage.StoreConfig(conf); err != nil { logrus.WithField("err", err).Debug("保存配置") + return } logrus.Debug("save pb conf") } diff --git a/cmd/v2/ui/tool_term.go b/cmd/v2/ui/tool_term.go index 74bd4fbd3..87a04e90c 100644 --- a/cmd/v2/ui/tool_term.go +++ b/cmd/v2/ui/tool_term.go @@ -3,7 +3,7 @@ package ui import ( "fmt" "go_dreamfactory/cmd/v2/lib/common" - "go_dreamfactory/cmd/v2/model" + os_storage "go_dreamfactory/cmd/v2/lib/storage" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service/observer" "image/color" @@ -57,8 +57,11 @@ func (app *appTerm) LazyInit(ptService service.PttService, obs observer.Observer content.Objects = []fyne.CanvasObject{} //load term conf - sshConf := service.GetDbService().GetSSHConf(common.BUCKET_SSHCONF) - logrus.Debugf("%v", sshConf) + storage, _ := os_storage.NewOSStorage() + conf, err := storage.LoadConfig() + if err != nil { + return err + } //left-top localDir := widget.NewEntry() @@ -125,21 +128,21 @@ func (app *appTerm) LazyInit(ptService service.PttService, obs observer.Observer ) //set input entry - if sshConf != nil { - ip.Text = sshConf.Ip - port.Text = sshConf.Port - userName.Text = sshConf.UserName - password.Text = sshConf.Password - localDir.Text = sshConf.LocalDir - remoteDir.Text = sshConf.RemoteDir + if conf.SyncConf != nil { + ip.Text = conf.SyncConf.Ip + port.Text = conf.SyncConf.Port + userName.Text = conf.SyncConf.UserName + password.Text = conf.SyncConf.Password + localDir.Text = conf.SyncConf.LocalDir + remoteDir.Text = conf.SyncConf.RemoteDir // // - lubanAddr.Text = sshConf.ServerIp - workDir.Text = sshConf.WorkDir - lubanCli.Text = sshConf.LubanCli - dataDir.Text = sshConf.DataDir - jsonDir.Text = sshConf.JsonDir + lubanAddr.Text = conf.SyncConf.ServerIp + workDir.Text = conf.SyncConf.WorkDir + lubanCli.Text = conf.SyncConf.LubanCli + dataDir.Text = conf.SyncConf.DataDir + jsonDir.Text = conf.SyncConf.JsonDir } else { - sshConf = &model.SSHModel{ + conf.SyncConf = &os_storage.SyncConfig{ Ip: "10.0.0.9", UserName: "root", Password: "Legu.cc()123", @@ -160,19 +163,22 @@ func (app *appTerm) LazyInit(ptService service.PttService, obs observer.Observer // save func saveFunc := func() { - sshConf.Ip = ip.Text - sshConf.UserName = userName.Text - sshConf.Password = password.Text - sshConf.Port = port.Text - sshConf.LocalDir = localDir.Text - sshConf.RemoteDir = remoteDir.Text - sshConf.ServerIp = lubanAddr.Text - sshConf.WorkDir = workDir.Text - sshConf.LubanCli = lubanCli.Text - sshConf.DataDir = dataDir.Text - sshConf.JsonDir = jsonDir.Text - if err := service.GetDbService().SaveSSHConf(sshConf); err != nil { - logrus.WithField("err", err).Debug("保存配置") + syncConf := &os_storage.SyncConfig{ + Ip: ip.Text, + UserName: userName.Text, + Password: password.Text, + Port: port.Text, + LocalDir: localDir.Text, + RemoteDir: remoteDir.Text, + ServerIp: lubanAddr.Text, + WorkDir: workDir.Text, + LubanCli: lubanCli.Text, + DataDir: dataDir.Text, + JsonDir: jsonDir.Text, + } + conf.SyncConf = syncConf + if err := storage.StoreConfig(conf); err != nil { + logrus.Error(err) } } saveBtn1 := widget.NewButtonWithIcon("保存配置", theme.DocumentSaveIcon(), saveFunc) @@ -598,22 +604,32 @@ func (a *appTerm) createDownloadWindow() fyne.Window { // 进度条 downloadProgress := widget.NewProgressBarInfinite() - var sshConf *model.SSHModel + var ( + storage os_storage.Storage + conf *os_storage.Config + err error + ) defer func() { downloadProgress.Hide() //加载配置 - sshConf = service.GetDbService().GetSSHConf(common.BUCKET_SSHCONF) - if sshConf != nil { - if sshConf.LogDir == "" { + storage, _ = os_storage.NewOSStorage() + conf, err = storage.LoadConfig() + if err != nil { + return + } + + // sshConf = service.GetDbService().GetSSHConf(common.BUCKET_SSHCONF) + if conf.SyncConf != nil { + if conf.SyncConf.LogDir == "" { remoteLogDirEntry.Text = "/home/liwei/go_dreamfactory/bin/log/" } else { - remoteLogDirEntry.Text = sshConf.LogDir + remoteLogDirEntry.Text = conf.SyncConf.LogDir } - saveDirEntry.Text = sshConf.SaveDir - editorEntry.Text = sshConf.Editor + saveDirEntry.Text = conf.SyncConf.SaveDir + editorEntry.Text = conf.SyncConf.Editor } else { - sshConf = &model.SSHModel{} + conf.SyncConf = &os_storage.SyncConfig{} } remoteLogDirEntry.Refresh() @@ -641,11 +657,11 @@ func (a *appTerm) createDownloadWindow() fyne.Window { EditorBtn := widget.NewButtonWithIcon("打开编辑器", theme.FolderIcon(), nil) saveConfBtn := widget.NewButtonWithIcon("保存配置", theme.DocumentSaveIcon(), func() { // 保存配置 - sshConf.LogDir = remoteLogDirEntry.Text - sshConf.SaveDir = saveDirEntry.Text - sshConf.Editor = editorEntry.Text - if err := service.GetDbService().SaveSSHConf(sshConf); err != nil { - logrus.WithField("err", err).Debug("保存日志配置") + conf.SyncConf.LogDir = remoteLogDirEntry.Text + conf.SyncConf.SaveDir = saveDirEntry.Text + conf.SyncConf.Editor = editorEntry.Text + if err := storage.StoreConfig(conf); err != nil { + logrus.Error(err) } })