Move FSSpace, FSPath, and FSMisc constants to core package to avoid import cycles

This commit is contained in:
2024-08-13 20:28:33 -04:00
parent be46b0d6b2
commit a1c9827c04
9 changed files with 34 additions and 35 deletions
-6
View File
@@ -2,10 +2,4 @@ package sync
import "github.com/rwinkhart/libmutton/core"
const (
FSSpace = "\u259d" // ▝ space/list separator
FSPath = "\u259e" // ▞ path separator
FSMisc = "\u259f" // ▟ misc. field separator (if \u259d is already used)
)
var rootLength = len(core.EntryRoot) // length of core.EntryRoot string
+5 -5
View File
@@ -148,7 +148,7 @@ func getRemoteDataFromClient(sshClient *ssh.Client, manualSync bool) (map[string
output := GetSSHOutput(sshClient, "libmuttonserver fetch", (*deviceIDList)[0].Name())
// split output into slice based on occurrences of FSSpace
outputSlice := strings.Split(output, FSSpace)
outputSlice := strings.Split(output, core.FSSpace)
// parse output/re-form lists
if len(outputSlice) != 5 { // ensure information from server is complete
@@ -160,10 +160,10 @@ func getRemoteDataFromClient(sshClient *ssh.Client, manualSync bool) (map[string
fmt.Println(core.AnsiError+"Sync failed - Unable to parse server time:", err.Error()+core.AnsiReset)
os.Exit(101)
}
entries := strings.Split(outputSlice[1], FSMisc)[1:]
modsStrings := strings.Split(outputSlice[2], FSMisc)[1:]
folders := strings.Split(outputSlice[3], FSMisc)[1:]
deletions := strings.Split(outputSlice[4], FSMisc)[1:]
entries := strings.Split(outputSlice[1], core.FSMisc)[1:]
modsStrings := strings.Split(outputSlice[2], core.FSMisc)[1:]
folders := strings.Split(outputSlice[3], core.FSMisc)[1:]
deletions := strings.Split(outputSlice[4], core.FSMisc)[1:]
// convert the mod times to int64
var mods []int64
+1 -1
View File
@@ -36,7 +36,7 @@ func ShearLocal(targetLocationIncomplete, clientDeviceID string) string {
if onServer {
for _, device := range *deviceIDList {
if device.Name() != clientDeviceID {
fileToClose, err := os.OpenFile(core.ConfigDir+core.PathSeparator+"deletions"+core.PathSeparator+device.Name()+FSSpace+strings.ReplaceAll(targetLocationIncomplete, "/", FSPath), os.O_CREATE|os.O_WRONLY, 0600)
fileToClose, err := os.OpenFile(core.ConfigDir+core.PathSeparator+"deletions"+core.PathSeparator+device.Name()+core.FSSpace+strings.ReplaceAll(targetLocationIncomplete, "/", core.FSPath), os.O_CREATE|os.O_WRONLY, 0600)
if err != nil {
// do not print error as there is currently no way of seeing server-side errors
// failure to add the target to the deletions list will exit the program and result in a client re-uploading the target (non-critical)
+1 -1
View File
@@ -33,7 +33,7 @@ func DeviceIDGen(oldDeviceID string) (string, string) {
// also removes the old device ID file (remotely)
// manualSync is true so the user is alerted if device ID registration fails
sshClient, _, _ := GetSSHClient(true)
sshEntryRootSSHIsWindows := strings.Split(GetSSHOutput(sshClient, "libmuttonserver register", newDeviceID+"\n"+oldDeviceID), FSSpace)
sshEntryRootSSHIsWindows := strings.Split(GetSSHOutput(sshClient, "libmuttonserver register", newDeviceID+"\n"+oldDeviceID), core.FSSpace)
err = sshClient.Close()
if err != nil {
fmt.Println(core.AnsiError+"Init failed - Unable to close SSH client:", err.Error()+core.AnsiReset)
+4 -4
View File
@@ -18,7 +18,7 @@ func ShearRemoteFromClient(targetLocationIncomplete string) {
sshClient, _, _ := GetSSHClient(false)
// call the server to remotely shear the target and add it to the deletions list
GetSSHOutput(sshClient, "libmuttonserver shear", deviceID+"\n"+strings.ReplaceAll(targetLocationIncomplete, core.PathSeparator, FSPath))
GetSSHOutput(sshClient, "libmuttonserver shear", deviceID+"\n"+strings.ReplaceAll(targetLocationIncomplete, core.PathSeparator, core.FSPath))
// close the SSH client
err := sshClient.Close()
@@ -44,8 +44,8 @@ func RenameRemoteFromClient(oldLocationIncomplete, newLocationIncomplete string)
// call the server to move the target on the remote system and add the old target to the deletions list
GetSSHOutput(sshClient, "libmuttonserver rename",
(*deviceIDList)[0].Name()+"\n"+
strings.ReplaceAll(oldLocationIncomplete, core.PathSeparator, FSPath)+"\n"+
strings.ReplaceAll(newLocationIncomplete, core.PathSeparator, FSPath))
strings.ReplaceAll(oldLocationIncomplete, core.PathSeparator, core.FSPath)+"\n"+
strings.ReplaceAll(newLocationIncomplete, core.PathSeparator, core.FSPath))
// close the SSH client
err := sshClient.Close()
@@ -69,7 +69,7 @@ func AddFolderRemoteFromClient(targetLocationIncomplete string) {
sshClient, _, _ := GetSSHClient(false)
// call the server to create the folder remotely
GetSSHOutput(sshClient, "libmuttonserver addfolder", strings.ReplaceAll(targetLocationIncomplete, core.PathSeparator, FSPath)) // call the server to create the folder remotely
GetSSHOutput(sshClient, "libmuttonserver addfolder", strings.ReplaceAll(targetLocationIncomplete, core.PathSeparator, core.FSPath)) // call the server to create the folder remotely
// close the SSH client
err := sshClient.Close()
+9 -9
View File
@@ -26,31 +26,31 @@ func GetRemoteDataFromServer(clientDeviceID string) {
// print the lists to stdout
// entry list
fmt.Print(FSSpace)
fmt.Print(core.FSSpace)
for _, entry := range entryList {
fmt.Print(FSMisc + entry)
fmt.Print(core.FSMisc + entry)
}
// modification time list
fmt.Print(FSSpace)
fmt.Print(core.FSSpace)
for _, mod := range modList {
fmt.Print(FSMisc)
fmt.Print(core.FSMisc)
fmt.Print(mod)
}
// directory/folder list
fmt.Print(FSSpace)
fmt.Print(core.FSSpace)
for _, dir := range dirList {
fmt.Print(FSMisc + dir)
fmt.Print(core.FSMisc + dir)
}
// deletions list
fmt.Print(FSSpace)
fmt.Print(core.FSSpace)
for _, deletion := range deletionsList {
// print deletion if it is relevant to the current client device
affectedIDTargetLocationIncomplete := strings.Split(deletion.Name(), FSSpace)
affectedIDTargetLocationIncomplete := strings.Split(deletion.Name(), core.FSSpace)
if affectedIDTargetLocationIncomplete[0] == clientDeviceID {
fmt.Print(FSMisc + strings.ReplaceAll(affectedIDTargetLocationIncomplete[1], FSPath, "/"))
fmt.Print(core.FSMisc + strings.ReplaceAll(affectedIDTargetLocationIncomplete[1], core.FSPath, "/"))
// assume successful client deletion and remove deletions file (if assumption is somehow false, worst case scenario is that the client will re-upload the deleted entry)
_ = os.Remove(core.ConfigDir + core.PathSeparator + "deletions" + core.PathSeparator + deletion.Name()) // error ignored; function not run from a user-facing argument and thus the error would not be visible