Skip to content

Commit 5af710c

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

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-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: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ 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+
XCTAssertEqual(error.description, "Multiple (2) `Option` or `Flag` arguments are named \"--foo\".")
234234
} else {
235235
XCTFail(unexpectedErrorMessage)
236236
}
@@ -250,7 +250,7 @@ final class ParsableArgumentsValidationTests: XCTestCase {
250250
@Flag(name: .customLong("bar"))
251251
var notBar: Bool = false
252252

253-
@Option()
253+
@Option(name: [.long, .customLong("help", withSingleDash: true)])
254254
var help: String
255255
}
256256

@@ -261,12 +261,12 @@ final class ParsableArgumentsValidationTests: XCTestCase {
261261
XCTAssert(
262262
/// The `Mirror` reflects the properties `foo` and `bar` in a random order each time it's built.
263263
error.description == """
264-
Multiple (2) `Option` or `Flag` arguments are named \"bar\".
265-
Multiple (2) `Option` or `Flag` arguments are named \"foo\".
264+
Multiple (2) `Option` or `Flag` arguments are named \"--bar\".
265+
Multiple (2) `Option` or `Flag` arguments are named \"--foo\".
266266
"""
267267
|| error.description == """
268-
Multiple (2) `Option` or `Flag` arguments are named \"foo\".
269-
Multiple (2) `Option` or `Flag` arguments are named \"bar\".
268+
Multiple (2) `Option` or `Flag` arguments are named \"--foo\".
269+
Multiple (2) `Option` or `Flag` arguments are named \"--bar\".
270270
"""
271271
)
272272
} else {
@@ -293,7 +293,7 @@ final class ParsableArgumentsValidationTests: XCTestCase {
293293
if let error = ParsableArgumentsUniqueNamesValidator.validate(MultipleNamesPerArgument.self)
294294
as? ParsableArgumentsUniqueNamesValidator.Error
295295
{
296-
XCTAssertEqual(error.description, "Multiple (2) `Option` or `Flag` arguments are named \"v\".")
296+
XCTAssertEqual(error.description, "Multiple (2) `Option` or `Flag` arguments are named \"-v\".")
297297
} else {
298298
XCTFail(unexpectedErrorMessage)
299299
}
@@ -324,7 +324,7 @@ final class ParsableArgumentsValidationTests: XCTestCase {
324324
if let error = ParsableArgumentsUniqueNamesValidator.validate(FourDuplicateNames.self)
325325
as? ParsableArgumentsUniqueNamesValidator.Error
326326
{
327-
XCTAssertEqual(error.description, "Multiple (4) `Option` or `Flag` arguments are named \"foo\".")
327+
XCTAssertEqual(error.description, "Multiple (4) `Option` or `Flag` arguments are named \"--foo\".")
328328
} else {
329329
XCTFail(unexpectedErrorMessage)
330330
}
@@ -366,7 +366,7 @@ final class ParsableArgumentsValidationTests: XCTestCase {
366366
if let error = ParsableArgumentsUniqueNamesValidator.validate(DuplicatedFirstLettersShortNames.self)
367367
as? ParsableArgumentsUniqueNamesValidator.Error
368368
{
369-
XCTAssertEqual(error.description, "Multiple (3) `Option` or `Flag` arguments are named \"f\".")
369+
XCTAssertEqual(error.description, "Multiple (3) `Option` or `Flag` arguments are named \"-f\".")
370370
} else {
371371
XCTFail(unexpectedErrorMessage)
372372
}

0 commit comments

Comments
 (0)