Skip to content

Commit f5a7983

Browse files
committed
Add dependency on swift-argument-parser
Wrap executable in ParseableCommand
1 parent 40d6b55 commit f5a7983

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

Package.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,20 @@ let package = Package(
2323
.package(name: "DeckOfPlayingCards",
2424
url: "https://github.com/apple/example-package-deckofplayingcards.git",
2525
from: "3.0.0"),
26+
.package(name: "swift-argument-parser",
27+
url: "https://github.com/apple/swift-argument-parser.git",
28+
from: "0.4.4"),
2629
],
2730
targets: [
2831
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
2932
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
3033
.target(
3134
name: "Dealer",
3235
dependencies: [
33-
.byName(name: "DeckOfPlayingCards")
36+
.product(name: "DeckOfPlayingCards",
37+
package: "DeckOfPlayingCards"),
38+
.product(name: "ArgumentParser",
39+
package: "swift-argument-parser")
3440
]),
3541
.testTarget(
3642
name: "DealerTests",

Sources/Dealer/main.swift

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,25 @@ srandom(UInt32(clock()))
1414
#endif
1515

1616
import DeckOfPlayingCards
17+
import ArgumentParser
1718

18-
let numberOfCards = 10
19+
struct Deal: ParsableCommand {
20+
@Argument(help: "The number of cards to deal.")
21+
var numberOfCards: Int = 10
1922

20-
var deck = Deck.standard52CardDeck()
21-
deck.shuffle()
23+
mutating func run() throws {
24+
var deck = Deck.standard52CardDeck()
25+
deck.shuffle()
2226

23-
for _ in 0..<numberOfCards {
24-
guard let card = deck.deal() else {
25-
print("No More Cards!")
26-
break
27-
}
27+
for _ in 0..<numberOfCards {
28+
guard let card = deck.deal() else {
29+
print("No More Cards!")
30+
break
31+
}
2832

29-
print(card)
33+
print(card)
34+
}
35+
}
3036
}
37+
38+
Deal.main()

0 commit comments

Comments
 (0)