113 lines
3.4 KiB
C
113 lines
3.4 KiB
C
|
/**
|
||
|
* @file cmd.c
|
||
|
* @author Michal Vasko <mvasko@cesnet.cz>
|
||
|
* @author Radek Krejci <rkrejci@cesnet.cz>
|
||
|
* @author Adam Piecek <piecek@cesnet.cz>
|
||
|
* @brief libyang's yanglint tool general commands
|
||
|
*
|
||
|
* Copyright (c) 2015-2023 CESNET, z.s.p.o.
|
||
|
*
|
||
|
* This source code is licensed under BSD 3-Clause License (the "License").
|
||
|
* You may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* https://opensource.org/licenses/BSD-3-Clause
|
||
|
*/
|
||
|
|
||
|
#define _GNU_SOURCE
|
||
|
|
||
|
#include "cmd.h"
|
||
|
|
||
|
#include <getopt.h>
|
||
|
#include <stdint.h>
|
||
|
#include <stdio.h>
|
||
|
#include <string.h>
|
||
|
#include <strings.h>
|
||
|
|
||
|
#include "common.h"
|
||
|
#include "compat.h"
|
||
|
#include "libyang.h"
|
||
|
|
||
|
COMMAND commands[];
|
||
|
extern int done;
|
||
|
|
||
|
void
|
||
|
cmd_free(void)
|
||
|
{
|
||
|
uint16_t i;
|
||
|
|
||
|
for (i = 0; commands[i].name; i++) {
|
||
|
if (commands[i].free_func) {
|
||
|
commands[i].free_func();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int
|
||
|
cmd_quit_exec(struct ly_ctx **UNUSED(ctx), struct yl_opt *UNUSED(yo), const char *UNUSED(posv))
|
||
|
{
|
||
|
done = 1;
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
/* Also keep enum COMMAND_INDEX updated. */
|
||
|
COMMAND commands[] = {
|
||
|
{
|
||
|
"help", cmd_help_opt, NULL, cmd_help_exec, NULL, cmd_help_help, NULL,
|
||
|
"Display commands description", "h"
|
||
|
},
|
||
|
{
|
||
|
"add", cmd_add_opt, cmd_add_dep, cmd_add_exec, NULL, cmd_add_help, NULL,
|
||
|
"Add a new module from a specific file", "DF:hiX"
|
||
|
},
|
||
|
{
|
||
|
"load", cmd_load_opt, cmd_load_dep, cmd_load_exec, NULL, cmd_load_help, NULL,
|
||
|
"Load a new schema from the searchdirs", "F:hiX"
|
||
|
},
|
||
|
{
|
||
|
"print", cmd_print_opt, cmd_print_dep, cmd_print_exec, NULL, cmd_print_help, NULL,
|
||
|
"Print a module", "f:hL:o:P:q"
|
||
|
},
|
||
|
{
|
||
|
"data", cmd_data_opt, cmd_data_dep, cmd_data_store, cmd_data_process, cmd_data_help, NULL,
|
||
|
"Load, validate and optionally print instance data", "d:ef:F:hmo:O:R:r:nt:x:"
|
||
|
},
|
||
|
{
|
||
|
"list", cmd_list_opt, cmd_list_dep, cmd_list_exec, NULL, cmd_list_help, NULL,
|
||
|
"List all the loaded modules", "f:h"
|
||
|
},
|
||
|
{
|
||
|
"feature", cmd_feature_opt, cmd_feature_dep, cmd_feature_exec, cmd_feature_fin, cmd_feature_help, NULL,
|
||
|
"Print all features of module(s) with their state", "haf"
|
||
|
},
|
||
|
{
|
||
|
"searchpath", cmd_searchpath_opt, NULL, cmd_searchpath_exec, NULL, cmd_searchpath_help, NULL,
|
||
|
"Print/set the search path(s) for schemas", "ch"
|
||
|
},
|
||
|
{
|
||
|
"extdata", cmd_extdata_opt, cmd_extdata_dep, cmd_extdata_exec, NULL, cmd_extdata_help, cmd_extdata_free,
|
||
|
"Set the specific data required by an extension", "ch"
|
||
|
},
|
||
|
{
|
||
|
"clear", cmd_clear_opt, cmd_clear_dep, cmd_clear_exec, NULL, cmd_clear_help, NULL,
|
||
|
"Clear the context - remove all the loaded modules", "iyhY:"
|
||
|
},
|
||
|
{
|
||
|
"verb", cmd_verb_opt, cmd_verb_dep, cmd_verb_exec, NULL, cmd_verb_help, NULL,
|
||
|
"Change verbosity", "h"
|
||
|
},
|
||
|
{
|
||
|
"debug", cmd_debug_opt, cmd_debug_dep, cmd_debug_store, cmd_debug_setlog, cmd_debug_help, NULL,
|
||
|
#ifndef NDEBUG
|
||
|
"Display specific debug message groups", "h"
|
||
|
#else
|
||
|
"Unsupported for the Release build", "h"
|
||
|
#endif
|
||
|
},
|
||
|
{"quit", NULL, NULL, cmd_quit_exec, NULL, NULL, NULL, "Quit the program", "h"},
|
||
|
/* synonyms for previous commands */
|
||
|
{"?", NULL, NULL, cmd_help_exec, NULL, NULL, NULL, "Display commands description", "h"},
|
||
|
{"exit", NULL, NULL, cmd_quit_exec, NULL, NULL, NULL, "Quit the program", "h"},
|
||
|
{NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
|
||
|
};
|