Report error if no filename is remote
This commit is contained in:
parent
034199073d
commit
8fb5e5e1d5
1 changed files with 6 additions and 1 deletions
|
|
@ -193,7 +193,7 @@ users; see https://lwn.net/Articles/835962/ for discussion.
|
||||||
|
|
||||||
// Copy copies files between the local and remote file systems.
|
// Copy copies files between the local and remote file systems.
|
||||||
// The mechanics are similar to 'ssh' but using 'scp'.
|
// The mechanics are similar to 'ssh' but using 'scp'.
|
||||||
func (a *App) Copy(ctx context.Context, args []string, opts cpOptions) (err error) {
|
func (a *App) Copy(ctx context.Context, args []string, opts cpOptions) error {
|
||||||
if len(args) < 2 {
|
if len(args) < 2 {
|
||||||
return fmt.Errorf("cp requires source and destination arguments")
|
return fmt.Errorf("cp requires source and destination arguments")
|
||||||
}
|
}
|
||||||
|
|
@ -201,8 +201,10 @@ func (a *App) Copy(ctx context.Context, args []string, opts cpOptions) (err erro
|
||||||
opts.scpArgs = append(opts.scpArgs, "-r")
|
opts.scpArgs = append(opts.scpArgs, "-r")
|
||||||
}
|
}
|
||||||
opts.scpArgs = append(opts.scpArgs, "--")
|
opts.scpArgs = append(opts.scpArgs, "--")
|
||||||
|
hasRemote := false
|
||||||
for _, arg := range args {
|
for _, arg := range args {
|
||||||
if rest := strings.TrimPrefix(arg, "remote:"); rest != arg {
|
if rest := strings.TrimPrefix(arg, "remote:"); rest != arg {
|
||||||
|
hasRemote = true
|
||||||
// scp treats each filename argument as a shell expression,
|
// scp treats each filename argument as a shell expression,
|
||||||
// subjecting it to expansion of environment variables, braces,
|
// subjecting it to expansion of environment variables, braces,
|
||||||
// tilde, backticks, globs and so on. Because these present a
|
// tilde, backticks, globs and so on. Because these present a
|
||||||
|
|
@ -225,6 +227,9 @@ func (a *App) Copy(ctx context.Context, args []string, opts cpOptions) (err erro
|
||||||
}
|
}
|
||||||
opts.scpArgs = append(opts.scpArgs, arg)
|
opts.scpArgs = append(opts.scpArgs, arg)
|
||||||
}
|
}
|
||||||
|
if !hasRemote {
|
||||||
|
return fmt.Errorf("cp: no argument is a 'remote:' filename")
|
||||||
|
}
|
||||||
return a.SSH(ctx, nil, opts.sshOptions)
|
return a.SSH(ctx, nil, opts.sshOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue