Rework the main datastructure from list to map
This commit is contained in:
58
main.go
58
main.go
@@ -54,39 +54,27 @@ func main() {
|
||||
Error.Fatalf("Error reading database config: %v", err)
|
||||
return
|
||||
}
|
||||
log.Printf("Loaded %d entries", len(config.Entries))
|
||||
cleanConfig := CleanConfig(config)
|
||||
log.Printf("%d after cleaning config", len(cleanConfig))
|
||||
|
||||
cleaned := 0
|
||||
var validEntries []*Entry = make([]*Entry, 0, len(config.Entries))
|
||||
for _, v := range config.Entries {
|
||||
relevantPath := v.FileURI
|
||||
if relevantPath == "" {
|
||||
relevantPath = v.FolderURI
|
||||
}
|
||||
relevantPath = strings.TrimPrefix(relevantPath, "file://")
|
||||
relevantPath = strings.TrimPrefix(relevantPath, "/")
|
||||
decoded, err := url.QueryUnescape(relevantPath)
|
||||
if err != nil {
|
||||
Error.Printf("Error decoding URI %s: %v", v.FileURI, err)
|
||||
continue
|
||||
}
|
||||
relevantPath = path.Clean(decoded)
|
||||
|
||||
file, err := os.Open(relevantPath)
|
||||
for ipath := range cleanConfig {
|
||||
file, err := os.Open(ipath)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
log.Printf("Discarding non existing directory %s", relevantPath)
|
||||
log.Printf("Discarding non existing directory %s", ipath)
|
||||
delete(cleanConfig, ipath)
|
||||
cleaned++
|
||||
} else {
|
||||
// Maybe we fail to open it for some other reason...
|
||||
// Could be it still does exist
|
||||
Error.Printf("Error opening file %s: %v", relevantPath, err)
|
||||
validEntries = append(validEntries, &v)
|
||||
Error.Printf("Error opening file %s: %v", ipath, err)
|
||||
continue
|
||||
}
|
||||
continue
|
||||
}
|
||||
file.Close()
|
||||
validEntries = append(validEntries, &v)
|
||||
|
||||
// escaped := url.QueryEscape(relevantPath)
|
||||
// escaped = strings.ReplaceAll(escaped, "%2F", "/")
|
||||
@@ -94,7 +82,7 @@ func main() {
|
||||
// escaped = "file:///" + escaped
|
||||
// log.Printf("%#v", escaped)
|
||||
}
|
||||
log.Printf("Cleaned %d invalid entries, %d valid entries remain", cleaned, len(validEntries))
|
||||
log.Printf("Cleaned %d invalid entries, %d valid entries remain", cleaned, len(cleanConfig))
|
||||
|
||||
added := 0
|
||||
for _, folder := range scanFolders {
|
||||
@@ -111,11 +99,16 @@ func main() {
|
||||
newEntry := Entry{
|
||||
FolderURI: path.Clean(path.Join(folder, fileEntry.Name())),
|
||||
}
|
||||
validEntries = append(validEntries, &newEntry)
|
||||
_, exists := cleanConfig[newEntry.FolderURI]
|
||||
if exists {
|
||||
log.Printf("Folder %s already exists in config", newEntry.FolderURI)
|
||||
continue
|
||||
}
|
||||
cleanConfig[newEntry.FolderURI] = &newEntry
|
||||
added++
|
||||
}
|
||||
}
|
||||
log.Printf("Added %d new entries from scan folders, now %d total", added, len(validEntries))
|
||||
log.Printf("Added %d new entries from scan folders, now %d total", added, len(cleanConfig))
|
||||
}
|
||||
|
||||
func ReadDBConfig() (Config, error) {
|
||||
@@ -141,6 +134,25 @@ func ReadDBConfig() (Config, error) {
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
func CleanConfig(config Config) map[string]*Entry {
|
||||
var res = make(map[string]*Entry)
|
||||
for _, entry := range config.Entries {
|
||||
relevantPath := entry.FileURI
|
||||
if relevantPath == "" {
|
||||
relevantPath = entry.FolderURI
|
||||
}
|
||||
relevantPath = strings.TrimPrefix(relevantPath, "file://")
|
||||
relevantPath = strings.TrimPrefix(relevantPath, "/")
|
||||
decoded, err := url.QueryUnescape(relevantPath)
|
||||
if err != nil {
|
||||
Error.Printf("Error decoding URI %s: %v", relevantPath, err)
|
||||
continue
|
||||
}
|
||||
relevantPath = path.Clean(decoded)
|
||||
res[relevantPath] = &entry
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func WriteDBConfig(config Config) error {
|
||||
conn, err := sql.Open("sqlite3", projectsFile)
|
||||
|
Reference in New Issue
Block a user