File tree Expand file tree Collapse file tree 1 file changed +15
-1
lines changed
Expand file tree Collapse file tree 1 file changed +15
-1
lines changed Original file line number Diff line number Diff line change @@ -18,12 +18,15 @@ struct Changelog: ParsableCommand {
1818
1919 enum Release : ExpressibleByArgument , CustomStringConvertible {
2020 case unreleased
21+ case latest
2122 case release( String )
2223
2324 var description : String {
2425 switch self {
2526 case . unreleased:
2627 return defaultValueDescription
28+ case . latest:
29+ return " latest "
2730 case let . release( value) :
2831 return value
2932 }
@@ -37,10 +40,21 @@ struct Changelog: ParsableCommand {
3740 switch argument. lowercased ( ) {
3841 case " unreleased " :
3942 self = . unreleased
43+ case " latest " :
44+ self = . latest
4045 default :
4146 self = . release( argument)
4247 }
4348 }
49+
50+ func filterForFirstMatching( _ heading: Heading ) -> Bool {
51+ switch self {
52+ case . latest:
53+ heading. plainText. lowercased ( ) != Release . unreleased. description
54+ case . unreleased, . release:
55+ heading. plainText. lowercased ( ) == description
56+ }
57+ }
4458 }
4559
4660 @Argument ( help: " Path to Changelog.md file " )
@@ -60,7 +74,7 @@ struct Changelog: ParsableCommand {
6074 let heading = document. children
6175 . compactMap { $0 as? Heading }
6276 . filter { $0. level == 2 }
63- . first { $0 . plainText . lowercased ( ) == release . description }
77+ . first { release . filterForFirstMatching ( $0 ) }
6478
6579 guard let heading else {
6680 throw ValidationError ( " Changelog does not contain ' \( release. description. localizedCapitalized) ' section " )
You can’t perform that action at this time.
0 commit comments