143 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "ArgParse.h"
 | |
| #include <assert.h>
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| 
 | |
| ArgParse *initArgParse() {
 | |
|     ArgParse *argparse    = argParseInit("测试程序", ArgParseMULTIVALUE);
 | |
|     Command  *command     = NULL;
 | |
|     Command  *sub_command = NULL;
 | |
| 
 | |
|     // add global arguments
 | |
|     argParseAddGlobalArg(argparse,
 | |
|                          "-v",
 | |
|                          "--version",
 | |
|                          "Show version",
 | |
|                          NULL,
 | |
|                          NULL,
 | |
|                          false,
 | |
|                          ArgParseNOVALUE);
 | |
|     argParseAddGlobalArg(argparse,
 | |
|                          "-q",
 | |
|                          "--quiet",
 | |
|                          "Quiet mode",
 | |
|                          NULL,
 | |
|                          NULL,
 | |
|                          false,
 | |
|                          ArgParseNOVALUE);
 | |
| 
 | |
|     // add arguments
 | |
|     command = argParseAddCommand(argparse,
 | |
|                                  "install",
 | |
|                                  "Install the package",
 | |
|                                  NULL,
 | |
|                                  NULL,
 | |
|                                  NULL,
 | |
|                                  ArgParseNOVALUE);
 | |
|     argParseAddArg(command,
 | |
|                    "-i",
 | |
|                    "--index",
 | |
|                    "Index URL",
 | |
|                    "https://example.com",
 | |
|                    NULL,
 | |
|                    false,
 | |
|                    ArgParseSINGLEVALUE);
 | |
|     argParseAddArg(command,
 | |
|                    "-f",
 | |
|                    "--file",
 | |
|                    "Package file",
 | |
|                    "package.json",
 | |
|                    NULL,
 | |
|                    false,
 | |
|                    ArgParseMULTIVALUE);
 | |
|     argParseAddArg(command,
 | |
|                    "-p",
 | |
|                    "--package",
 | |
|                    "Package file",
 | |
|                    "package.json",
 | |
|                    NULL,
 | |
|                    false,
 | |
|                    ArgParseMULTIVALUE);
 | |
| 
 | |
|     sub_command = argParseAddSubCommand(command,
 | |
|                                         "tools",
 | |
|                                         "Install tools",
 | |
|                                         NULL,
 | |
|                                         NULL,
 | |
|                                         NULL,
 | |
|                                         ArgParseMULTIVALUE);
 | |
| 
 | |
|     argParseAddArg(sub_command,
 | |
|                    "-t",
 | |
|                    "--tool",
 | |
|                    "Tool name",
 | |
|                    "Tool name",
 | |
|                    NULL,
 | |
|                    true,
 | |
|                    ArgParseMULTIVALUE);
 | |
|     sub_command = argParseAddSubCommand(command,
 | |
|                                         "tools_sub",
 | |
|                                         "Install tools",
 | |
|                                         NULL,
 | |
|                                         NULL,
 | |
|                                         NULL,
 | |
|                                         ArgParseMULTIVALUE);
 | |
| 
 | |
|     argParseAddArg(sub_command,
 | |
|                    "-s",
 | |
|                    "--source",
 | |
|                    "test_source",
 | |
|                    "tools subcommand test",
 | |
|                    NULL,
 | |
|                    true,
 | |
|                    ArgParseMULTIVALUE);
 | |
| 
 | |
|     command = argParseAddCommand(argparse,
 | |
|                                  "uninstall",
 | |
|                                  "Uninstall the package",
 | |
|                                  NULL,
 | |
|                                  NULL,
 | |
|                                  NULL,
 | |
|                                  ArgParseSINGLEVALUE);
 | |
|     argParseAddArg(command,
 | |
|                    "-p",
 | |
|                    "--package",
 | |
|                    "Package name",
 | |
|                    "Package name",
 | |
|                    NULL,
 | |
|                    true,
 | |
|                    ArgParseMULTIVALUE);
 | |
| 
 | |
|     return argparse;
 | |
| }
 | |
| 
 | |
| int main(int argc, char *argv[]) {
 | |
|     ArgParse *argparse = initArgParse();
 | |
| 
 | |
|     argParseParse(argparse, argc, argv);
 | |
| 
 | |
|     char *val = argParseGetVal(argparse);
 | |
|     if (val) {
 | |
|         printf("val: %s\n", val);
 | |
|     }
 | |
| 
 | |
|     int    len        = 0;
 | |
|     char **vals       = argParseGetValList(argparse, &len);
 | |
| 
 | |
|     char *test_val[3] = {"file1.txt", "file2.txt", "file3.txt"};
 | |
| 
 | |
|     if (vals) {
 | |
|         for (int i = 0; i < len; i++) {
 | |
|             printf("vals: %s\n", vals[i]);
 | |
|             assert(strcmp(vals[i], test_val[i]) == 0);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     assert(argParseCheckGlobalTriggered(argparse, "-v"));
 | |
|     assert(argParseCheckGlobalTriggered(argparse, "-q"));
 | |
| 
 | |
|     argParseFree(argparse);
 | |
| 
 | |
|     return 0;
 | |
| } |