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 The 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#define ARG_VARIANTS "--variants"
39
40namespace CLI
41{
42
44{
45public:
51 COMMAND( const std::string& aName );
52
56 int Perform( KIWAY& aKiway );
57
58 virtual ~COMMAND() = default;
59
60 argparse::ArgumentParser& GetArgParser() { return m_argParser; }
61 const std::string& GetName() const { return m_name; }
62
63 void PrintHelp();
64
65protected:
76 void addCommonArgs( bool aInput, bool aOutput, bool aInputCanBeDir, bool aOutputIsDir );
77
81 void addDrawingSheetArg();
82
86 void addDefineArg();
87
91 void addVariantsArg();
92
99 virtual int doPerform( KIWAY& aKiway );
100
104 std::string m_name;
105
106 argparse::ArgumentParser m_argParser;
107
112
117
122
127
132
136 wxString m_argInput;
137
141 wxString m_argOutput;
142
147
151 std::map<wxString, wxString> m_argDefineVars;
152
157
163 std::set<wxString> m_argVariantNames;
164};
165
166}
167
168#endif
virtual ~COMMAND()=default
std::string m_name
Name of this command that is exported and used in the cli.
Definition command.h:104
void addCommonArgs(bool aInput, bool aOutput, bool aInputCanBeDir, bool aOutputIsDir)
Set up the most common of args used across cli.
Definition command.cpp:125
std::map< wxString, wxString > m_argDefineVars
Value of the drawing sheet arg if configured.
Definition command.h:151
virtual int doPerform(KIWAY &aKiway)
The internal handler that should be overloaded to implement command specific processing and work.
Definition command.cpp:116
argparse::ArgumentParser & GetArgParser()
Definition command.h:60
bool m_hasDefineArg
Whether or not the input arg was added for parsing.
Definition command.h:126
void addVariantsArg()
Set up the list of variants to output arguement.
Definition command.cpp:193
argparse::ArgumentParser m_argParser
Definition command.h:106
bool m_hasOutputArg
Whether or not the output arg was added for parsing.
Definition command.h:116
COMMAND(const std::string &aName)
Define a new COMMAND instance.
Definition command.cpp:30
void addDefineArg()
Set up the drawing sheet arg used by many of the export commands.
Definition command.cpp:178
bool m_outputArgExpectsDir
Whether or not the output arg is expecting a directory.
Definition command.h:131
const std::string & GetName() const
Definition command.h:61
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:146
bool m_hasVariantsArg
Whether or not the input arguement for variant names was added for parsing.
Definition command.h:156
wxString m_argOutput
Value of the output arg if configured.
Definition command.h:141
wxString m_argInput
Value of the common input arg if configured.
Definition command.h:136
std::set< wxString > m_argVariantNames
A set of variant names to output.
Definition command.h:163
bool m_hasInputArg
Whether or not the input arg was added for parsing.
Definition command.h:111
void addDrawingSheetArg()
Set up the drawing sheet arg used by many of the export commands.
Definition command.cpp:166
bool m_hasDrawingSheetArg
Whether or not the input arg was added for parsing.
Definition command.h:121
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition kiway.h:286