From 43861921613dd84963a91d86307decf86a40a4a0 Mon Sep 17 00:00:00 2001 From: Nikolay Edigaryev Date: Tue, 5 Jul 2022 16:32:20 +0300 Subject: [PATCH] tart login: introduce --username and --password-stdin flags (#143) --- Sources/tart/Commands/Login.swift | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Sources/tart/Commands/Login.swift b/Sources/tart/Commands/Login.swift index 23e75d9..cd30e27 100644 --- a/Sources/tart/Commands/Login.swift +++ b/Sources/tart/Commands/Login.swift @@ -8,9 +8,32 @@ struct Login: AsyncParsableCommand { @Argument(help: "host") var host: String + @Option(help: "username") + var username: String + + @Flag(help: "password-stdin") + var passwordStdin: Bool = false + + func validate() throws { + let usernameProvided = !username.isEmpty + let passwordProvided = passwordStdin + + if usernameProvided != passwordProvided { + throw ValidationError("both --username and --password-stdin are required") + } + } + func run() async throws { do { - let (user, password) = try StdinCredentials.retrieve() + var user: String + var password: String + + if !username.isEmpty { + user = username + password = readLine()! + } else { + (user, password) = try StdinCredentials.retrieve() + } let credentialsProvider = DictionaryCredentialsProvider([ host: (user, password) ])