diff --git a/main.go b/main.go index 35e09be..0e5c80f 100644 --- a/main.go +++ b/main.go @@ -45,6 +45,10 @@ var scanFolders []string = []string{ } func main() { + for idx, folder := range scanFolders { + scanFolders[idx] = path.Clean(folder) + } + config, err := ReadDBConfig() if err != nil { Error.Fatalf("Error reading database config: %v", err) @@ -58,7 +62,6 @@ func main() { if relevantPath == "" { relevantPath = v.FolderURI } - log.Printf("%#v", relevantPath) relevantPath = strings.TrimPrefix(relevantPath, "file://") relevantPath = strings.TrimPrefix(relevantPath, "/") decoded, err := url.QueryUnescape(relevantPath) @@ -70,8 +73,16 @@ func main() { file, err := os.Open(relevantPath) if err != nil { - log.Printf("%#v %s", relevantPath, "...does not exist") - cleaned++ + if os.IsNotExist(err) { + log.Printf("Discarding non existing directory %s", relevantPath) + 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) + continue + } continue } file.Close() @@ -85,9 +96,26 @@ func main() { } log.Printf("Cleaned %d invalid entries, %d valid entries remain", cleaned, len(validEntries)) + added := 0 for _, folder := range scanFolders { - log.Printf("%#v", folder) + files, err := os.ReadDir(folder) + if err != nil { + log.Printf("Error reading folder %s: %v", folder, err) + continue + } + + for _, fileEntry := range files { + if !fileEntry.IsDir() { + continue + } + newEntry := Entry{ + FolderURI: path.Clean(path.Join(folder, fileEntry.Name())), + } + validEntries = append(validEntries, &newEntry) + added++ + } } + log.Printf("Added %d new entries from scan folders, now %d total", added, len(validEntries)) } func ReadDBConfig() (Config, error) { diff --git a/types.go b/types.go index 40c32cb..e0dc286 100644 --- a/types.go +++ b/types.go @@ -3,13 +3,13 @@ package main type Config struct { Entries []Entry `json:"entries"` } -type Workspace struct { - ID string `json:"id"` - ConfigPath string `json:"configPath"` -} type Entry struct { FolderURI string `json:"folderUri,omitempty"` Workspace Workspace `json:"workspace,omitempty"` FileURI string `json:"fileUri,omitempty"` Label string `json:"label,omitempty"` } +type Workspace struct { + ID string `json:"id"` + ConfigPath string `json:"configPath"` +}