Implement scanning project dirs
This commit is contained in:
36
main.go
36
main.go
@@ -45,6 +45,10 @@ var scanFolders []string = []string{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
for idx, folder := range scanFolders {
|
||||||
|
scanFolders[idx] = path.Clean(folder)
|
||||||
|
}
|
||||||
|
|
||||||
config, err := ReadDBConfig()
|
config, err := ReadDBConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Error.Fatalf("Error reading database config: %v", err)
|
Error.Fatalf("Error reading database config: %v", err)
|
||||||
@@ -58,7 +62,6 @@ func main() {
|
|||||||
if relevantPath == "" {
|
if relevantPath == "" {
|
||||||
relevantPath = v.FolderURI
|
relevantPath = v.FolderURI
|
||||||
}
|
}
|
||||||
log.Printf("%#v", relevantPath)
|
|
||||||
relevantPath = strings.TrimPrefix(relevantPath, "file://")
|
relevantPath = strings.TrimPrefix(relevantPath, "file://")
|
||||||
relevantPath = strings.TrimPrefix(relevantPath, "/")
|
relevantPath = strings.TrimPrefix(relevantPath, "/")
|
||||||
decoded, err := url.QueryUnescape(relevantPath)
|
decoded, err := url.QueryUnescape(relevantPath)
|
||||||
@@ -70,8 +73,16 @@ func main() {
|
|||||||
|
|
||||||
file, err := os.Open(relevantPath)
|
file, err := os.Open(relevantPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("%#v %s", relevantPath, "...does not exist")
|
if os.IsNotExist(err) {
|
||||||
cleaned++
|
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
|
continue
|
||||||
}
|
}
|
||||||
file.Close()
|
file.Close()
|
||||||
@@ -85,9 +96,26 @@ func main() {
|
|||||||
}
|
}
|
||||||
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(validEntries))
|
||||||
|
|
||||||
|
added := 0
|
||||||
for _, folder := range scanFolders {
|
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) {
|
func ReadDBConfig() (Config, error) {
|
||||||
|
8
types.go
8
types.go
@@ -3,13 +3,13 @@ package main
|
|||||||
type Config struct {
|
type Config struct {
|
||||||
Entries []Entry `json:"entries"`
|
Entries []Entry `json:"entries"`
|
||||||
}
|
}
|
||||||
type Workspace struct {
|
|
||||||
ID string `json:"id"`
|
|
||||||
ConfigPath string `json:"configPath"`
|
|
||||||
}
|
|
||||||
type Entry struct {
|
type Entry struct {
|
||||||
FolderURI string `json:"folderUri,omitempty"`
|
FolderURI string `json:"folderUri,omitempty"`
|
||||||
Workspace Workspace `json:"workspace,omitempty"`
|
Workspace Workspace `json:"workspace,omitempty"`
|
||||||
FileURI string `json:"fileUri,omitempty"`
|
FileURI string `json:"fileUri,omitempty"`
|
||||||
Label string `json:"label,omitempty"`
|
Label string `json:"label,omitempty"`
|
||||||
}
|
}
|
||||||
|
type Workspace struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
ConfigPath string `json:"configPath"`
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user