Lemmy: Bestiverse
  • Communities
  • Create Post
  • Create Community
  • heart
    Support Lemmy
  • search
    Search
  • Login
  • Sign Up
洪 民憙 (Hong Minhee)@lemmy.ml to Programming@programming.devEnglish · 9 days ago

Stop writing CLI validation. Parse it right the first time.

hackers.pub

external-link
message-square
20
fedilink
  • cross-posted to:
  • lobsters
108
external-link

Stop writing CLI validation. Parse it right the first time.

hackers.pub

洪 民憙 (Hong Minhee)@lemmy.ml to Programming@programming.devEnglish · 9 days ago
message-square
20
fedilink
  • cross-posted to:
  • lobsters
This post introduces Optique, a new library created to address the pervasive problem of repetitive and often messy validation code in CLI tools. The author was motivated by the observation that nearly every CLI tool reinvents the wheel with similar validation patterns for dependent options, mutually exclusive options, and environment-specific requirements. Optique leverages parser combinators and TypeScript's type inference to ensure that CLI arguments are parsed directly into valid configurations, eliminating the need for manual validation. By describing the desired CLI configuration with Optique, TypeScript automatically infers the types and constraints, catching potential bugs at compile time. The author shares their experience of deleting large chunks of validation code and simplifying refactoring tasks. Optique aims to provide a more robust and maintainable approach to CLI argument parsing, potentially saving developers from writing the same validation logic repeatedly.
  • Onno (VK6FLAB)@lemmy.radio
    link
    fedilink
    arrow-up
    2
    ·
    8 days ago

    I’ve used the node.js version of argparse, which as I understand it, is a clone of the python implementation and I’ve not seen how to do mutually exclusive flags. Mind you, at the time I didn’t need them, so it wasn’t an issue, but I don’t recall seeing any way to do it either.

    Did I miss something?

    • azertyfun@sh.itjust.works
      link
      fedilink
      arrow-up
      3
      ·
      7 days ago

      https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.add_mutually_exclusive_group

      However I’ve never had to use that feature. Like I said it can make sense in specific contexts but it is a pretty strong indicator that you have built in a CLI antipattern or too much complexity.

Programming@programming.dev

programming@programming.dev

Subscribe from Remote Instance

Create a post
You are not logged in. However you can subscribe from another Fediverse account, for example Lemmy or Mastodon. To do this, paste the following into the search field of your instance: !programming@programming.dev

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Visibility: Public
globe

This community can be federated to other instances and be posted/commented in by their users.

  • 168 users / day
  • 554 users / week
  • 2.64K users / month
  • 7.87K users / 6 months
  • 1 local subscriber
  • 22.7K subscribers
  • 1.13K Posts
  • 13.4K Comments
  • Modlog
  • mods:
  • snowe@programming.dev
  • Ategon@programming.dev
  • MaungaHikoi@lemmy.nz
  • UlrikHD@programming.dev
  • BE: 0.19.5
  • Modlog
  • Instances
  • Docs
  • Code
  • join-lemmy.org