MCPcopy Index your code
hub / github.com/darvil82/lanat

github.com/darvil82/lanat @1.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.4.0 ↗ · + Follow
876 symbols 2,316 edges 121 files 504 documented · 58%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
<a href="https://darvil82.github.io/lanat-web/">






    <img width="450" src="https://github.com/darvil82/lanat/raw/1.4.0/resources/logo_dark.svg">



</a>



<strong>
    A command line argument parser for Java 17 with


    ease of use and high customization possibilities in mind.
</strong>

Maven Central Version APIdia

Example

  • First, we define our Command by creating a Command Template.

    ```java @Command.Define class MyProgram extends CommandTemplate { @Argument.Define(required = true, positional = true, description = "The name of the user.") public String name;

    @Argument.Define(type = String.class, description = "The surname of the user.")
    public Optional<String> surname;
    
    @Argument.Define(names = {"age", "a"}, description = "The age of the user.", prefix = Argument.Prefix.PLUS)
    public int age = 18;
    
    @InitDef
    public static void beforeInit(@NotNull CommandBuildContext ctx) {
        // configure the argument "age" to have an argument type of
        // number range and set the range to 18-100
        ctx.argWithType("age", new NumberRangeArgumentType<>(18, 100))
            .onOk(v -> System.out.println("The age is valid!"));
    }
    

    } ```

  • Then, let that class definition also serve as the container for the parsed values.

    ```java public static void main(String[] args) { // example: david +a20 var myProgram = ArgumentParser.parseFromInto(MyProgram.class, args);

    System.out.printf(
        "Welcome %s! You are %d years old.%n",
        myProgram.name, myProgram.age
    );
    
    // if no surname was specified, we'll show "none" instead
    System.out.printf("The surname of the user is %s.%n", myProgram.surname.orElse("none"));
    

    } ```

Documentation

Check out the website for more information.

Click here to get started with Lanat, and to check out the full documentation of the latest stable version.

Javadocs for the latest stable version are available online hosted on APIdia and on GitHub pages.

Installation

The package is currently available on Maven Central.

Add the following to your dependencies block:

implementation("io.github.darvil82:lanat:+")

[!NOTE] The + symbol is a wildcard that will automatically use the latest version of the package. You can also specify a specific version.

Extension points exported contracts — how you extend this code

Resettable (Interface)
Represents an object that can be reset to its default/initial state. [11 implementers]
src/main/java/io/github/darvil/lanat/utils/Resettable.java
CommandUser (Interface)
This interface is used for objects that belong to a Command. [6 implementers]
src/main/java/io/github/darvil/lanat/utils/CommandUser.java
ErrorLevelProvider (Interface)
Interface for classes that have an error level. [8 implementers]
src/main/java/io/github/darvil/lanat/utils/errors/ErrorLevelProvider.java
ParseFunction (Interface)
A functional interface that allows to specify the parse function of the basic argument type. @param The type of the [11 …
src/main/java/io/github/darvil/lanat/argtypes/SimpleArgumentType.java
NamedWithDescription (Interface)
Represents an object that has a name and a description. [5 implementers]
src/main/java/io/github/darvil/lanat/utils/NamedWithDescription.java

Core symbols most depended-on inside this repo

get
called by 75
src/main/java/io/github/darvil/lanat/ParseResult.java
getName
called by 50
src/main/java/io/github/darvil/lanat/argtypes/Parseable.java
of
called by 43
src/main/java/io/github/darvil/lanat/helpgen/LayoutItem.java
isEmpty
called by 40
src/main/java/io/github/darvil/lanat/Group.java
addArgument
called by 39
src/main/java/io/github/darvil/lanat/utils/ArgumentAdder.java
create
called by 38
src/main/java/io/github/darvil/lanat/Argument.java
addError
called by 33
src/main/java/io/github/darvil/lanat/utils/errors/ErrorContainer.java
toString
called by 29
src/main/java/io/github/darvil/lanat/argtypes/FileArgumentType.java

Shape

Method 718
Class 131
Interface 19
Enum 8

Languages

Java100%

Modules by API surface

src/main/java/io/github/darvil/lanat/Argument.java57 symbols
src/main/java/io/github/darvil/lanat/Command.java50 symbols
src/main/java/io/github/darvil/lanat/parsing/errors/handlers/ParseErrors.java24 symbols
src/main/java/io/github/darvil/lanat/Group.java23 symbols
src/main/java/io/github/darvil/lanat/argtypes/SimpleArgumentType.java21 symbols
src/main/java/io/github/darvil/lanat/ArgumentType.java20 symbols
src/main/java/io/github/darvil/lanat/ArgumentBuilder.java20 symbols
src/test/java/io/github/darvil/lanat/tests/parser/TestTerminalOutput.java19 symbols
src/main/java/io/github/darvil/lanat/AfterParseOptions.java19 symbols
src/test/java/io/github/darvil/lanat/tests/parser/TestArgumentTypes.java18 symbols
src/main/java/io/github/darvil/lanat/parsing/Tokenizer.java18 symbols
src/main/java/io/github/darvil/lanat/CommandTemplate.java17 symbols

For agents

$ claude mcp add lanat \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact