Added link to CLI guidelines
[cli-helper.git] / doc / index.org
1 :PROPERTIES:
2 :ID:       bb4f96cd-458c-495b-a605-313b2e3e28d2
3 :END:
4 #+TITLE: CLI Helper - library to help implementing commandline interfaces
5
6 * General
7 - This program is free software: released under Creative Commons Zero
8   (CC0) license
9
10 - Program author:
11   - Svjatoslav Agejenko
12   - Homepage: https://svjatoslav.eu
13   - Email: mailto://svjatoslav@svjatoslav.eu
14
15 - [[https://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]]
16
17 ** Source code
18 - [[https://www2.svjatoslav.eu/gitweb/?p=cli-helper.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]]
19
20 - [[https://www2.svjatoslav.eu/gitweb/?p=cli-helper.git;a=summary][Browse Git repository online]]
21
22 - Clone Git repository using command:
23   : git clone https://www2.svjatoslav.eu/git/cli-helper.git
24
25 - See [[https://www3.svjatoslav.eu/projects/cli-helper/apidocs/][JavaDoc]]
26
27 * Overview
28 :PROPERTIES:
29 :ID:       fef7ebc3-0f00-4b82-a926-c0cfdf709762
30 :END:
31 - See also: [[https://www3.svjatoslav.eu/projects/cli-helper/apidocs/][CLI Helper JavaDoc]]
32
33 This is library intended to facilitate creation of commandline
34 applications in Java programming language. Library is packaged as an
35 artifact to Maven repository. This makes it simple to add library as
36 dependency to your project.
37
38 Library provides following general functionalities:
39 - [[id:4fca35e4-fdf1-4675-a36f-6206d6fb72cb][Asking for user input]]
40 - [[id:46115263-ed3d-4acc-9ec5-523d7acf87b8][Commandline arguments processing]]
41
42 ** Ask for user input
43 :PROPERTIES:
44 :ID:       4fca35e4-fdf1-4675-a36f-6206d6fb72cb
45 :END:
46
47 - askBoolean() :: Asks the user to enter a boolean value (yes/no).
48 - askLong() :: Asks the user to enter an integer.
49 - askString() :: Asks the user to enter a string.
50
51 * Alternatives and further reading
52
53 - [[https://clig.dev/][Command Line Interface Guidelines]]
54
55 * Getting the library
56 Instructions to embed svjatoslav-commons library in your project:
57
58 Maven pom.xml file snippet:
59
60 #+BEGIN_SRC xml
61 <dependencies>
62     ...
63     <dependency>
64         <groupId>eu.svjatoslav</groupId>
65         <artifactId>cli-helper</artifactId>
66         <version>1.1</version>
67     </dependency>
68     ...
69 </dependencies>
70
71
72 <repositories>
73     ...
74     <repository>
75         <id>svjatoslav.eu</id>
76         <name>Svjatoslav repository</name>
77         <url>http://www3.svjatoslav.eu/maven/</url>
78     </repository>
79     ...
80 </repositories>
81 #+END_SRC
82 * TODO:
83
84 List of improvement suggestions:
85
86 - Add more concrete examples of how to use the library in JavaDoc
87   comments. This will help developers quickly get started and learn
88   the API.
89
90 - Provide more comprehensive unit tests for CliHelper,
91   ParameterParser, Options and subclasses. This will ensure robustness
92   and stability.
93
94 - Add JavaDoc comments to all classes and methods where
95   applicable. This will provide better visibility into the library's
96   functionality for developers.
97
98 - Add more option types like date/time, regular expression etc.
99
100 - Document best practices for using the library in a larger project.
101
102 - Implement support for more complex CLI applications like option
103   dependencies and conflicts resolution.