diff --git a/src/cli/1globals.go b/src/cli/1globals.go index 04918fa..7a7ab43 100644 --- a/src/cli/1globals.go +++ b/src/cli/1globals.go @@ -1,14 +1,12 @@ package cli import ( - "github.com/rwinkhart/MUTN/src/backend" termy "golang.org/x/crypto/ssh/terminal" "os" ) // global variables used across multiple files var ( - rootLength = len(backend.EntryRoot) width, _, _ = termy.GetSize(int(os.Stdout.Fd())) ) diff --git a/src/cli/edit.go b/src/cli/edit.go index c5d52a5..0b8d384 100644 --- a/src/cli/edit.go +++ b/src/cli/edit.go @@ -70,7 +70,7 @@ func GenUpdate(targetLocation string, hidePassword bool) { func editNote(baseNote []string) ([]string, bool) { tempFile := backend.CreateTempFile() defer os.Remove(tempFile.Name()) - editor := backend.ReadConfig([]string{"textEditor"})[0] + editor := backend.ReadConfig([]string{"textEditor"}, "")[0] // write baseNote to tempFile (if it is not empty) if len(baseNote) > 0 { diff --git a/src/cli/entryList.go b/src/cli/entryList.go index 170785e..4f5fe84 100644 --- a/src/cli/entryList.go +++ b/src/cli/entryList.go @@ -3,9 +3,8 @@ package cli import ( "fmt" "github.com/rwinkhart/MUTN/src/backend" - "io/fs" + "github.com/rwinkhart/MUTN/src/sync" "os" - "path/filepath" "strings" ) @@ -79,37 +78,7 @@ func printFileEntry(entry string, lastSlash int, charCounter int, colorAlternato // EntryListGen generates and displays full libmutton entry list func EntryListGen() { - // define file/directory containing slices so that they may be accessed by the anonymous WalkDir function - var fileList []string - var dirList []string - - // walk entry directory - _ = filepath.WalkDir(backend.EntryRoot, - func(fullPath string, entry fs.DirEntry, err error) error { - - // check for errors encountered while walking directory - if err != nil { - if os.IsNotExist(err) { - fmt.Println(backend.AnsiError + "\nThe entry directory does not exist - run \"mutn init\" to create it" + backend.AnsiReset) - } else { - // otherwise, print the source of the error - fmt.Println(backend.AnsiError + "\nAn unexpected error occurred while generating the entry list: " + err.Error() + backend.AnsiReset) - } - os.Exit(1) - } - - // trim root path from each path before storing - trimmedPath := fullPath[rootLength:] - - // create separate slices for entries and directories - if !entry.IsDir() { - fileList = append(fileList, trimmedPath) - } else { - dirList = append(dirList, trimmedPath) - } - - return nil - }) + fileList, dirList := sync.WalkEntryDir() // print header bar w/total entry count fmt.Print("\n"+ansiBlackOnWhite, len(fileList), " libmutton entries:"+backend.AnsiReset) diff --git a/src/cli/init.go b/src/cli/init.go index ebd7752..0c3852d 100644 --- a/src/cli/init.go +++ b/src/cli/init.go @@ -3,6 +3,7 @@ package cli import ( "fmt" "github.com/rwinkhart/MUTN/src/backend" + "math/rand" "os" ) @@ -26,5 +27,25 @@ func TempInitCli() { // textEditor textEditor := input("Text editor (leave blank for $EDITOR, falls back to \"" + backend.FallbackEditor + "\"):") - backend.TempInit(map[string]string{"textEditor": textEditor, "gpgID": gpgID}) + // SSH info + configSSH := inputBinary("Configure SSH settings (for synchronization)?") + if configSSH { + // client device ID + deviceIDPrefix, _ := os.Hostname() + deviceIDSuffix := backend.StringGen(rand.Intn(48)+48, true, 0.2) + deviceID := deviceIDPrefix + "-" + deviceIDSuffix // TODO do not save in config file, encrypt in config directory + + // necessary SSH info + sshUser := input("Remote SSH username:") + sshIP := input("Remote SSH IP address:") + sshPort := input("Remote SSH port:") + sshIdentity := input("SSH private identity file path:") // TODO implement generator and selector + + // write config file + backend.TempInit(map[string]string{"textEditor": textEditor, "gpgID": gpgID, "deviceID": deviceID, "sshUser": sshUser, "sshIP": sshIP, "sshPort": sshPort, "sshIdentity": sshIdentity}) + } else { + // write config file + backend.TempInit(map[string]string{"textEditor": textEditor, "gpgID": gpgID}) + } + } diff --git a/src/cli/printInfo.go b/src/cli/printInfo.go index 02ededa..1d1b2f6 100644 --- a/src/cli/printInfo.go +++ b/src/cli/printInfo.go @@ -142,8 +142,8 @@ ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED " ◎-◎ // \\\\ " + ansiVersionMeat + "♥♥♥♥♥♥♥♥♥" + backend.AnsiReset + " // \\\\ /|\\\n" + ansiVersionOutline + "<><><><><><><><><><><><><><>-<><><><><><><><><><><><><><>\n" + "\\" + ansiBlackOnWhite + " " + backend.AnsiReset + ansiVersionOutline + "/\n" + - "\\" + ansiBlackOnWhite + " MUTN Version 0.1.0 " + backend.AnsiReset + ansiVersionOutline + "/\n" + - "\\" + ansiBlackOnWhite + " The Butchered Update " + backend.AnsiReset + ansiVersionOutline + "/\n" + + "\\" + ansiBlackOnWhite + " MUTN Version 0.2.X " + backend.AnsiReset + ansiVersionOutline + "/\n" + + "\\" + ansiBlackOnWhite + " The Placeholder Update " + backend.AnsiReset + ansiVersionOutline + "/\n" + "\\" + ansiBlackOnWhite + " " + backend.AnsiReset + ansiVersionOutline + "/\n" + "\\" + ansiBlackOnWhite + " Copyright (c) 2024 Randall Winkhart " + backend.AnsiReset + ansiVersionOutline + "/\n" + "\\" + ansiBlackOnWhite + " " + backend.AnsiReset + ansiVersionOutline + "/\n" +