ignore walk error, use walkdir instead of walk

pull/229/head
au 2 years ago
parent e891e15a47
commit 4f52de3538
  1. 6
      browser/browser.go
  2. 29
      browser/firefox/firefox.go

@ -87,11 +87,13 @@ func pickFirefox(name, profile string) []Browser {
} else {
profile = fileutil.ParentDir(profile)
}
if !fileutil.IsDirExists(filepath.Clean(profile)) {
log.Noticef("find browser firefox %s failed, profile folder does not exist", v.name)
continue
}
if multiFirefox, err := firefox.New(v.name, v.storage, profile, v.items); err == nil {
if multiFirefox, err := firefox.New(profile, v.items); err == nil {
for _, b := range multiFirefox {
log.Noticef("find browser firefox %s success", b.Name())
browsers = append(browsers, b)
@ -100,8 +102,10 @@ func pickFirefox(name, profile string) []Browser {
log.Error(err)
}
}
return browsers
}
return nil
}

@ -23,18 +23,11 @@ type Firefox struct {
var ErrProfilePathNotFound = errors.New("profile path not found")
// New returns a new Firefox instance.
func New(name, storage, profilePath string, items []item.Item) ([]*Firefox, error) {
f := &Firefox{
name: name,
storage: storage,
profilePath: profilePath,
items: items,
}
multiItemPaths, err := f.getMultiItemPath(f.profilePath, f.items)
if err != nil {
return nil, err
}
// New returns new Firefox instances.
func New(profilePath string, items []item.Item) ([]*Firefox, error) {
multiItemPaths := make(map[string]map[item.Item]string)
// ignore walk dir error since it can be produced by a single entry
_ = filepath.WalkDir(profilePath, firefoxWalkFunc(items, multiItemPaths))
firefoxList := make([]*Firefox, 0, len(multiItemPaths))
for name, itemPaths := range multiItemPaths {
@ -44,13 +37,8 @@ func New(name, storage, profilePath string, items []item.Item) ([]*Firefox, erro
itemPaths: itemPaths,
})
}
return firefoxList, nil
}
func (f *Firefox) getMultiItemPath(profilePath string, items []item.Item) (map[string]map[item.Item]string, error) {
multiItemPaths := make(map[string]map[item.Item]string)
err := filepath.Walk(profilePath, firefoxWalkFunc(items, multiItemPaths))
return multiItemPaths, err
return firefoxList, nil
}
func (f *Firefox) copyItemToLocal() error {
@ -63,8 +51,8 @@ func (f *Firefox) copyItemToLocal() error {
return nil
}
func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]string) filepath.WalkFunc {
return func(path string, info fs.FileInfo, err error) error {
func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]string) fs.WalkDirFunc {
return func(path string, info fs.DirEntry, err error) error {
for _, v := range items {
if info.Name() == v.FileName() {
parentBaseDir := fileutil.ParentBaseDir(path)
@ -75,6 +63,7 @@ func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]
}
}
}
return err
}
}

Loading…
Cancel
Save