mirror of
https://github.com/rwinkhart/MUTN.git
synced 2026-09-06 09:07:14 -04:00
Implement entry/directory renaming/moving
This commit is contained in:
@@ -30,7 +30,7 @@ _mutn_completions() {
|
|||||||
while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "password username url note" -- "$cur" )
|
while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "password username url note" -- "$cur" )
|
||||||
;;
|
;;
|
||||||
edit )
|
edit )
|
||||||
while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "password username url note relocate" -- "$cur" )
|
while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "password username url note rename" -- "$cur" )
|
||||||
;;
|
;;
|
||||||
gen )
|
gen )
|
||||||
while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "update" -- "$cur" )
|
while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "update" -- "$cur" )
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ case ${words[-2]} in
|
|||||||
compadd {password,username,url,note}
|
compadd {password,username,url,note}
|
||||||
;;
|
;;
|
||||||
edit )
|
edit )
|
||||||
compadd {password,username,url,note,relocate}
|
compadd {password,username,url,note,rename}
|
||||||
;;
|
;;
|
||||||
gen )
|
gen )
|
||||||
compadd update
|
compadd update
|
||||||
|
|||||||
@@ -79,9 +79,10 @@ func main() {
|
|||||||
field = 'l'
|
field = 'l'
|
||||||
case "note", "-n":
|
case "note", "-n":
|
||||||
field = 'n'
|
field = 'n'
|
||||||
case "rename", "-r": // TODO prompt for newLocation, offline.Rename(targetLocation, newLocation), exit after run
|
case "rename", "-r":
|
||||||
|
cli.RenameCli(targetLocation)
|
||||||
default:
|
default:
|
||||||
cli.HelpCopy()
|
cli.HelpEdit()
|
||||||
}
|
}
|
||||||
// TODO offline.EditEntry(targetLocation, field), exit after run
|
// TODO offline.EditEntry(targetLocation, field), exit after run
|
||||||
case "add":
|
case "add":
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package cli
|
||||||
|
|
||||||
|
import "github.com/rwinkhart/MUTN/src/offline"
|
||||||
|
|
||||||
|
// RenameCli renames an entry at oldLocation to a new location (user input)
|
||||||
|
func RenameCli(oldLocation string) {
|
||||||
|
// ensure targetLocation exists
|
||||||
|
offline.TargetIsFile(oldLocation, true, 0)
|
||||||
|
|
||||||
|
// prompt user for new location and rename
|
||||||
|
newLocation := offline.EntryRoot + offline.PathSeparator + input("New location:")
|
||||||
|
offline.Rename(oldLocation, newLocation)
|
||||||
|
|
||||||
|
// exit is done from offline.Rename
|
||||||
|
}
|
||||||
@@ -37,7 +37,7 @@ This program comes with absolutely no warranty; type "mutn version" for details.
|
|||||||
note/-n Add a note entry
|
note/-n Add a note entry
|
||||||
folder/-f Add a new folder for entries
|
folder/-f Add a new folder for entries
|
||||||
edit:
|
edit:
|
||||||
rename/relocate/-r Rename or relocate an entry
|
rename/-r Rename or relocate an entry
|
||||||
username/-u Change the username of an entry
|
username/-u Change the username of an entry
|
||||||
password/-p Change the password of an entry
|
password/-p Change the password of an entry
|
||||||
url/-l Change the url attached to an entry
|
url/-l Change the url attached to an entry
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package offline
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Rename renames oldLocation to newLocation
|
||||||
|
func Rename(oldLocation string, newLocation string) {
|
||||||
|
// ensure newLocation does not exist
|
||||||
|
_, isAccessible := TargetIsFile(newLocation, false, 0)
|
||||||
|
if isAccessible {
|
||||||
|
fmt.Println(AnsiError + "\"" + newLocation + "\" already exists" + AnsiReset)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// rename oldLocation to newLocation
|
||||||
|
err := os.Rename(oldLocation, newLocation)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(AnsiError + "Failed to rename - does the target containing directory exists?" + AnsiReset)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO If in online mode, check if oldLocation is a directory and rename it on the server
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user