mirror of
https://github.com/RyanGreenup/cadmus.git
synced 2025-08-02 12:21:18 +02:00
89 lines
2.0 KiB
Go
89 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
// TODO this should not search a bleve index
|
|
// TODO this should really only return md/txt/org files?
|
|
// TODO this should handle arguments intelligently
|
|
func main() {
|
|
// TODO this should be the second argument
|
|
// TODO how can I make this work for symlinks?
|
|
dir := "/home/ryan/Sync/Notes"
|
|
note_path := "journal.teacher.preperation"
|
|
|
|
all_files := note_paths(dir)
|
|
matching_files := note_matches(note_path, all_files)
|
|
|
|
for key, value := range matching_files {
|
|
_ = key
|
|
fmt.Println(value)
|
|
}
|
|
|
|
// fmt.Println(matching_files)
|
|
|
|
// var note_path string
|
|
// if len(os.Args) > 1 {
|
|
// note_path := os.Args[1]
|
|
// check_file(note_path)
|
|
// } else {
|
|
// note_path = os.Args[2]
|
|
// }
|
|
|
|
}
|
|
|
|
// TODO
|
|
func check_file(note_path string) {
|
|
fmt.Println("Is it the path to a file, on the disk, that I can find?, If not stop and ask for user input")
|
|
fmt.Println("I need to check if the file is actually a file and otherwise print a warning")
|
|
os.Stdout.WriteString("Warning: This has not been implemented")
|
|
}
|
|
|
|
// Walk through a directory and append all files and directories to an array
|
|
func note_paths(dir string) []string {
|
|
var files_list []string
|
|
|
|
err := filepath.WalkDir(dir,
|
|
func(path string, d os.DirEntry, err error) error {
|
|
if err != nil {
|
|
return err
|
|
}
|
|
// if !strings.Contains(path, ".git") {
|
|
// No dotFiles
|
|
Is_matchedQ, _ := regexp.MatchString(".git.*|^[.].*|zap*|~$", path)
|
|
if !Is_matchedQ {
|
|
files_list = append(files_list, path)
|
|
}
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
log.Println(err)
|
|
}
|
|
// return []string{"g", "h", "i"}
|
|
return files_list
|
|
}
|
|
|
|
func note_matches(target_string string, all_strings []string) []string {
|
|
var matching_files []string
|
|
for _, file := range all_strings {
|
|
content, err := os.ReadFile(file)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
content_string := string(content)
|
|
matchedQ := strings.Contains(content_string, target_string)
|
|
|
|
if matchedQ {
|
|
matching_files = append(matching_files, file)
|
|
}
|
|
}
|
|
|
|
return matching_files
|
|
}
|