in Sources/NIOSSHClient/SimpleCLIParser.swift [18:55]
func parse() -> Result {
var arguments = CommandLine.arguments.dropFirst()
// Let's start by searching for flags
var listen: Listen?
while let first = arguments.first, first.starts(with: "-") {
arguments = arguments.dropFirst()
switch first {
case "-L":
// The next argument is the listen string.
guard let next = arguments.popFirst(), let parsed = Listen(listenString: next) else {
self.usage()
}
listen = parsed
default:
self.usage()
}
}
// The first argument must be "target"
guard var target = arguments.popFirst() else {
self.usage()
}
// We trick Foundation into doing something sensible here by prepending the target with ssh:// if it didn't
// already have it.
if !target.starts(with: "ssh://") {
target = "ssh://" + target
}
guard let targetURL = URL(string: target) else {
self.usage()
}
let command = arguments.joined(separator: " ")
return Result(commandString: command, target: targetURL, listen: listen)
}