Skip to content

Commit 137ccfb

Browse files
Merge pull request #418 from alexarchambault/fix-tag
Fix Tag stuff
2 parents d22dc18 + f31d775 commit 137ccfb

File tree

6 files changed

+33
-6
lines changed

6 files changed

+33
-6
lines changed

annotations/shared/src/main/scala/caseapp/Annotations.scala

-2
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,3 @@ final class Recurse extends StaticAnnotation
5151
final class Hidden extends StaticAnnotation
5252

5353
final case class Group(name: String) extends StaticAnnotation
54-
55-
final case class Tag(name: String) extends StaticAnnotation
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package caseapp.annotation
2+
3+
import scala.annotation.StaticAnnotation
4+
5+
final case class Tag(name: String) extends StaticAnnotation

core/shared/src/main/scala/caseapp/package.scala

+6
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,13 @@ package object caseapp {
3737

3838
// Custom tag implementation, see above for more details
3939
type @@[T, Tag] = shapeless.newtype.Newtype[T, Tag]
40+
type Tag = caseapp.annotation.Tag
4041
object Tag {
42+
def apply(name: String): Tag =
43+
caseapp.annotation.Tag(name)
44+
def unapply(tag: Tag): Option[String] =
45+
caseapp.annotation.Tag.unapply(tag)
46+
4147
final class TagBuilder[Tag] {
4248
def apply[T](t: T): T @@ Tag = t.asInstanceOf[T @@ Tag]
4349
}

project/Mima.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import scala.sys.process._
88
object Mima {
99

1010
def binaryCompatibilityVersions: Set[String] =
11-
Seq("git", "tag", "--merged", "HEAD^", "--contains", "cd2b553559a0649cc7660bddc198645e442e31c7")
11+
Seq("git", "tag", "--merged", "HEAD^", "--contains", "be2a19c6c737f")
1212
.!!
1313
.linesIterator
1414
.map(_.trim)
15-
.filter(_ != "v2.1.0-M14")
15+
.filter(_ != "v2.1.0-M16")
1616
.filter(_.startsWith("v"))
1717
.map(_.stripPrefix("v"))
1818
.toSet

tests/shared/src/test/scala/caseapp/CaseAppTests.scala

+10
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,16 @@ object CaseAppTests extends TestSuite {
583583
assert(res == expectedRes)
584584
}
585585

586+
test("keep tags") {
587+
val args = DemoOptions.help.args
588+
val valueArg = args.find(_.name.name == "value").getOrElse(sys.error("value arg not found"))
589+
val stagesArg =
590+
args.find(_.name.name == "stages").getOrElse(sys.error("stages arg not found"))
591+
592+
assert(valueArg.tags == Seq(Tag("foo")))
593+
assert(stagesArg.tags == Seq(Tag("foo"), Tag("other")))
594+
}
595+
586596
}
587597

588598
}

tests/shared/src/test/scala/caseapp/demo/Demo.scala

+10-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,17 @@ object SharedOptions {
1616
@ArgsName("files")
1717
final case class DemoOptions(
1818
first: Boolean,
19-
@ExtraName("V") @HelpMessage("Set a value") value: Option[String],
19+
@Group("foo")
20+
@Tag("foo")
21+
@ExtraName("V")
22+
@HelpMessage("Set a value")
23+
value: Option[String],
2024
@ExtraName("v") @HelpMessage("Be verbose") verbose: Int @@ Counter,
21-
@ExtraName("S") @ValueDescription("stages") stages: List[String],
25+
@Tag("foo")
26+
@Tag("other")
27+
@ExtraName("S")
28+
@ValueDescription("stages")
29+
stages: List[String],
2230
@Recurse shared: SharedOptions = SharedOptions()
2331
)
2432

0 commit comments

Comments
 (0)