diff --git a/docs/design/design.md b/docs/design/design.md index 2944283..c79b192 100644 --- a/docs/design/design.md +++ b/docs/design/design.md @@ -2,6 +2,22 @@ This module contains some documents about the design of this library. In particular, it details the different kinds of arguments that are present in the coreutils and the difficulties that `clap` presents when implementing these arguments. +The primary design considerations of this library are: + +- Must support all options in GNU coreutils. +- Must support a many-to-many relationship between options and settings. +- Must have a convenient derive API. +- Must support help strings from file. +- Code must be "greppable" (e.g. search file for `--all` to find the code for + that argument). +- Maintainability is more important than terseness. +- With a bit of luck, it will be smaller and faster than `clap`, because we have + fewer features to support. +- Use outside uutils is possible but not prioritized. Hence, configurability + beyond the coreutils is not necessary. +- Errors must be at least as good as GNU's, but may be different (hopefully + improved). + ## Chapters 1. [Arguments in the coreutils](design::coreutils) diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 22b94bf..0000000 --- a/docs/index.md +++ /dev/null @@ -1,24 +0,0 @@ -# `uutils-args` Design Docs - -This is a series of design documents, explaining the various design goals and -decisions. Before diving in, let's lay out the design goals of this project. - -- Must support all options in GNU coreutils. -- Must support a many-to-many relationship between options and settings. -- Must have a convenient derive API. -- Must support help strings from file. -- Code must be "greppable" (e.g. search file for `--all` to find the code for - that argument). -- Maintainability is more important than terseness. -- With a bit of luck, it will be smaller and faster than `clap`, because we have - fewer features to support. -- Use outside uutils is possible but not prioritized. Hence, configurability - beyond the coreutils is not necessary. -- Errors must be at least as good as GNU's, but may be different (hopefully - improved). - -## Pages - -1. [Arguments in coreutils](arguments_in_coreutils.md) -2. [Problems with `clap` and other parsers](problems_with_clap.md) -3. [Library design](design.md) (TODO once the design settles)