mirror of
https://gogs.blitter.com/RLabs/xs
synced 2024-08-14 10:26:42 +00:00
Improved 'fancy arg' parsing - gathering up otherArgs (non-flag) as path src list
This commit is contained in:
parent
5eb7d4d1e6
commit
55cf5a9277
1 changed files with 24 additions and 14 deletions
|
@ -53,14 +53,14 @@ func GetSize() (cols, rows int, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func parseFancyEndpointArg(a []string, dp string) (user, host, port, path string) {
|
||||
func parseNonSwitchArgs(a []string, dp string) (user, host, port, path string, isDest bool, otherArgs []string) {
|
||||
//TODO: Look for non-option fancyArg of syntax user@host:filespec to set -r,-t and -u
|
||||
// Consider: whether fancyArg is src or dst file depends on flag.Args() index;
|
||||
// fancyArg as last flag.Args() element denotes dstFile
|
||||
// fancyArg as not-last flag.Args() element denotes srcFile
|
||||
// * throw error if >1 fancyArgs are found in flags.Args()
|
||||
var fancyUser, fancyHost, fancyPort, fancyPath string
|
||||
for i, arg := range flag.Args() {
|
||||
for i, arg := range a {
|
||||
if strings.Contains(arg, ":") || strings.Contains(arg, "@") {
|
||||
fancyArg := strings.Split(flag.Arg(i), "@")
|
||||
var fancyHostPortPath []string
|
||||
|
@ -89,15 +89,20 @@ func parseFancyEndpointArg(a []string, dp string) (user, host, port, path string
|
|||
fancyPort = dp
|
||||
}
|
||||
|
||||
if fancyPath == "" {
|
||||
fancyPath = "."
|
||||
}
|
||||
//if fancyPath == "" {
|
||||
// fancyPath = "."
|
||||
//}
|
||||
|
||||
fmt.Println("fancyArgs: user:", fancyUser, "host:", fancyHost, "port:", fancyPort, "path:", fancyPath)
|
||||
break // ignore multiple 'fancyArgs'
|
||||
if i == len(a)-1 {
|
||||
isDest = true
|
||||
fmt.Println("isDest")
|
||||
}
|
||||
//fmt.Println("fancyArgs: user:", fancyUser, "host:", fancyHost, "port:", fancyPort, "path:", fancyPath)
|
||||
} else {
|
||||
otherArgs = append(otherArgs, a[i])
|
||||
}
|
||||
}
|
||||
return fancyUser, fancyHost, fancyPort, fancyPath
|
||||
return fancyUser, fancyHost, fancyPort, fancyPath, isDest, otherArgs
|
||||
}
|
||||
|
||||
// Demo of a simple client that dials up to a simple test server to
|
||||
|
@ -160,21 +165,26 @@ func main() {
|
|||
}
|
||||
flag.Parse()
|
||||
|
||||
fancyUser, fancyHost, fancyPort, fancyPath := parseFancyEndpointArg(flag.Args(), defPort /* defPort */)
|
||||
fmt.Println("fancyHost:", fancyHost)
|
||||
fancyUser, fancyHost, fancyPort, fancyPath, pathIsDest, otherArgs :=
|
||||
parseNonSwitchArgs(flag.Args(), defPort /* defPort */)
|
||||
fmt.Println("otherArgs:", otherArgs)
|
||||
//fmt.Println("fancyHost:", fancyHost)
|
||||
if fancyUser != "" {
|
||||
altUser = fancyUser
|
||||
}
|
||||
if fancyHost != "" {
|
||||
server = fancyHost + ":" + fancyPort
|
||||
fmt.Println("fancyHost sets server to", server)
|
||||
//fmt.Println("fancyHost sets server to", server)
|
||||
}
|
||||
if fancyPath != "" {
|
||||
//TODO: srcPath or dstPath depends on other flag.Args
|
||||
if pathIsDest {
|
||||
copyDst = fancyPath
|
||||
} else {
|
||||
copySrc = fancyPath
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("server finally is:", server)
|
||||
//fmt.Println("server finally is:", server)
|
||||
|
||||
if flag.NFlag() == 0 && server == "" {
|
||||
flag.Usage()
|
||||
|
|
Loading…
Reference in a new issue