func parse()

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)
    }