mirror of
https://github.com/rwinkhart/MUTN.git
synced 2026-09-06 09:07:14 -04:00
Implement synchronized renaming
This commit is contained in:
+8
-1
@@ -40,6 +40,13 @@ func main() {
|
|||||||
// print all information needed for syncing to stdout for interpretation by the client
|
// print all information needed for syncing to stdout for interpretation by the client
|
||||||
// stdin[0] is expected to be the device ID
|
// stdin[0] is expected to be the device ID
|
||||||
sync.GetRemoteDataFromServer(stdin[0])
|
sync.GetRemoteDataFromServer(stdin[0])
|
||||||
|
case "rename":
|
||||||
|
// move an entry to a new location before using fallthrough to add its previous iteration to the deletions directory
|
||||||
|
// stdin[0] is evaluated after fallthrough
|
||||||
|
// stdin[1] is expected to be the OLD incomplete target location with "\x1d" representing path separators - always pass in UNIX format
|
||||||
|
// stdin[2] is expected to be the NEW incomplete target location with "\x1d" representing path separators - always pass in UNIX format
|
||||||
|
sync.Rename(strings.ReplaceAll(stdin[1], "\x1d", "/"), strings.ReplaceAll(stdin[2], "\x1d", "/"), true)
|
||||||
|
fallthrough // fallthrough to add the old entry to the deletions directory
|
||||||
case "shear":
|
case "shear":
|
||||||
// shear an entry from the server and add it to the deletions directory
|
// shear an entry from the server and add it to the deletions directory
|
||||||
// stdin[0] is expected to be the device ID
|
// stdin[0] is expected to be the device ID
|
||||||
@@ -73,7 +80,7 @@ This software exists under the MIT license; you may redistribute it under certai
|
|||||||
This program comes with absolutely no warranty; type "libmuttonserver version" for details.
|
This program comes with absolutely no warranty; type "libmuttonserver version" for details.
|
||||||
|
|
||||||
` + cli.AnsiBold + "Usage:" + backend.AnsiReset + ` libmuttonserver <argument>
|
` + cli.AnsiBold + "Usage:" + backend.AnsiReset + ` libmuttonserver <argument>
|
||||||
|
|
||||||
` + cli.AnsiBold + "Arguments (user):" + backend.AnsiReset + `
|
` + cli.AnsiBold + "Arguments (user):" + backend.AnsiReset + `
|
||||||
help|-h Bring up this menu
|
help|-h Bring up this menu
|
||||||
version|-v Display version and license information
|
version|-v Display version and license information
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ func main() {
|
|||||||
case "note", "-n":
|
case "note", "-n":
|
||||||
field = 4
|
field = 4
|
||||||
case "rename", "-r":
|
case "rename", "-r":
|
||||||
cli.RenameCli(targetLocation)
|
cli.RenameCli(args[1]) // pass the incomplete path as the server and all clients (reading from the deletions directory) will have a different home directory
|
||||||
default:
|
default:
|
||||||
cli.HelpEdit()
|
cli.HelpEdit()
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-8
@@ -4,22 +4,20 @@ import (
|
|||||||
"bufio"
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/rwinkhart/MUTN/src/backend"
|
"github.com/rwinkhart/MUTN/src/backend"
|
||||||
|
"github.com/rwinkhart/MUTN/src/sync"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RenameCli renames an entry at oldLocation to a new location (user input)
|
// RenameCli renames an entry at oldLocation to a new location (user input) on both the client and the server
|
||||||
func RenameCli(oldLocation string) {
|
func RenameCli(oldLocationIncomplete string) {
|
||||||
// ensure targetLocation exists
|
|
||||||
backend.TargetIsFile(oldLocation, true, 0)
|
|
||||||
|
|
||||||
// prompt user for new location and rename
|
// prompt user for new location and rename
|
||||||
newLocation := backend.TargetLocationFormat(input("New location:"))
|
newLocationIncomplete := input("New location:")
|
||||||
backend.Rename(oldLocation, newLocation)
|
sync.Rename(oldLocationIncomplete, newLocationIncomplete, false)
|
||||||
|
|
||||||
// exit is done from backend.Rename
|
// exit is done from sync.Rename
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditEntryField edits a field of an entry at targetLocation (user input)
|
// EditEntryField edits a field of an entry at targetLocation (user input)
|
||||||
|
|||||||
Reference in New Issue
Block a user