mirror of
https://github.com/Instadapp/trustwallet-assets.git
synced 2024-07-29 22:37:31 +00:00
d547fb1473
* Move CI scripts logic from assets-go-libs * Add Makefile, .golangci.yml and lint jobs to workflow * Fix
59 lines
1.0 KiB
Go
59 lines
1.0 KiB
Go
package file
|
|
|
|
import (
|
|
"path/filepath"
|
|
"strings"
|
|
"sync"
|
|
)
|
|
|
|
type Service struct {
|
|
mu *sync.RWMutex
|
|
cache map[string]*AssetFile
|
|
}
|
|
|
|
func NewService(filePaths ...string) *Service {
|
|
var filesMap = make(map[string]*AssetFile)
|
|
|
|
for _, path := range filePaths {
|
|
assetFile := NewAssetFile(path)
|
|
filesMap[path] = assetFile
|
|
}
|
|
|
|
return &Service{
|
|
mu: &sync.RWMutex{},
|
|
cache: filesMap,
|
|
}
|
|
}
|
|
|
|
func (f *Service) GetAssetFile(path string) *AssetFile {
|
|
f.mu.RLock()
|
|
defer f.mu.RUnlock()
|
|
|
|
return f.getFile(path)
|
|
}
|
|
|
|
func (f *Service) UpdateFile(file *AssetFile, newFileBaseName string) {
|
|
f.mu.RLock()
|
|
defer f.mu.RUnlock()
|
|
|
|
oldFileBaseName := filepath.Base(file.Path())
|
|
|
|
for path := range f.cache {
|
|
if strings.Contains(path, oldFileBaseName) {
|
|
newPath := strings.ReplaceAll(path, oldFileBaseName, newFileBaseName)
|
|
f.cache[path] = NewAssetFile(newPath)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (f *Service) getFile(path string) *AssetFile {
|
|
if file, exists := f.cache[path]; exists {
|
|
return file
|
|
}
|
|
|
|
assetF := NewAssetFile(path)
|
|
f.cache[path] = assetF
|
|
|
|
return assetF
|
|
}
|