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