mirror of
https://github.com/rwinkhart/MUTN.git
synced 2026-09-05 16:47:20 -04:00
Revert use of ":" for options on Windows, use "-" but replace "-p" with "-pw" to avoid ambiguity, interpret no options as "password"
This commit is contained in:
@@ -36,14 +36,11 @@ function mutn {
|
|||||||
[ArgumentCompletions('add', 'gen', 'edit', 'copy', 'shear')]
|
[ArgumentCompletions('add', 'gen', 'edit', 'copy', 'shear')]
|
||||||
[string]$argument,
|
[string]$argument,
|
||||||
|
|
||||||
[Parameter(Position = 2)]
|
[Parameter(Position = 2, ValueFromRemainingArguments=$true)]
|
||||||
[ArgumentCompleter({ MUTNOptionCompleter @args })]
|
[ArgumentCompleter({ MUTNOptionCompleter @args })]
|
||||||
[string]$option,
|
[string]$option
|
||||||
|
|
||||||
[Parameter(Position = 3)]
|
|
||||||
[string]$potentialShowFlag
|
|
||||||
)
|
)
|
||||||
|
|
||||||
#Invoke-Expression -Command ('/usr/local/bin/mutn ' + ($entry -replace ' ', '` '), $argument, ($option -replace ':', '-'), ($potentialShowFlag -replace ':', '-')).Trim() # UNIX testing
|
#Invoke-Expression -Command ('/usr/local/bin/mutn ' + ($entry -replace ' ', '` '), $argument, $option).Trim() # UNIX testing
|
||||||
Invoke-Expression -Command ('./mutn.exe ' + ($entry -replace ' ', '` '), $argument, $option, $potentialShowFlag).Trim()
|
Invoke-Expression -Command ('./mutn.exe ' + ($entry -replace ' ', '` '), $argument, $option).Trim()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,24 +29,36 @@ func main() {
|
|||||||
if argsCount == 2 {
|
if argsCount == 2 {
|
||||||
cli.EntryReaderShortcut(targetLocation, true, false)
|
cli.EntryReaderShortcut(targetLocation, true, false)
|
||||||
// perform other operations on the entry (if other arguments are supplied)
|
// perform other operations on the entry (if other arguments are supplied)
|
||||||
} else if argsCount == 3 {
|
} else if argsCount == 3 || (argsCount == 4 && (args[3] == "show" || args[3] == "-s")) {
|
||||||
|
if argsCount == 3 { // default to "password" if no field is specified (for copy, edit, and add)
|
||||||
switch args[2] {
|
switch args[2] {
|
||||||
case "show", cli.OptionFlag + "s":
|
case "show", "-s":
|
||||||
cli.EntryReaderShortcut(targetLocation, false, false)
|
cli.EntryReaderShortcut(targetLocation, false, false)
|
||||||
case "shear":
|
case "shear":
|
||||||
offline.Shear(targetLocation)
|
offline.Shear(targetLocation)
|
||||||
case "gen":
|
case "gen":
|
||||||
cli.AddEntry(targetLocation, true, 1)
|
cli.AddEntry(targetLocation, true, 1)
|
||||||
case "copy":
|
case "copy":
|
||||||
cli.HelpCopy()
|
offline.CopyArgument(targetLocation, 0, args[0])
|
||||||
case "edit":
|
case "edit":
|
||||||
cli.HelpEdit()
|
cli.EditEntry(targetLocation, true, 0)
|
||||||
case "add":
|
case "add":
|
||||||
cli.HelpAdd()
|
cli.AddEntry(targetLocation, true, 0)
|
||||||
default:
|
default:
|
||||||
cli.HelpMain()
|
cli.HelpMain()
|
||||||
}
|
}
|
||||||
|
} else { // handle "show" or "-s" argument for gen, edit, and add
|
||||||
|
switch args[2] {
|
||||||
|
case "gen":
|
||||||
|
cli.AddEntry(targetLocation, false, 1)
|
||||||
|
case "edit":
|
||||||
|
cli.EditEntry(targetLocation, false, 0)
|
||||||
|
case "add":
|
||||||
|
cli.AddEntry(targetLocation, false, 0)
|
||||||
|
default:
|
||||||
|
cli.HelpMain()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else if argsCount >= 4 {
|
} else if argsCount >= 4 {
|
||||||
|
|
||||||
@@ -56,13 +68,13 @@ func main() {
|
|||||||
case "copy":
|
case "copy":
|
||||||
var field int // indicates which (numbered) field to copy
|
var field int // indicates which (numbered) field to copy
|
||||||
switch args[3] {
|
switch args[3] {
|
||||||
case "password", cli.OptionFlag + "p":
|
case "password", "-pw":
|
||||||
field = 0
|
field = 0
|
||||||
case "username", cli.OptionFlag + "u":
|
case "username", "-u":
|
||||||
field = 1
|
field = 1
|
||||||
case "url", cli.OptionFlag + "l":
|
case "url", "-l":
|
||||||
field = 2
|
field = 2
|
||||||
case "note", cli.OptionFlag + "n":
|
case "note", "-n":
|
||||||
field = 3
|
field = 3
|
||||||
default:
|
default:
|
||||||
cli.HelpCopy()
|
cli.HelpCopy()
|
||||||
@@ -71,24 +83,24 @@ func main() {
|
|||||||
case "edit":
|
case "edit":
|
||||||
var field int // indicates which field to edit
|
var field int // indicates which field to edit
|
||||||
switch args[3] {
|
switch args[3] {
|
||||||
case "password", cli.OptionFlag + "p":
|
case "password", "-pw":
|
||||||
field = 0
|
field = 0
|
||||||
case "username", cli.OptionFlag + "u":
|
case "username", "-u":
|
||||||
field = 1
|
field = 1
|
||||||
case "url", cli.OptionFlag + "l":
|
case "url", "-l":
|
||||||
field = 2
|
field = 2
|
||||||
case "note", cli.OptionFlag + "n":
|
case "note", "-n":
|
||||||
if argsCount == 4 {
|
if argsCount == 4 {
|
||||||
cli.EditEntryNote(targetLocation, true)
|
cli.EditEntryNote(targetLocation, true)
|
||||||
} else {
|
} else {
|
||||||
switch args[4] {
|
switch args[4] {
|
||||||
case "show", cli.OptionFlag + "s":
|
case "show", "-s":
|
||||||
cli.EditEntryNote(targetLocation, false)
|
cli.EditEntryNote(targetLocation, false)
|
||||||
default:
|
default:
|
||||||
cli.EditEntryNote(targetLocation, true)
|
cli.EditEntryNote(targetLocation, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "rename", cli.OptionFlag + "r":
|
case "rename", "-r":
|
||||||
cli.RenameCli(targetLocation)
|
cli.RenameCli(targetLocation)
|
||||||
default:
|
default:
|
||||||
cli.HelpEdit()
|
cli.HelpEdit()
|
||||||
@@ -97,7 +109,7 @@ func main() {
|
|||||||
cli.EditEntry(targetLocation, true, field)
|
cli.EditEntry(targetLocation, true, field)
|
||||||
} else {
|
} else {
|
||||||
switch args[4] {
|
switch args[4] {
|
||||||
case "show", cli.OptionFlag + "s":
|
case "show", "-s":
|
||||||
cli.EditEntry(targetLocation, false, field)
|
cli.EditEntry(targetLocation, false, field)
|
||||||
default:
|
default:
|
||||||
cli.EditEntry(targetLocation, true, field)
|
cli.EditEntry(targetLocation, true, field)
|
||||||
@@ -106,16 +118,14 @@ func main() {
|
|||||||
case "gen":
|
case "gen":
|
||||||
if argsCount == 4 {
|
if argsCount == 4 {
|
||||||
switch args[3] {
|
switch args[3] {
|
||||||
case "show", cli.OptionFlag + "s":
|
case "update", "-u":
|
||||||
cli.AddEntry(targetLocation, false, 1)
|
|
||||||
case "update", cli.OptionFlag + "u":
|
|
||||||
cli.GenUpdate(targetLocation, true)
|
cli.GenUpdate(targetLocation, true)
|
||||||
default:
|
default:
|
||||||
cli.HelpGen()
|
cli.HelpGen()
|
||||||
}
|
}
|
||||||
} else if args[3] == "update" || args[3] == cli.OptionFlag+"u" {
|
} else if args[3] == "update" || args[3] == "-u" {
|
||||||
switch args[4] {
|
switch args[4] {
|
||||||
case "show", cli.OptionFlag + "s":
|
case "show", "-s":
|
||||||
cli.GenUpdate(targetLocation, false)
|
cli.GenUpdate(targetLocation, false)
|
||||||
default:
|
default:
|
||||||
cli.GenUpdate(targetLocation, true)
|
cli.GenUpdate(targetLocation, true)
|
||||||
@@ -124,20 +134,20 @@ func main() {
|
|||||||
cli.HelpGen()
|
cli.HelpGen()
|
||||||
case "add":
|
case "add":
|
||||||
switch args[3] {
|
switch args[3] {
|
||||||
case "password", cli.OptionFlag + "p":
|
case "password", "-pw":
|
||||||
if argsCount == 4 {
|
if argsCount == 4 {
|
||||||
cli.AddEntry(targetLocation, true, 0)
|
cli.AddEntry(targetLocation, true, 0)
|
||||||
} else {
|
} else {
|
||||||
switch args[4] {
|
switch args[4] {
|
||||||
case "show", cli.OptionFlag + "s":
|
case "show", "-s":
|
||||||
cli.AddEntry(targetLocation, false, 0)
|
cli.AddEntry(targetLocation, false, 0)
|
||||||
default:
|
default:
|
||||||
cli.AddEntry(targetLocation, true, 0)
|
cli.AddEntry(targetLocation, true, 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "note", cli.OptionFlag + "n":
|
case "note", "-n":
|
||||||
cli.AddEntry(targetLocation, true, 2)
|
cli.AddEntry(targetLocation, true, 2)
|
||||||
case "folder", cli.OptionFlag + "f":
|
case "folder", "-f":
|
||||||
offline.AddFolder(targetLocation)
|
offline.AddFolder(targetLocation)
|
||||||
default:
|
default:
|
||||||
cli.HelpAdd()
|
cli.HelpAdd()
|
||||||
@@ -173,7 +183,7 @@ func main() {
|
|||||||
cli.HelpCopy()
|
cli.HelpCopy()
|
||||||
case "gen":
|
case "gen":
|
||||||
cli.HelpGen()
|
cli.HelpGen()
|
||||||
case "version", cli.OptionFlag + "v":
|
case "version", "-v":
|
||||||
cli.Version()
|
cli.Version()
|
||||||
default:
|
default:
|
||||||
cli.HelpMain()
|
cli.HelpMain()
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func EntryReader(decryptedEntry []string, hidePassword bool, sync bool) {
|
|||||||
if !hidePassword {
|
if !hidePassword {
|
||||||
fmt.Print(ansiDirectoryHeader + "Password:" + offline.AnsiReset + "\n" + ansiShownPassword + decryptedEntry[0] + offline.AnsiReset + "\n\n")
|
fmt.Print(ansiDirectoryHeader + "Password:" + offline.AnsiReset + "\n" + ansiShownPassword + decryptedEntry[0] + offline.AnsiReset + "\n\n")
|
||||||
} else {
|
} else {
|
||||||
fmt.Print(ansiDirectoryHeader + "Password:" + offline.AnsiReset + "\n" + ansiEmptyDirectoryWarning + "End command in \"show\" or \"" + OptionFlag + "s\" to view" + offline.AnsiReset + "\n\n")
|
fmt.Print(ansiDirectoryHeader + "Password:" + offline.AnsiReset + "\n" + ansiEmptyDirectoryWarning + "End command in \"show\" or \"-s\" to view" + offline.AnsiReset + "\n\n")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
|
|||||||
+30
-29
@@ -20,8 +20,8 @@ This program comes with absolutely no warranty; type "mutn version" for details.
|
|||||||
` + ansiBold + "Usage:" + offline.AnsiReset + ` mutn [/<entry name> [argument] [option]] | [argument]
|
` + ansiBold + "Usage:" + offline.AnsiReset + ` mutn [/<entry name> [argument] [option]] | [argument]
|
||||||
|
|
||||||
` + ansiBold + "Arguments:" + offline.AnsiReset + `
|
` + ansiBold + "Arguments:" + offline.AnsiReset + `
|
||||||
help|` + OptionFlag + `h Bring up this menu
|
help|-h Bring up this menu
|
||||||
version|` + OptionFlag + `v Display version and license information
|
version|-v Display version and license information
|
||||||
init Set up MUTN (generates libmutton.ini)
|
init Set up MUTN (generates libmutton.ini)
|
||||||
tweak Change configuration options
|
tweak Change configuration options
|
||||||
add Add an entry
|
add Add an entry
|
||||||
@@ -33,26 +33,27 @@ This program comes with absolutely no warranty; type "mutn version" for details.
|
|||||||
|
|
||||||
` + ansiBold + "Options:" + offline.AnsiReset + `
|
` + ansiBold + "Options:" + offline.AnsiReset + `
|
||||||
add:
|
add:
|
||||||
password|` + OptionFlag + `p Add a password entry
|
password|-pw Add a password entry
|
||||||
note|` + OptionFlag + `n Add a note entry
|
note|-n Add a note entry
|
||||||
folder|` + OptionFlag + `f Add a new folder for entries
|
folder|-f Add a new folder for entries
|
||||||
edit:
|
edit:
|
||||||
rename|` + OptionFlag + `r Rename or relocate an entry
|
rename|-r Rename or relocate an entry
|
||||||
username|` + OptionFlag + `u Change the username of an entry
|
username|-u Change the username of an entry
|
||||||
password|` + OptionFlag + `p Change the password of an entry
|
password|-pw Change the password of an entry
|
||||||
url|` + OptionFlag + `l Change the url attached to an entry
|
url|-l Change the url attached to an entry
|
||||||
note|` + OptionFlag + `n Change the note attached to an entry
|
note|-n Change the note attached to an entry
|
||||||
copy:
|
copy:
|
||||||
username|` + OptionFlag + `u Copy the username of an entry to your clipboard
|
username|-u Copy the username of an entry to your clipboard
|
||||||
password|` + OptionFlag + `p Copy the password of an entry to your clipboard
|
password|-pw Copy the password of an entry to your clipboard
|
||||||
url|` + OptionFlag + `l Copy the url of an entry to your clipboard
|
url|-l Copy the url of an entry to your clipboard
|
||||||
note|` + OptionFlag + `n Copy the note of an entry to your clipboard
|
note|-n Copy the note of an entry to your clipboard
|
||||||
gen:
|
gen:
|
||||||
update|` + OptionFlag + `u Generate a password for an existing entry
|
update|-u Generate a password for an existing entry
|
||||||
|
|
||||||
` + ansiBold + "Tip 1:" + offline.AnsiReset + ` You can quickly read an entry with "mutn /<entry name>"
|
` + ansiBold + "Tip 1:" + offline.AnsiReset + ` You can quickly read an entry with "mutn /<entry name>"
|
||||||
` + ansiBold + "Tip 2:" + offline.AnsiReset + ` Type "mutn" (no arguments/options) to view a list of saved entries
|
` + ansiBold + "Tip 2:" + offline.AnsiReset + ` Type "mutn" (no arguments/options) to view a list of saved entries
|
||||||
` + ansiBold + "Tip 3:" + offline.AnsiReset + " Provide \"add\", \"edit\", \"copy\", or \"gen\" as the only argument to receive more specific help\n\n")
|
` + ansiBold + "Tip 3:" + offline.AnsiReset + ` Provide "add", "edit", "copy", or "gen" as the only argument to receive more specific help\n\n
|
||||||
|
` + ansiBold + "Tip 4:" + offline.AnsiReset + " Using \"add\", \"edit\", or \"copy\" without specifying an option (field) will default to \"password\"\n\n")
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,9 +62,9 @@ func HelpAdd() {
|
|||||||
|
|
||||||
` + ansiBold + "Options:" + offline.AnsiReset + `
|
` + ansiBold + "Options:" + offline.AnsiReset + `
|
||||||
add:
|
add:
|
||||||
password|` + OptionFlag + `p Add a password entry
|
password|-pw Add a password entry
|
||||||
note|` + OptionFlag + `n Add a note entry
|
note|-n Add a note entry
|
||||||
folder|` + OptionFlag + `f Add a new folder for entries` + "\n\n")
|
folder|-f Add a new folder for entries` + "\n\n")
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,11 +73,11 @@ func HelpEdit() {
|
|||||||
|
|
||||||
` + ansiBold + "Options:" + offline.AnsiReset + `
|
` + ansiBold + "Options:" + offline.AnsiReset + `
|
||||||
edit:
|
edit:
|
||||||
rename|` + OptionFlag + `r Rename or relocate an entry
|
rename|-r Rename or relocate an entry
|
||||||
username|` + OptionFlag + `u Change the username of an entry
|
username|-u Change the username of an entry
|
||||||
password|` + OptionFlag + `p Change the password of an entry
|
password|-pw Change the password of an entry
|
||||||
url|` + OptionFlag + `l Change the url attached to an entry
|
url|-l Change the url attached to an entry
|
||||||
note|` + OptionFlag + `n Change the note attached to an entry` + "\n\n")
|
note|-n Change the note attached to an entry` + "\n\n")
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,10 +86,10 @@ func HelpCopy() {
|
|||||||
|
|
||||||
` + ansiBold + "Options:" + offline.AnsiReset + `
|
` + ansiBold + "Options:" + offline.AnsiReset + `
|
||||||
copy:
|
copy:
|
||||||
username|` + OptionFlag + `u Copy the username in an entry to your clipboard
|
username|-u Copy the username in an entry to your clipboard
|
||||||
password|` + OptionFlag + `p Copy the password in an entry to your clipboard
|
password|-pw Copy the password in an entry to your clipboard
|
||||||
url|` + OptionFlag + `l Copy the url in an entry to your clipboard
|
url|-l Copy the url in an entry to your clipboard
|
||||||
note|` + OptionFlag + `n Copy the first note line in an entry to your clipboard` + "\n\n")
|
note|-n Copy the first note line in an entry to your clipboard` + "\n\n")
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,7 +98,7 @@ func HelpGen() {
|
|||||||
|
|
||||||
` + ansiBold + "Options:" + offline.AnsiReset + `
|
` + ansiBold + "Options:" + offline.AnsiReset + `
|
||||||
gen:
|
gen:
|
||||||
update|` + OptionFlag + `u Generate a password for an existing entry
|
update|-u Generate a password for an existing entry
|
||||||
|
|
||||||
` + ansiBold + "Tip:" + offline.AnsiReset + " If no options are provided, a new password entry is generated\n\n")
|
` + ansiBold + "Tip:" + offline.AnsiReset + " If no options are provided, a new password entry is generated\n\n")
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
//go:build !windows
|
|
||||||
|
|
||||||
package cli
|
|
||||||
|
|
||||||
const OptionFlag = "-"
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
//go:build windows
|
|
||||||
|
|
||||||
package cli
|
|
||||||
|
|
||||||
const OptionFlag = ":"
|
|
||||||
Reference in New Issue
Block a user