Create a new zettel with a given title
Signed-off-by: Oliver Davies <oliver@oliverdavies.uk>
This commit is contained in:
parent
59c4d132b2
commit
b2f7f7af7f
3 changed files with 78 additions and 0 deletions
32
cmd/create.go
Normal file
32
cmd/create.go
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
|
"code.oliverdavies.uk/opdavies/cmd-zet/internal/lib"
|
||||||
|
)
|
||||||
|
|
||||||
|
var createCmd = &cobra.Command{
|
||||||
|
Use: "create",
|
||||||
|
Aliases: []string{"e"},
|
||||||
|
Short: "A brief description of your command",
|
||||||
|
Long: `A longer description that spans multiple lines and likely contains examples
|
||||||
|
and usage of using your command. For example:
|
||||||
|
|
||||||
|
Cobra is a CLI library for Go that empowers applications.
|
||||||
|
This application is a tool to generate the needed files
|
||||||
|
to quickly create a Cobra application.`,
|
||||||
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
title := ""
|
||||||
|
if len(args) > 0 {
|
||||||
|
title = strings.Join(args, " ")
|
||||||
|
}
|
||||||
|
|
||||||
|
lib.CreateZet(title)
|
||||||
|
|
||||||
|
// TODO: Edit the file
|
||||||
|
// TODO: Commit the changes
|
||||||
|
},
|
||||||
|
}
|
|
@ -31,6 +31,7 @@ func Execute() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
rootCmd.AddCommand(createCmd)
|
||||||
rootCmd.AddCommand(editCmd)
|
rootCmd.AddCommand(editCmd)
|
||||||
rootCmd.AddCommand(findCmd)
|
rootCmd.AddCommand(findCmd)
|
||||||
rootCmd.AddCommand(titlesCmd)
|
rootCmd.AddCommand(titlesCmd)
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"os/exec"
|
||||||
"path"
|
"path"
|
||||||
"regexp"
|
"regexp"
|
||||||
"sort"
|
"sort"
|
||||||
|
@ -12,6 +13,32 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func CreateZet(title string) {
|
||||||
|
zid := newZid()
|
||||||
|
|
||||||
|
fmt.Println(title, zid)
|
||||||
|
|
||||||
|
path := path.Join(GetZetDir(), strconv.Itoa(zid))
|
||||||
|
|
||||||
|
os.Mkdir(path, 0750)
|
||||||
|
|
||||||
|
filePath := fmt.Sprintf("%s/index.adoc", path)
|
||||||
|
|
||||||
|
file, err := os.Create(filePath)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
_, err = fmt.Fprintf(file, "= %s", title)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func EditZet(id int) {
|
func EditZet(id int) {
|
||||||
zetPath := path.Join(GetZetDir(), strconv.Itoa(id), "index.adoc")
|
zetPath := path.Join(GetZetDir(), strconv.Itoa(id), "index.adoc")
|
||||||
|
|
||||||
|
@ -139,6 +166,24 @@ func getTitleFromFile(filePath string) string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newZid() int {
|
||||||
|
cmd := exec.Command("ls", 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) {
|
func onSave(id int) {
|
||||||
title := getTitle(id)
|
title := getTitle(id)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue