From 182b50cd27a06d238a9cfbf39382dbfba5f3d495 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Fri, 31 May 2024 01:23:50 -0400 Subject: [PATCH] Fix Windows sync (WalkEntryDir now returns only UNIX-style separators); fix setting remote mod time on remote files when downloading; fix server binary compilation; fix init failing silently during SSH configuration --- libmuttonserver.go | 2 +- src/cli/entryList.go | 14 +++++++------- src/cli/entryListUNIX.go | 13 ------------- src/cli/entryListWIN.go | 13 ------------- src/cli/init.go | 2 +- 5 files changed, 9 insertions(+), 35 deletions(-) delete mode 100644 src/cli/entryListUNIX.go delete mode 100644 src/cli/entryListWIN.go diff --git a/libmuttonserver.go b/libmuttonserver.go index 616335b..719387d 100644 --- a/libmuttonserver.go +++ b/libmuttonserver.go @@ -35,7 +35,7 @@ func main() { fmt.Print(backend.EntryRoot + "\x1d" + strconv.FormatBool(backend.IsWindows)) case "init": // create the necessary directories for libmuttonserver to function - backend.DirInit() + backend.DirInit(false) os.MkdirAll(backend.ConfigDir+backend.PathSeparator+"deletions", 0700) case "version", "-v": versionServer() diff --git a/src/cli/entryList.go b/src/cli/entryList.go index 540223a..cae5c26 100644 --- a/src/cli/entryList.go +++ b/src/cli/entryList.go @@ -21,11 +21,11 @@ func determineIndentation(skippedDirList []bool, dirList []string, currentDirInd var lastPrefixIndex int // tracks the index (in both skippedDirList and dirList) of the last displayed parent directory var trimmedDirectory = dirList[currentDirIndex] - // determine initial indentation multiplier based on PathSeparator occurrences - indent := strings.Count(trimmedDirectory, backend.PathSeparator) - 1 // subtract 1 to avoid indenting root-level directories + // determine initial indentation multiplier based on "/" occurrences + indent := strings.Count(trimmedDirectory, "/") - 1 // subtract 1 to avoid indenting root-level directories for i, skipped := range skippedDirList[:currentDirIndex] { // checks each skipped directory to determine if it is a parent to the current directory - if strings.HasPrefix(trimmedDirectory, dirList[i]+backend.PathSeparator) { // if the current directory is the child of this iteration's directory... + if strings.HasPrefix(trimmedDirectory, dirList[i]+"/") { // if the current directory is the child of this iteration's directory... if skipped { // ...and this iteration's directory was skipped... subtractor++ // increment the subtractor to indicate that the visual indentation should be reduced } else { @@ -106,7 +106,7 @@ func EntryListGen() { // check if next directory is within the current one if dirListLength > i+1 { - if nextDir := dirList[i+1]; directory == nextDir[:strings.LastIndex(nextDir, backend.PathSeparator)] { + if nextDir := dirList[i+1]; directory == nextDir[:strings.LastIndex(nextDir, "/")] { containsSubdirectory = true } else { containsSubdirectory = false @@ -120,14 +120,14 @@ func EntryListGen() { for _, file := range fileList { // print the current file if it belongs in the current directory - otherwise, break the loop and move on to the next directory - if lastSlash := strings.LastIndex(file, backend.PathSeparator) + 1; file[:lastSlash-1] == directory { + if lastSlash := strings.LastIndex(file, "/") + 1; file[:lastSlash-1] == directory { // print directory header if this is the first run of the loop if !containsFiles { containsFiles = true skippedDirList[i] = false // the directory header is being printed, indicate that it is not being skipped indent, vanityDirectory = determineIndentation(skippedDirList, dirList, i) // calculate the final indentation multiplier - printDirectoryHeader(vanityDirectory, indent) + fmt.Printf("\n\n"+strings.Repeat(" ", indent*2)+ansiDirectoryHeader+"%s/"+backend.AnsiReset+"\n", vanityDirectory) } charCounter, colorAlternator = printFileEntry(file, lastSlash, charCounter, indent, colorAlternator) @@ -139,7 +139,7 @@ func EntryListGen() { if dirListLength > 1 { // and directories besides the root-level exist... display directory header and empty directory warning skippedDirList[i] = false // the directory header is being printed, indicate that it is not being skipped indent, vanityDirectory = determineIndentation(skippedDirList, dirList, i) // calculate the final indentation multiplier - printDirectoryHeader(vanityDirectory, indent) + fmt.Printf("\n\n"+strings.Repeat(" ", indent*2)+ansiDirectoryHeader+"%s/"+backend.AnsiReset+"\n", vanityDirectory) fmt.Print(strings.Repeat(" ", indent*2) + ansiEmptyDirectoryWarning + "-empty directory-" + backend.AnsiReset) } else { // warn if the only thing that exists is the root-level directory fmt.Print("\n\nNothing's here! For help creating your first entry, run \"mutn help\".") diff --git a/src/cli/entryListUNIX.go b/src/cli/entryListUNIX.go deleted file mode 100644 index b2a3a3c..0000000 --- a/src/cli/entryListUNIX.go +++ /dev/null @@ -1,13 +0,0 @@ -//go:build !windows - -package cli - -import ( - "fmt" - "github.com/rwinkhart/MUTN/src/backend" - "strings" -) - -func printDirectoryHeader(vanityDirectory string, indent int) { - fmt.Printf("\n\n"+strings.Repeat(" ", indent*2)+ansiDirectoryHeader+"%s/"+backend.AnsiReset+"\n", vanityDirectory) -} diff --git a/src/cli/entryListWIN.go b/src/cli/entryListWIN.go deleted file mode 100644 index b5cf6b7..0000000 --- a/src/cli/entryListWIN.go +++ /dev/null @@ -1,13 +0,0 @@ -//go:build windows - -package cli - -import ( - "fmt" - "github.com/rwinkhart/MUTN/src/backend" - "strings" -) - -func printDirectoryHeader(vanityDirectory string, indent int) { - fmt.Printf("\n\n"+strings.Repeat(" ", indent*2)+ansiDirectoryHeader+"%s/"+backend.AnsiReset+"\n", strings.ReplaceAll(vanityDirectory, backend.PathSeparator, "/")) -} diff --git a/src/cli/init.go b/src/cli/init.go index dd4dd4b..a74ff35 100644 --- a/src/cli/init.go +++ b/src/cli/init.go @@ -40,7 +40,7 @@ func TempInitCli() { sshKeyProtected := inputBinary("Is the identity file password-protected?") // write config file - backend.TempInit(map[string]string{"textEditor": textEditor, "gpgID": gpgID, "sshUser": sshUser, "sshIP": sshIP, "sshPort": sshPort, "sshKey": sshKey, "sshKeyProtected": strconv.FormatBool(sshKeyProtected)}, false) + backend.TempInit(map[string]string{"textEditor": textEditor, "gpgID": gpgID, "sshUser": sshUser, "sshIP": sshIP, "sshPort": sshPort, "sshKey": sshKey, "sshKeyProtected": strconv.FormatBool(sshKeyProtected), "sshEntryRoot": "null", "sshIsWindows": "null"}, false) // generate device ID sshEntryRoot, sshIsWindows := sync.DeviceIDGen()