mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-14 18:48:13 -07:00
text
This commit is contained in:
parent
a93e536812
commit
28f4a19bd6
1 changed files with 48 additions and 2 deletions
|
@ -1,4 +1,34 @@
|
|||
# Cliparser
|
||||
# Note on Cliparser
|
||||
<a id="Top"></a>
|
||||
|
||||
|
||||
# Table of Contents
|
||||
- [Note on Cliparser](#note-on-cliparser)
|
||||
- [Table of Contents](#table-of-contents)
|
||||
- [cliparser setup and use](#cliparser-setup-and-use)
|
||||
- [design comments](#design-comments)
|
||||
- [common options](#common-options)
|
||||
- [How to implement in source code](#how-to-implement-in-source-code)
|
||||
- [setup the parser data structure](#setup-the-parser-data-structure)
|
||||
- [define the context](#define-the-context)
|
||||
- [define the options](#define-the-options)
|
||||
- [Notes:](#notes)
|
||||
- [bool option. true if supplied](#bool-option--true-if-supplied)
|
||||
- [integer that is optional](#integer-that-is-optional)
|
||||
- [integer that is required](#integer-that-is-required)
|
||||
- [double that is optional](#double-that-is-optional)
|
||||
- [double that is required](#double-that-is-required)
|
||||
- [String option that is optional and only one instance can be provided](#string-option-that-is-optional-and-only-one-instance-can-be-provided)
|
||||
- [String option that is required and only one instance can be provided](#string-option-that-is-required-and-only-one-instance-can-be-provided)
|
||||
- [String option that is optional and can have up to 250 instances provided](#string-option-that-is-optional-and-can-have-up-to-250-instances-provided)
|
||||
- [String option that is required/at least one instance and can have up to 250 instances](#string-option-that-is-requiredat-least-one-instance-and-can-have-up-to-250-instances)
|
||||
- [unsigned integer optional](#unsigned-integer-optional)
|
||||
- [unsigned integer required](#unsigned-integer-required)
|
||||
- [show the menu](#show-the-menu)
|
||||
- [clean up](#clean-up)
|
||||
- [retrieving options](#retrieving-options)
|
||||
|
||||
|
||||
|
||||
The old style with mixed custom commandline parsing of user parameters or options was messy and confusing. You can find all kinds in the Proxmark3 client.
|
||||
Samples
|
||||
|
@ -36,11 +66,13 @@ This is the _new_ and _preferred_ way to implement _helptext_ and _cli parsing_
|
|||
|
||||
|
||||
## cliparser setup and use
|
||||
^[Top](#top)
|
||||
|
||||
The parser will format and color and layout as needed.
|
||||
It will also add the `-h --help` option automatic.
|
||||
|
||||
## design comments
|
||||
^[Top](#top)
|
||||
|
||||
* where possible all options should be lowercase.
|
||||
* extended options preceded with -- should be short
|
||||
|
@ -52,6 +84,8 @@ It will also add the `-h --help` option automatic.
|
|||
|
||||
|
||||
## common options
|
||||
^[Top](#top)
|
||||
|
||||
-h --help : help
|
||||
--cn : card number
|
||||
--fn : facility number
|
||||
|
@ -69,8 +103,11 @@ It will also add the `-h --help` option automatic.
|
|||
|
||||
|
||||
## How to implement in source code
|
||||
^[Top](#top)
|
||||
|
||||
### setup the parser data structure
|
||||
^[Top](#top)
|
||||
|
||||
Header file to include
|
||||
|
||||
#include "cliparser.h"
|
||||
|
@ -81,6 +118,8 @@ In the command function, setup the context
|
|||
|
||||
|
||||
### define the context
|
||||
^[Top](#top)
|
||||
|
||||
`CLIParserInit (\<context\>, \<description\>, \<notes\n examples ... \>);`
|
||||
|
||||
use -> to separate example and example comment and \\n to separate examples.
|
||||
|
@ -94,6 +133,7 @@ e.g. lf indala clone -r a0000000a0002021 -> this uses .....
|
|||
"lf indala clone -l -r 80000001b23523a6c2e31eba3cbee4afb3c6ad1fcf649393928c14e5");
|
||||
|
||||
### define the options
|
||||
^[Top](#top)
|
||||
|
||||
void *argtable[] = {
|
||||
arg_param_begin,
|
||||
|
@ -110,6 +150,8 @@ _All options has a parameter index, since `-h --help` is added automatic, it wi
|
|||
Hence all options you add will start at index 1 and upwards. It added in the define "arg_param_begin_
|
||||
|
||||
### Notes:
|
||||
^[Top](#top)
|
||||
|
||||
#### bool option. true if supplied
|
||||
`bool : arg_lit0 ("<short option>", "<long option>", <"description">)`
|
||||
|
||||
|
@ -150,17 +192,21 @@ Unsigned values, like u32 and u64 can be accomplished with
|
|||
|
||||
|
||||
### show the menu
|
||||
^[Top](#top)
|
||||
|
||||
`CLIExecWithReturn(\<context\>, \<command line to parse\>, \<arg/opt table\>, \<return on error\>);`
|
||||
|
||||
CLIExecWithReturn(ctx, Cmd, argtable, false);
|
||||
|
||||
### clean up
|
||||
^[Top](#top)
|
||||
|
||||
Once you have extracted the options, cleanup the context.
|
||||
|
||||
CLIParserFree(ctx);
|
||||
|
||||
### retrieving options
|
||||
|
||||
^[Top](#top)
|
||||
|
||||
The parser will format and color and layout as needed.
|
||||
It will also add the `-h --help` option automatic.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue