Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is scopt composable? #215

Closed
frgomes opened this issue Nov 29, 2018 · 3 comments
Closed

Is scopt composable? #215

frgomes opened this issue Nov 29, 2018 · 3 comments

Comments

@frgomes
Copy link

@frgomes frgomes commented Nov 29, 2018

I would like to define separate parsers responsible for disjoint sets of options and compose them as needed, for example: I would define one parser per submodule of my project. When I define an application, I define which modules are needed and, doing so, the full command line parser would be made of the composition of the disjoint command line parsers defined in the modules involved. Is that scenario possible with scopt? How could that be achieved?

@frgomes frgomes changed the title Is scopt composable Is scopt composable? Nov 29, 2018
@eed3si9n
Copy link
Member

@eed3si9n eed3si9n commented Nov 29, 2018

I have a local branch I used to work on that makes scopt parsers monadic - scopt3...eed3si9n:topic/monadic
This would allow composition like this:

  lazy val groupParser1: Parser[Unit, Config] = {
    import builder._
    for {
      _ <- programName("scopt")
      _ <- head("scopt", "3.x")
      _ <- opt[Unit]('a', "alice")
      _ <- opt[Unit]('b', "bob")
      _ <- opt[Unit]("alicebob").abbr("ab").action( (x, c) => c.copy(flag = true) )
      // _ <_ help("help")
    } yield ()
  }
@frgomes
Copy link
Author

@frgomes frgomes commented Nov 30, 2018

That looks nice! Any idea (if and) when it will be merged?

@eed3si9n
Copy link
Member

@eed3si9n eed3si9n commented Dec 28, 2018

Released scopt 4.0.0-RC2. See http://eed3si9n.com/scopt4 for details.

@eed3si9n eed3si9n closed this Dec 28, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants