mirror of
https://github.com/RyanGreenup/cadmus.git
synced 2025-07-31 19:30:12 +02:00
Print Backlinks from Notes
This commit is contained in:
88
printBacklinks.go
Normal file
88
printBacklinks.go
Normal file
@@ -0,0 +1,88 @@
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user