summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-07-08 19:40:49 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-07-08 19:40:49 -0400
commita052b40774b22c8fcb9365fb3fe5f8f09f7d90d2 (patch)
tree0b307989f1832151da1aba3dc73194fb1c97bcf3
parent8ce422d8ab390e105d70f049c30d81c14d3b64b4 (diff)
devblog
-rw-r--r--doc/devblog/day_297__optparse-applicative.mdwn25
1 files changed, 25 insertions, 0 deletions
diff --git a/doc/devblog/day_297__optparse-applicative.mdwn b/doc/devblog/day_297__optparse-applicative.mdwn
new file mode 100644
index 000000000..0885f0db4
--- /dev/null
+++ b/doc/devblog/day_297__optparse-applicative.mdwn
@@ -0,0 +1,25 @@
+Now working on converting git-annex to use
+[optparse-applicative](https://github.com/pcapriotti/optparse-applicative)
+for its command line parsing. I've wanted to do this for a long time,
+because the current code for options is generally horrible, runs in
+IO, and is not at all type safe, while optparse-applicative has wonderful
+composable parsers and lets each subcommand have its own data type
+repesenting all its options.
+
+What pushed me over the edge is that optparse-applicative has automatic
+bash completion!
+
+ # source <(git-annex --bash-completion-script `which git-annex`)
+ # git-annex fsck -
+ --all --key -S
+ --from --more -U
+
+Since nobody has managed to write a full bash completion for git-annex
+before, let alone keep it up-to-date with changes to the code, automating
+the problem away is a really nice win. :)
+
+The conversion is a rather huge undertaking; the diff is already over 3000
+lines large after 8 hours of work, and I'm maybe 1/3rd done, with
+the groundwork laid (except for global options still todo) and a few
+subcommands converted. This won't land for this week's release; it'll
+need a lot of testing before it'll be ready for any release.