https://github.com/sangupta/outline
Java annotation-based command-line argument parser like Airline/Airlift
https://github.com/sangupta/outline
Last synced: 2 months ago
JSON representation
Java annotation-based command-line argument parser like Airline/Airlift
- Host: GitHub
- URL: https://github.com/sangupta/outline
- Owner: sangupta
- License: apache-2.0
- Created: 2016-06-14T10:58:03.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-12-08T18:18:45.000Z (about 5 years ago)
- Last Synced: 2025-03-30T13:03:53.036Z (10 months ago)
- Language: Java
- Homepage:
- Size: 112 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Outline
[](https://travis-ci.org/sangupta/outline)
[](https://coveralls.io/github/sangupta/outline?branch=master)
[](https://maven-badges.herokuapp.com/maven-central/com.sangupta/outline)
`Outline` is a Java-annotation based command line argument parser loosely based on
https://github.com/airlift/airline.
The need for `Outline` arose as the development of `airline` is mostly stalled - no
new commits, bug-fixes, or pull-request merges have been made. I tried to use to fix the
same in a fork of mine - but then its very hard dependency on `Google Guava` made me
realize that we could simplify the framework. `airline` is dependent a lot on **immutables**
and thus, copies a lot of data between data-structures which bloats the code to understand.
Thus, began my journey for `Outline` with an aim to simplify the framework and yet be
more-powerful than `airline`.
The codebase is now sane and it can be used to parse almost all Git-like command-structures.
Some examples are listed below.
## Tasks left
* Show argument usage examples in help
* Show arguments usage examples in help
## TODO
Following items are still need to be implemented to attain feature parity with `airline`:
* Generate help guides
* Allow collecting all available commands using reflection
* support for system properties
* support for reading configuration from file
* resolve conflicting names of commands across groups
## Features
Outline supports all features that are supported in `airline` and more as:
* Support for splitting end arguments based on index into individual attributes
* Ability to define command groups using annotation
Common feature set:
* Annotation based definition of commands, options and arguments
* Meta-data driven
## Usage Examples
## Downloads
For now you may use **jitpack.io** to download **snapshots** of the framework:
Add the following `repository` to Maven,
```xml
jitpack.io
https://jitpack.io
```
Then add the dependency as,
```xml
com.github.sangupta
outline
-SNAPSHOT
```
## Versioning
For transparency and insight into our release cycle, and for striving to maintain backward compatibility,
`Outline` will be maintained under the Semantic Versioning guidelines as much as possible.
Releases will be numbered with the follow format:
`..`
And constructed with the following guidelines:
* Breaking backward compatibility bumps the major
* New additions without breaking backward compatibility bumps the minor
* Bug fixes and misc changes bump the patch
For more information on SemVer, please visit http://semver.org/.
## License
```
outline - command line argument parser
Copyright (c) 2015-2016, Sandeep Gupta
http://sangupta.com/projects/outline
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```