Diffstat (limited to 'README.md')
1 files changed, 51 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
@@ -0,0 +1,51 @@
+Coalpit is a library for building command-line program
+interfaces. They are like command-line user interfaces, but for
+Given a type, it derives instances to print and parse it as
+The goal is to
+[the KISS principle](https://en.wikipedia.org/wiki/KISS_principle)
+preservation for interfaces between system components in certain
+architectures. Described in more detail in
+[command-line program interface](https://defanor.uberspace.net/notes/command-line-program-interface.html) note.
+Not production-ready yet, merely a prototype.
+There is an example in `Example.hs`, but here are some bits:
+data Y = Foo Bool Int
+ | Bar Int
+ | Baz
+data X = X String (Maybe Int) (Maybe [Int]) Y Y String
+`toArgs` serializes data into arguments, and `fromArgs` deserializes
+it: `X "test" Nothing (Just [1,2,3]) (Foo True 1) Baz "end"` ↔ `x
+"test" n j 1,2,3 foo t 1 baz "end"`.
+What it currently lacks, but what should be done, roughly in that
+* Proper parsing: use optparse-applicative, Parsec, or a custom
+ parser, but something with error handling and more flexible.
+* Named arguments (via records), not just positional ones.
+* Optional arguments: once the named ones will be there, `Maybe a`
+ could be handled nicer.
+* Help messages.