mirror of
https://github.com/RyanGreenup/cadmus.git
synced 2025-08-11 08:34:05 +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