███████╗██╗███╗ ███╗██████╗ ██╗ ███████╗ ██████╗██╗ ██╗ ██╔════╝██║████╗ ████║██╔══██╗██║ ██╔════╝ ██╔════╝██║ ██║ ███████╗██║██╔████╔██║██████╔╝██║ █████╗ ██║ ██║ ██║ ╚════██║██║██║╚██╔╝██║██╔═══╝ ██║ ██╔══╝ ██║ ██║ ██║ ███████║██║██║ ╚═╝ ██║██║ ███████╗███████╗ ╚██████╗███████╗██║ ╚══════╝╚═╝╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝ ╚═════╝╚══════╝╚═╝
A simple library for an interactive CLI.
- Os: Windows
- Java: 22
git clone https://github.com/Teoneag/Simple-CLI
./gradlew publish
To build it run
./gradlew build
And then to run it run
java -cp build/libs/Simple-CLI-1.0-SNAPSHOT.jar com.teoneag.Main
Or you can run it directly from gradle (but IO is a bit slower)
./gradlew run -q --console=plain
Or you can use IntelliJ IDEA to run it. (open the project and run the Main class)
This is an example of how to use the library:
class mainMenu {
// optional name - default: method name
// optional description - default: method name (args) -> return type
@Command(name = "hello", description = "Prints hello + <name>")
public void hello(
@Param(name = "name", description = "name to print")
String name) {
System.out.println("Hello " + name);
}
public static void main(String[] args) {
Shell shell = new Shell(mainMenu.class);
shell.start();
}
}
You just need to annotate the methods you want to be commands with @Command
.
Then those methods will be available in the shell.
- automatic help command generation (all functions annotated with @Command will be shown with name and description)
- automatic parameter type checking (if the user inputs a wrong type the shell will tell them)
Chronological order. Planned time -> actual time
- read similar projects (cliche) + write task + plan: 20m -> 40m
- make annotations: 5m -> 5m
- Write the Shell class: constructor + start method: 1h -> 2h
- check parameter types: 20 min -> 40m
- test it + write tests: 30m
- document it: 15m
- github description
- add the nr of required arguments to invalid number of arguments: 5m -> 4m
- test it: 30m -> 14m
- make exit not need a function
- fix help order
- fix "Private method 'reset()' is never used"
- publish it: 30m -> 12:00
- make everything except command and shell private
- fix deprecated gradle features