From 948872b933ab7ab47e95f694defcbf406bc9b5af Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Sat, 4 Oct 2025 02:18:47 +0100 Subject: [PATCH] Refactor Signed-off-by: Oliver Davies --- internal/zet/create.go | 60 +++++++++++++++++ internal/zet/edit.go | 18 +++++ internal/zet/get.go | 48 +++++++++++++ internal/zet/parse.go | 21 ++++++ internal/zet/search.go | 44 ++++++++++++ internal/zet/view.go | 15 +++++ internal/zet/zet.go | 150 ----------------------------------------- 7 files changed, 206 insertions(+), 150 deletions(-) create mode 100644 internal/zet/create.go create mode 100644 internal/zet/edit.go create mode 100644 internal/zet/get.go create mode 100644 internal/zet/parse.go create mode 100644 internal/zet/search.go create mode 100644 internal/zet/view.go diff --git a/internal/zet/create.go b/internal/zet/create.go new file mode 100644 index 0000000..bdace2f --- /dev/null +++ b/internal/zet/create.go @@ -0,0 +1,60 @@ +package zet + +import ( + "fmt" + "log" + "os" + "os/exec" + "path" + "strconv" + "strings" + + "code.oliverdavies.uk/opdavies/cmd-zet/internal/config" + "code.oliverdavies.uk/opdavies/cmd-zet/internal/file" +) + +func CreateZet(title string) { + zid := newZid() + + path := path.Join(config.GetZetDir(), strconv.Itoa(zid)) + + os.Mkdir(path, 0750) + + filePath := fmt.Sprintf("%s/index.adoc", path) + + f, err := os.Create(filePath) + + if err != nil { + log.Fatal(err) + } + + defer f.Close() + + _, err = fmt.Fprintf(f, "= %s", title) + + if err != nil { + log.Fatal(err) + } + + file.Edit(filePath) + + onSave(zid) +} + +func newZid() int { + cmd := exec.Command("ls", config.GetZetDir()) + output, _ := cmd.CombinedOutput() + + zets := strings.Split(string(output), "\n") + + var zetCount int + + for _, zet := range zets { + num, err := strconv.Atoi(zet) + if err == nil && num > zetCount { + zetCount = num + } + } + + return zetCount + 1 +} diff --git a/internal/zet/edit.go b/internal/zet/edit.go new file mode 100644 index 0000000..cf78a1f --- /dev/null +++ b/internal/zet/edit.go @@ -0,0 +1,18 @@ +package zet + +import ( + "path" + "strconv" + + "code.oliverdavies.uk/opdavies/cmd-zet/internal/config" + "code.oliverdavies.uk/opdavies/cmd-zet/internal/file" +) + +func EditZet(id int) { + zetPath := path.Join(config.GetZetDir(), strconv.Itoa(id), "index.adoc") + + file.Edit(zetPath) + + onSave(id) +} + diff --git a/internal/zet/get.go b/internal/zet/get.go new file mode 100644 index 0000000..bbaef9b --- /dev/null +++ b/internal/zet/get.go @@ -0,0 +1,48 @@ +package zet + +import ( + "log" + "regexp" + "sort" + "strconv" + + "code.oliverdavies.uk/opdavies/cmd-zet/internal/git" +) + +func GetAllZets() []int { + zets, err := git.ExecGitCommand("ls-files") + + if err != nil { + log.Println(err) + } + + re := regexp.MustCompile(`[0-9]+`) + matches := re.FindAllString(zets, -1) + + sort.Strings(matches) + + ids := make(map[int]struct{}) + for _, id := range matches { + num, err := strconv.Atoi(id) + + if err == nil { + ids[num] = struct{}{} + } + } + + var sorted []int + for num := range ids { + sorted = append(sorted, num) + } + + sort.Ints(sorted) + + return sorted +} + +func GetLatestZet() int { + z := GetAllZets() + + return z[len(z)-1] +} + diff --git a/internal/zet/parse.go b/internal/zet/parse.go new file mode 100644 index 0000000..e69211f --- /dev/null +++ b/internal/zet/parse.go @@ -0,0 +1,21 @@ +package zet + +import ( + "fmt" + "strconv" +) + +func ParseZetList(ids []int) []string { + var lines []string + + green := "\033[32m" + reset := "\033[0m" + + for _, num := range ids { + line := fmt.Sprintf("%s%s%s %s", green, strconv.Itoa(num), reset, getTitle(num)) + + lines = append(lines, line) + } + + return lines +} diff --git a/internal/zet/search.go b/internal/zet/search.go new file mode 100644 index 0000000..16cc44c --- /dev/null +++ b/internal/zet/search.go @@ -0,0 +1,44 @@ +package zet + +import ( + "fmt" + "os" + "regexp" + "sort" + "strconv" + + "code.oliverdavies.uk/opdavies/cmd-zet/internal/git" +) + +func SearchZets(query string) []int { + zets, err := git.ExecGitCommand("grep", "-i", "--name-only", "--word-regex", query) + + if err != nil { + fmt.Printf("No matches found for %s.\n", query) + + os.Exit(1) + } + + re := regexp.MustCompile(`[0-9]+`) + matches := re.FindAllString(zets, -1) + + sort.Strings(matches) + + ids := make(map[int]struct{}) + for _, id := range matches { + num, err := strconv.Atoi(id) + + if err == nil { + ids[num] = struct{}{} + } + } + + var sorted []int + for num := range ids { + sorted = append(sorted, num) + } + + sort.Ints(sorted) + + return sorted +} diff --git a/internal/zet/view.go b/internal/zet/view.go new file mode 100644 index 0000000..860c36a --- /dev/null +++ b/internal/zet/view.go @@ -0,0 +1,15 @@ +package zet + +import ( + "path" + "strconv" + + "code.oliverdavies.uk/opdavies/cmd-zet/internal/config" + "code.oliverdavies.uk/opdavies/cmd-zet/internal/file" +) + +func ViewZet(id int) string { + zetPath := path.Join(config.GetZetDir(), strconv.Itoa(id), "index.adoc") + + return file.View(zetPath) +} diff --git a/internal/zet/zet.go b/internal/zet/zet.go index eed4991..0775244 100644 --- a/internal/zet/zet.go +++ b/internal/zet/zet.go @@ -3,147 +3,15 @@ package zet import ( "bufio" "fmt" - "log" "os" - "os/exec" "path" - "regexp" - "sort" "strconv" "strings" "code.oliverdavies.uk/opdavies/cmd-zet/internal/config" - "code.oliverdavies.uk/opdavies/cmd-zet/internal/file" "code.oliverdavies.uk/opdavies/cmd-zet/internal/git" ) -func CreateZet(title string) { - zid := newZid() - - path := path.Join(config.GetZetDir(), strconv.Itoa(zid)) - - os.Mkdir(path, 0750) - - filePath := fmt.Sprintf("%s/index.adoc", path) - - f, err := os.Create(filePath) - - if err != nil { - log.Fatal(err) - } - - defer f.Close() - - _, err = fmt.Fprintf(f, "= %s", title) - - if err != nil { - log.Fatal(err) - } - - file.Edit(filePath) - - onSave(zid) -} - -func EditZet(id int) { - zetPath := path.Join(config.GetZetDir(), strconv.Itoa(id), "index.adoc") - - file.Edit(zetPath) - - onSave(id) -} - -func GetAllZets() []int { - zets, err := git.ExecGitCommand("ls-files") - - if err != nil { - log.Println(err) - } - - re := regexp.MustCompile(`[0-9]+`) - matches := re.FindAllString(zets, -1) - - sort.Strings(matches) - - ids := make(map[int]struct{}) - for _, id := range matches { - num, err := strconv.Atoi(id) - - if err == nil { - ids[num] = struct{}{} - } - } - - var sorted []int - for num := range ids { - sorted = append(sorted, num) - } - - sort.Ints(sorted) - - return sorted -} - -func GetLatestZet() int { - z := GetAllZets() - - return z[len(z)-1] -} - -func SearchZets(query string) []int { - zets, err := git.ExecGitCommand("grep", "-i", "--name-only", "--word-regex", query) - - if err != nil { - fmt.Printf("No matches found for %s.\n", query) - - os.Exit(1) - } - - re := regexp.MustCompile(`[0-9]+`) - matches := re.FindAllString(zets, -1) - - sort.Strings(matches) - - ids := make(map[int]struct{}) - for _, id := range matches { - num, err := strconv.Atoi(id) - - if err == nil { - ids[num] = struct{}{} - } - } - - var sorted []int - for num := range ids { - sorted = append(sorted, num) - } - - sort.Ints(sorted) - - return sorted -} - -func ParseZetList(ids []int) []string { - var lines []string - - green := "\033[32m" - reset := "\033[0m" - - for _, num := range ids { - line := fmt.Sprintf("%s%s%s %s", green, strconv.Itoa(num), reset, getTitle(num)) - - lines = append(lines, line) - } - - return lines -} - -func ViewZet(id int) string { - zetPath := path.Join(config.GetZetDir(), strconv.Itoa(id), "index.adoc") - - return file.View(zetPath) -} - func getTitle(id int) string { return getTitleFromFile(path.Join(strconv.Itoa(id), "index.adoc")) } @@ -176,24 +44,6 @@ func getTitleFromFile(filePath string) string { return "" } -func newZid() int { - cmd := exec.Command("ls", config.GetZetDir()) - output, _ := cmd.CombinedOutput() - - zets := strings.Split(string(output), "\n") - - var zetCount int - - for _, zet := range zets { - num, err := strconv.Atoi(zet) - if err == nil && num > zetCount { - zetCount = num - } - } - - return zetCount + 1 -} - func onSave(id int) { title := getTitle(id)