mirror of
https://github.com/schollz/croc.git
synced 2024-11-24 16:23:47 +03:00
refactor: accept enter in user prompts
Until now, the process of receiving a file was aborted when an empty entry (Enter) was made. It is common under *nix that pressing Enter without prior input of other characters selects the default answer. This would also make the process more fluid for croc. In most usecases the default choice will be 'Y'/'Yes'. The only exception is the prompt for overwriting existing files. We default to 'N'/'No' in this prompt to prevent accidental overwriting of files.
This commit is contained in:
parent
c72aaf63cb
commit
5e0d6522b0
@ -116,8 +116,9 @@ func Run() (err error) {
|
|||||||
_, basename := filepath.Split(fpath)
|
_, basename := filepath.Split(fpath)
|
||||||
fnames = append(fnames, "'"+basename+"'")
|
fnames = append(fnames, "'"+basename+"'")
|
||||||
}
|
}
|
||||||
yn := utils.GetInput(fmt.Sprintf("Did you mean to send %s? (y/n) ", strings.Join(fnames, ", ")))
|
promptMessage := fmt.Sprintf("Did you mean to send %s? (Y/n) ", strings.Join(fnames, ", "))
|
||||||
if strings.ToLower(yn) == "y" {
|
choice := strings.ToLower(utils.GetInput(promptMessage))
|
||||||
|
if choice == "" || choice == "y" || choice == "yes" {
|
||||||
return send(c)
|
return send(c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -335,7 +336,6 @@ func makeTempFileWithString(s string) (fnames []string, err error) {
|
|||||||
}
|
}
|
||||||
fnames = []string{f.Name()}
|
fnames = []string{f.Name()}
|
||||||
return
|
return
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPaths(fnames []string) (paths []string, haveFolder bool, err error) {
|
func getPaths(fnames []string) (paths []string, haveFolder bool, err error) {
|
||||||
|
@ -812,11 +812,12 @@ func (c *Client) processMessageFileInfo(m message.Message) (done bool, err error
|
|||||||
if !c.Options.NoPrompt || c.Options.Ask || senderInfo.Ask {
|
if !c.Options.NoPrompt || c.Options.Ask || senderInfo.Ask {
|
||||||
if c.Options.Ask || senderInfo.Ask {
|
if c.Options.Ask || senderInfo.Ask {
|
||||||
machID, _ := machineid.ID()
|
machID, _ := machineid.ID()
|
||||||
fmt.Fprintf(os.Stderr, "\rYour machine id is '%s'.\n%s %s (%s) from '%s'? (y/n) ", machID, action, fname, utils.ByteCountDecimal(totalSize), senderInfo.MachineID)
|
fmt.Fprintf(os.Stderr, "\rYour machine id is '%s'.\n%s %s (%s) from '%s'? (Y/n) ", machID, action, fname, utils.ByteCountDecimal(totalSize), senderInfo.MachineID)
|
||||||
} else {
|
} else {
|
||||||
fmt.Fprintf(os.Stderr, "\r%s %s (%s)? (y/n) ", action, fname, utils.ByteCountDecimal(totalSize))
|
fmt.Fprintf(os.Stderr, "\r%s %s (%s)? (Y/n) ", action, fname, utils.ByteCountDecimal(totalSize))
|
||||||
}
|
}
|
||||||
if strings.ToLower(strings.TrimSpace(utils.GetInput(""))) != "y" {
|
choice := strings.ToLower(utils.GetInput(""))
|
||||||
|
if choice != "" && choice != "y" && choice != "yes" {
|
||||||
err = message.Send(c.conn[0], c.Key, message.Message{
|
err = message.Send(c.conn[0], c.Key, message.Message{
|
||||||
Type: "error",
|
Type: "error",
|
||||||
Message: "refusing files",
|
Message: "refusing files",
|
||||||
@ -1011,8 +1012,9 @@ func (c *Client) processMessage(payload []byte) (done bool, err error) {
|
|||||||
c.Step3RecipientRequestFile = true
|
c.Step3RecipientRequestFile = true
|
||||||
|
|
||||||
if c.Options.Ask {
|
if c.Options.Ask {
|
||||||
fmt.Fprintf(os.Stderr, "Send to machine '%s'? (y/n) ", remoteFile.MachineID)
|
fmt.Fprintf(os.Stderr, "Send to machine '%s'? (Y/n) ", remoteFile.MachineID)
|
||||||
if strings.ToLower(strings.TrimSpace(utils.GetInput(""))) != "y" {
|
choice := strings.ToLower(utils.GetInput(""))
|
||||||
|
if choice != "" && choice != "y" && choice != "yes" {
|
||||||
err = message.Send(c.conn[0], c.Key, message.Message{
|
err = message.Send(c.conn[0], c.Key, message.Message{
|
||||||
Type: "error",
|
Type: "error",
|
||||||
Message: "refusing files",
|
Message: "refusing files",
|
||||||
@ -1268,8 +1270,9 @@ func (c *Client) updateIfRecipientHasFileInfo() (err error) {
|
|||||||
log.Debugf("hashes are not equal %x != %x", fileHash, fileInfo.Hash)
|
log.Debugf("hashes are not equal %x != %x", fileHash, fileInfo.Hash)
|
||||||
if errHash == nil && !c.Options.Overwrite && errRecipientFile == nil && !strings.HasPrefix(fileInfo.Name, "croc-stdin-") {
|
if errHash == nil && !c.Options.Overwrite && errRecipientFile == nil && !strings.HasPrefix(fileInfo.Name, "croc-stdin-") {
|
||||||
log.Debug("asking to overwrite")
|
log.Debug("asking to overwrite")
|
||||||
ans := utils.GetInput(fmt.Sprintf("\nOverwrite '%s'? (y/n) ", path.Join(fileInfo.FolderRemote, fileInfo.Name)))
|
prompt := fmt.Sprintf("\nOverwrite '%s'? (y/N) ", path.Join(fileInfo.FolderRemote, fileInfo.Name))
|
||||||
if strings.TrimSpace(strings.ToLower(ans)) != "y" {
|
choice := strings.ToLower(utils.GetInput(prompt))
|
||||||
|
if choice != "y" && choice != "yes" {
|
||||||
fmt.Fprintf(os.Stderr, "skipping '%s'", path.Join(fileInfo.FolderRemote, fileInfo.Name))
|
fmt.Fprintf(os.Stderr, "skipping '%s'", path.Join(fileInfo.FolderRemote, fileInfo.Name))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -1516,7 +1519,6 @@ func (c *Client) sendData(i int) {
|
|||||||
c.Key,
|
c.Key,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
dataToSend, err = crypt.Encrypt(
|
dataToSend, err = crypt.Encrypt(
|
||||||
compress.Compress(
|
compress.Compress(
|
||||||
append(posByte, data[:n]...),
|
append(posByte, data[:n]...),
|
||||||
|
Loading…
Reference in New Issue
Block a user