Implement scanning project dirs

This commit is contained in:
2024-08-13 09:34:15 +02:00
parent 9a8f1c3dbd
commit 4b9f968b49
2 changed files with 36 additions and 8 deletions

36
main.go
View File

@@ -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) {

View File

@@ -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"`
}