Skip to content

Commit aa39d2b

Browse files
committed
Allows single- and double-dashed args with the same name
Fixes #231.
1 parent 15351c1 commit aa39d2b

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

Sources/ArgumentParser/Parsable Types/ParsableArgumentsValidation.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ struct ParsableArgumentsUniqueNamesValidator: ParsableArgumentsValidator {
237237
switch args.content {
238238
case .arguments(let defs):
239239
for name in defs.flatMap({ $0.names }) {
240-
countedNames[name.valueString, default: 0] += 1
240+
countedNames[name.synopsisString, default: 0] += 1
241241
}
242242
default:
243243
break

Tests/ArgumentParserUnitTests/ParsableArgumentsValidationTests.swift

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@ final class ParsableArgumentsValidationTests: XCTestCase {
230230
if let error = ParsableArgumentsUniqueNamesValidator.validate(TwoOfTheSameName.self)
231231
as? ParsableArgumentsUniqueNamesValidator.Error
232232
{
233-
XCTAssertEqual(error.description, "Multiple (2) `Option` or `Flag` arguments are named \"foo\".")
233+
_ = error.description
234+
XCTAssertEqual(error.description, "Multiple (2) `Option` or `Flag` arguments are named \"--foo\".")
234235
} else {
235236
XCTFail(unexpectedErrorMessage)
236237
}
@@ -250,7 +251,7 @@ final class ParsableArgumentsValidationTests: XCTestCase {
250251
@Flag(name: .customLong("bar"))
251252
var notBar: Bool = false
252253

253-
@Option()
254+
@Option(name: [.long, .customLong("help", withSingleDash: true)])
254255
var help: String
255256
}
256257

@@ -261,12 +262,12 @@ final class ParsableArgumentsValidationTests: XCTestCase {
261262
XCTAssert(
262263
/// The `Mirror` reflects the properties `foo` and `bar` in a random order each time it's built.
263264
error.description == """
264-
Multiple (2) `Option` or `Flag` arguments are named \"bar\".
265-
Multiple (2) `Option` or `Flag` arguments are named \"foo\".
265+
Multiple (2) `Option` or `Flag` arguments are named \"--bar\".
266+
Multiple (2) `Option` or `Flag` arguments are named \"--foo\".
266267
"""
267268
|| error.description == """
268-
Multiple (2) `Option` or `Flag` arguments are named \"foo\".
269-
Multiple (2) `Option` or `Flag` arguments are named \"bar\".
269+
Multiple (2) `Option` or `Flag` arguments are named \"--foo\".
270+
Multiple (2) `Option` or `Flag` arguments are named \"--bar\".
270271
"""
271272
)
272273
} else {
@@ -293,7 +294,7 @@ final class ParsableArgumentsValidationTests: XCTestCase {
293294
if let error = ParsableArgumentsUniqueNamesValidator.validate(MultipleNamesPerArgument.self)
294295
as? ParsableArgumentsUniqueNamesValidator.Error
295296
{
296-
XCTAssertEqual(error.description, "Multiple (2) `Option` or `Flag` arguments are named \"v\".")
297+
XCTAssertEqual(error.description, "Multiple (2) `Option` or `Flag` arguments are named \"-v\".")
297298
} else {
298299
XCTFail(unexpectedErrorMessage)
299300
}
@@ -324,7 +325,7 @@ final class ParsableArgumentsValidationTests: XCTestCase {
324325
if let error = ParsableArgumentsUniqueNamesValidator.validate(FourDuplicateNames.self)
325326
as? ParsableArgumentsUniqueNamesValidator.Error
326327
{
327-
XCTAssertEqual(error.description, "Multiple (4) `Option` or `Flag` arguments are named \"foo\".")
328+
XCTAssertEqual(error.description, "Multiple (4) `Option` or `Flag` arguments are named \"--foo\".")
328329
} else {
329330
XCTFail(unexpectedErrorMessage)
330331
}
@@ -366,7 +367,7 @@ final class ParsableArgumentsValidationTests: XCTestCase {
366367
if let error = ParsableArgumentsUniqueNamesValidator.validate(DuplicatedFirstLettersShortNames.self)
367368
as? ParsableArgumentsUniqueNamesValidator.Error
368369
{
369-
XCTAssertEqual(error.description, "Multiple (3) `Option` or `Flag` arguments are named \"f\".")
370+
XCTAssertEqual(error.description, "Multiple (3) `Option` or `Flag` arguments are named \"-f\".")
370371
} else {
371372
XCTFail(unexpectedErrorMessage)
372373
}

0 commit comments

Comments
 (0)