KiCad PCB EDA Suite
Loading...
Searching...
No Matches
command.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2022 Mark Roszko <[email protected]>
5 * Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef CLI_COMMAND_H
22#define CLI_COMMAND_H
23
24#include <argparse/argparse.hpp>
25#include <kiway.h>
26
27#define UTF8STDSTR( s ) ( std::string( s.utf8_str() ) )
28
29#define ARG_VERSION "--version"
30#define ARG_HELP "--help"
31#define ARG_HELP_SHORT "-h"
32#define ARG_HELP_DESC _( "Shows help message and exits" )
33#define ARG_OUTPUT "--output"
34#define ARG_INPUT "input"
35#define ARG_DRAWING_SHEET "--drawing-sheet"
36#define ARG_DEFINE_VAR_SHORT "-D"
37#define ARG_DEFINE_VAR_LONG "--define-var"
38
39namespace CLI
40{
41
43{
44public:
50 COMMAND( const std::string& aName );
51
55 int Perform( KIWAY& aKiway );
56
57 virtual ~COMMAND() = default;
58
59 argparse::ArgumentParser& GetArgParser() { return m_argParser; }
60 const std::string& GetName() const { return m_name; }
61
62 void PrintHelp();
63
64protected:
75 void addCommonArgs( bool aInput, bool aOutput, bool aInputIsDir, bool aOutputIsDir );
76
80 void addDrawingSheetArg();
81
85 void addDefineArg();
86
93 virtual int doPerform( KIWAY& aKiway );
94
98 std::string m_name;
99
100 argparse::ArgumentParser m_argParser;
101
106
111
116
121
126
130 wxString m_argInput;
131
135 wxString m_argOutput;
136
141
145 std::map<wxString, wxString> m_argDefineVars;
146};
147
148}
149
150#endif
virtual ~COMMAND()=default
std::string m_name
Name of this command that is exported and used in the cli.
Definition: command.h:98
std::map< wxString, wxString > m_argDefineVars
Value of the drawing sheet arg if configured.
Definition: command.h:145
virtual int doPerform(KIWAY &aKiway)
The internal handler that should be overloaded to implement command specific processing and work.
Definition: command.cpp:106
argparse::ArgumentParser & GetArgParser()
Definition: command.h:59
bool m_hasDefineArg
Whether or not the input arg was added for parsing.
Definition: command.h:120
argparse::ArgumentParser m_argParser
Definition: command.h:100
bool m_hasOutputArg
Whether or not the output arg was added for parsing.
Definition: command.h:110
void addDefineArg()
Set up the drawing sheet arg used by many of the export commands.
Definition: command.cpp:169
bool m_outputArgExpectsDir
Whether or not the output arg is expecting a directory.
Definition: command.h:125
const std::string & GetName() const
Definition: command.h:60
void PrintHelp()
Definition: command.cpp:48
int Perform(KIWAY &aKiway)
Entry point to processing commands from args and doing work.
Definition: command.cpp:56
wxString m_argDrawingSheet
Value of the drawing sheet arg if configured.
Definition: command.h:140
void addCommonArgs(bool aInput, bool aOutput, bool aInputIsDir, bool aOutputIsDir)
Set up the most common of args used across cli.
Definition: command.cpp:115
wxString m_argOutput
Value of the output arg if configured.
Definition: command.h:135
wxString m_argInput
Value of the common input arg if configured.
Definition: command.h:130
bool m_hasInputArg
Whether or not the input arg was added for parsing.
Definition: command.h:105
void addDrawingSheetArg()
Set up the drawing sheet arg used by many of the export commands.
Definition: command.cpp:157
bool m_hasDrawingSheetArg
Whether or not the input arg was added for parsing.
Definition: command.h:115
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition: kiway.h:284
Definition: exit_codes.h:25