Fix the handling of help in the cli commands
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13293
This commit is contained in:
parent
16fd586c41
commit
e335423cb6
|
@ -25,11 +25,44 @@
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
int CLI::COMMAND::Perform( KIWAY& aKiway )
|
|
||||||
|
CLI::COMMAND::COMMAND( const std::string& aName ) :
|
||||||
|
m_name( aName ),
|
||||||
|
m_argParser( aName, "", argparse::default_arguments::none )
|
||||||
|
{
|
||||||
|
m_argParser.add_argument( ARG_HELP_SHORT, ARG_HELP )
|
||||||
|
.default_value( false )
|
||||||
|
.help( UTF8STDSTR( ARG_HELP_DESC ) )
|
||||||
|
.implicit_value( true )
|
||||||
|
.nargs( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CLI::COMMAND::PrintHelp()
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << m_argParser;
|
ss << m_argParser;
|
||||||
wxPrintf( FROM_UTF8( ss.str().c_str() ) );
|
wxPrintf( FROM_UTF8( ss.str().c_str() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int CLI::COMMAND::Perform( KIWAY& aKiway )
|
||||||
|
{
|
||||||
|
if( m_argParser[ARG_HELP] == true )
|
||||||
|
{
|
||||||
|
PrintHelp();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return doPerform( aKiway );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int CLI::COMMAND::doPerform( KIWAY& aKiway )
|
||||||
|
{
|
||||||
|
// default case if we aren't overloaded, just print the help
|
||||||
|
PrintHelp();
|
||||||
|
|
||||||
return EXIT_CODES::OK;
|
return EXIT_CODES::OK;
|
||||||
}
|
}
|
|
@ -26,25 +26,44 @@
|
||||||
|
|
||||||
#define UTF8STDSTR( s ) ( std::string( s.utf8_str() ) )
|
#define UTF8STDSTR( s ) ( std::string( s.utf8_str() ) )
|
||||||
|
|
||||||
|
#define ARG_VERSION "--version"
|
||||||
|
#define ARG_HELP "--help"
|
||||||
|
#define ARG_HELP_SHORT "-h"
|
||||||
|
#define ARG_HELP_DESC _( "shows help message and exits" )
|
||||||
|
|
||||||
namespace CLI
|
namespace CLI
|
||||||
{
|
{
|
||||||
|
|
||||||
class COMMAND
|
class COMMAND
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
COMMAND( const std::string& aName,
|
/**
|
||||||
argparse::default_arguments aDefaultArgs = argparse::default_arguments::help ) :
|
* Define a new COMMAND instance
|
||||||
m_name( aName ),
|
*
|
||||||
m_argParser( aName, "", aDefaultArgs ){};
|
* @param aName The name of the command that is to be used in the cli interface
|
||||||
|
*/
|
||||||
|
COMMAND( const std::string& aName );
|
||||||
|
|
||||||
virtual int Perform( KIWAY& aKiway );
|
/**
|
||||||
|
* Entry point to processing commands from args and doing work
|
||||||
|
*/
|
||||||
|
int Perform( KIWAY& aKiway );
|
||||||
|
|
||||||
virtual ~COMMAND() = default;
|
virtual ~COMMAND() = default;
|
||||||
|
|
||||||
argparse::ArgumentParser& GetArgParser() { return m_argParser; }
|
argparse::ArgumentParser& GetArgParser() { return m_argParser; }
|
||||||
const std::string& GetName() const { return m_name; }
|
const std::string& GetName() const { return m_name; }
|
||||||
|
|
||||||
|
void PrintHelp();
|
||||||
protected:
|
protected:
|
||||||
|
/**
|
||||||
|
* The internal handler that should be overloaded to implement command specific
|
||||||
|
* processing and work.
|
||||||
|
*
|
||||||
|
* If not overloaded, the command will simply emit the help options by default
|
||||||
|
*/
|
||||||
|
virtual int doPerform( KIWAY& aKiway );
|
||||||
|
|
||||||
std::string m_name;
|
std::string m_name;
|
||||||
argparse::ArgumentParser m_argParser;
|
argparse::ArgumentParser m_argParser;
|
||||||
};
|
};
|
||||||
|
|
|
@ -101,7 +101,7 @@ void CLI::EXPORT_PCB_BASE_COMMAND::addLayerArg( bool aRequire )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_PCB_BASE_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_PCB_BASE_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
if( m_hasLayerArg )
|
if( m_hasLayerArg )
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,9 +39,8 @@ struct EXPORT_PCB_BASE_COMMAND : public COMMAND
|
||||||
{
|
{
|
||||||
EXPORT_PCB_BASE_COMMAND( const std::string& aName );
|
EXPORT_PCB_BASE_COMMAND( const std::string& aName );
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
LSET convertLayerStringList( wxString& aLayerString, bool& aLayerArgSet ) const;
|
LSET convertLayerStringList( wxString& aLayerString, bool& aLayerArgSet ) const;
|
||||||
void addLayerArg( bool aRequire );
|
void addLayerArg( bool aRequire );
|
||||||
|
|
||||||
|
|
|
@ -94,7 +94,7 @@ CLI::EXPORT_PCB_DRILL_COMMAND::EXPORT_PCB_DRILL_COMMAND() : EXPORT_PCB_BASE_COMM
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_PCB_DRILL_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_PCB_DRILL_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
std::unique_ptr<JOB_EXPORT_PCB_DRILL> drillJob( new JOB_EXPORT_PCB_DRILL( true ) );
|
std::unique_ptr<JOB_EXPORT_PCB_DRILL> drillJob( new JOB_EXPORT_PCB_DRILL( true ) );
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class EXPORT_PCB_DRILL_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
EXPORT_PCB_DRILL_COMMAND();
|
EXPORT_PCB_DRILL_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -61,9 +61,9 @@ CLI::EXPORT_PCB_DXF_COMMAND::EXPORT_PCB_DXF_COMMAND() : EXPORT_PCB_BASE_COMMAND(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_PCB_DXF_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_PCB_DXF_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
int baseExit = EXPORT_PCB_BASE_COMMAND::Perform( aKiway );
|
int baseExit = EXPORT_PCB_BASE_COMMAND::doPerform( aKiway );
|
||||||
if( baseExit != EXIT_CODES::OK )
|
if( baseExit != EXIT_CODES::OK )
|
||||||
return baseExit;
|
return baseExit;
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class EXPORT_PCB_DXF_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
EXPORT_PCB_DXF_COMMAND();
|
EXPORT_PCB_DXF_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -114,9 +114,9 @@ int CLI::EXPORT_PCB_GERBER_COMMAND::populateJob( JOB_EXPORT_PCB_GERBER* aJob )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_PCB_GERBER_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_PCB_GERBER_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
int exitCode = EXPORT_PCB_BASE_COMMAND::Perform( aKiway );
|
int exitCode = EXPORT_PCB_BASE_COMMAND::doPerform( aKiway );
|
||||||
if( exitCode != EXIT_CODES::OK )
|
if( exitCode != EXIT_CODES::OK )
|
||||||
return exitCode;
|
return exitCode;
|
||||||
|
|
||||||
|
|
|
@ -39,9 +39,8 @@ public:
|
||||||
EXPORT_PCB_GERBER_COMMAND( const std::string& aName );
|
EXPORT_PCB_GERBER_COMMAND( const std::string& aName );
|
||||||
EXPORT_PCB_GERBER_COMMAND();
|
EXPORT_PCB_GERBER_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
int populateJob( JOB_EXPORT_PCB_GERBER* aJob );
|
int populateJob( JOB_EXPORT_PCB_GERBER* aJob );
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
|
@ -51,9 +51,9 @@ CLI::EXPORT_PCB_GERBERS_COMMAND::EXPORT_PCB_GERBERS_COMMAND() :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_PCB_GERBERS_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_PCB_GERBERS_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
int exitCode = EXPORT_PCB_BASE_COMMAND::Perform( aKiway );
|
int exitCode = EXPORT_PCB_BASE_COMMAND::doPerform( aKiway );
|
||||||
if( exitCode != EXIT_CODES::OK )
|
if( exitCode != EXIT_CODES::OK )
|
||||||
return exitCode;
|
return exitCode;
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class EXPORT_PCB_GERBERS_COMMAND : public EXPORT_PCB_GERBER_COMMAND
|
||||||
public:
|
public:
|
||||||
EXPORT_PCB_GERBERS_COMMAND();
|
EXPORT_PCB_GERBERS_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -62,9 +62,9 @@ CLI::EXPORT_PCB_PDF_COMMAND::EXPORT_PCB_PDF_COMMAND() : EXPORT_PCB_BASE_COMMAND(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_PCB_PDF_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_PCB_PDF_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
int baseExit = EXPORT_PCB_BASE_COMMAND::Perform( aKiway );
|
int baseExit = EXPORT_PCB_BASE_COMMAND::doPerform( aKiway );
|
||||||
if( baseExit != EXIT_CODES::OK )
|
if( baseExit != EXIT_CODES::OK )
|
||||||
return baseExit;
|
return baseExit;
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class EXPORT_PCB_PDF_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
EXPORT_PCB_PDF_COMMAND();
|
EXPORT_PCB_PDF_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -83,9 +83,9 @@ CLI::EXPORT_PCB_POS_COMMAND::EXPORT_PCB_POS_COMMAND() : EXPORT_PCB_BASE_COMMAND(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_PCB_POS_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_PCB_POS_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
int baseExit = EXPORT_PCB_BASE_COMMAND::Perform( aKiway );
|
int baseExit = EXPORT_PCB_BASE_COMMAND::doPerform( aKiway );
|
||||||
if( baseExit != EXIT_CODES::OK )
|
if( baseExit != EXIT_CODES::OK )
|
||||||
return baseExit;
|
return baseExit;
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class EXPORT_PCB_POS_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
EXPORT_PCB_POS_COMMAND();
|
EXPORT_PCB_POS_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,7 @@ CLI::EXPORT_PCB_STEP_COMMAND::EXPORT_PCB_STEP_COMMAND() : COMMAND( "step" )
|
||||||
m_argParser.add_argument( ARG_INPUT ).help( UTF8STDSTR( _( "Input file" ) ) );
|
m_argParser.add_argument( ARG_INPUT ).help( UTF8STDSTR( _( "Input file" ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
int CLI::EXPORT_PCB_STEP_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_PCB_STEP_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
std::unique_ptr<JOB_EXPORT_PCB_STEP> step( new JOB_EXPORT_PCB_STEP( true ) );
|
std::unique_ptr<JOB_EXPORT_PCB_STEP> step( new JOB_EXPORT_PCB_STEP( true ) );
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,8 @@ struct EXPORT_PCB_STEP_COMMAND : public COMMAND
|
||||||
{
|
{
|
||||||
EXPORT_PCB_STEP_COMMAND();
|
EXPORT_PCB_STEP_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,9 +66,9 @@ CLI::EXPORT_PCB_SVG_COMMAND::EXPORT_PCB_SVG_COMMAND() : EXPORT_PCB_BASE_COMMAND(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_PCB_SVG_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_PCB_SVG_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
int baseExit = EXPORT_PCB_BASE_COMMAND::Perform( aKiway );
|
int baseExit = EXPORT_PCB_BASE_COMMAND::doPerform( aKiway );
|
||||||
if( baseExit != EXIT_CODES::OK )
|
if( baseExit != EXIT_CODES::OK )
|
||||||
return baseExit;
|
return baseExit;
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,8 @@ struct EXPORT_PCB_SVG_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
{
|
{
|
||||||
EXPORT_PCB_SVG_COMMAND();
|
EXPORT_PCB_SVG_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ CLI::EXPORT_SCH_NETLIST_COMMAND::EXPORT_SCH_NETLIST_COMMAND() : EXPORT_PCB_BASE_
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_SCH_NETLIST_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_SCH_NETLIST_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
std::unique_ptr<JOB_EXPORT_SCH_NETLIST> netJob =
|
std::unique_ptr<JOB_EXPORT_SCH_NETLIST> netJob =
|
||||||
std::make_unique<JOB_EXPORT_SCH_NETLIST>( true );
|
std::make_unique<JOB_EXPORT_SCH_NETLIST>( true );
|
||||||
|
|
|
@ -30,7 +30,8 @@ class EXPORT_SCH_NETLIST_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
EXPORT_SCH_NETLIST_COMMAND();
|
EXPORT_SCH_NETLIST_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ CLI::EXPORT_SCH_PDF_COMMAND::EXPORT_SCH_PDF_COMMAND() : EXPORT_PCB_BASE_COMMAND(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_SCH_PDF_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_SCH_PDF_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
std::unique_ptr<JOB_EXPORT_SCH_PDF> pdfJob = std::make_unique<JOB_EXPORT_SCH_PDF>( true );
|
std::unique_ptr<JOB_EXPORT_SCH_PDF> pdfJob = std::make_unique<JOB_EXPORT_SCH_PDF>( true );
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class EXPORT_SCH_PDF_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
EXPORT_SCH_PDF_COMMAND();
|
EXPORT_SCH_PDF_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ CLI::EXPORT_SCH_PYTHONBOM_COMMAND::EXPORT_SCH_PYTHONBOM_COMMAND() :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_SCH_PYTHONBOM_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_SCH_PYTHONBOM_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
std::unique_ptr<JOB_EXPORT_SCH_PYTHONBOM> bomJob =
|
std::unique_ptr<JOB_EXPORT_SCH_PYTHONBOM> bomJob =
|
||||||
std::make_unique<JOB_EXPORT_SCH_PYTHONBOM>( true );
|
std::make_unique<JOB_EXPORT_SCH_PYTHONBOM>( true );
|
||||||
|
|
|
@ -30,7 +30,8 @@ class EXPORT_SCH_PYTHONBOM_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
EXPORT_SCH_PYTHONBOM_COMMAND();
|
EXPORT_SCH_PYTHONBOM_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ CLI::EXPORT_SCH_SVG_COMMAND::EXPORT_SCH_SVG_COMMAND() : EXPORT_PCB_BASE_COMMAND(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::EXPORT_SCH_SVG_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::EXPORT_SCH_SVG_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
std::unique_ptr<JOB_EXPORT_SCH_SVG> svgJob = std::make_unique<JOB_EXPORT_SCH_SVG>( true );
|
std::unique_ptr<JOB_EXPORT_SCH_SVG> svgJob = std::make_unique<JOB_EXPORT_SCH_SVG>( true );
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class EXPORT_SCH_SVG_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
EXPORT_SCH_SVG_COMMAND();
|
EXPORT_SCH_SVG_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ CLI::FP_EXPORT_SVG_COMMAND::FP_EXPORT_SVG_COMMAND() : EXPORT_PCB_BASE_COMMAND( "
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::FP_EXPORT_SVG_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::FP_EXPORT_SVG_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
std::unique_ptr<JOB_FP_EXPORT_SVG> svgJob = std::make_unique<JOB_FP_EXPORT_SVG>( true );
|
std::unique_ptr<JOB_FP_EXPORT_SVG> svgJob = std::make_unique<JOB_FP_EXPORT_SVG>( true );
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class FP_EXPORT_SVG_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
FP_EXPORT_SVG_COMMAND();
|
FP_EXPORT_SVG_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ CLI::FP_UPGRADE_COMMAND::FP_UPGRADE_COMMAND() : EXPORT_PCB_BASE_COMMAND( "upgrad
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::FP_UPGRADE_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::FP_UPGRADE_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
std::unique_ptr<JOB_FP_UPGRADE> fpJob = std::make_unique<JOB_FP_UPGRADE>( true );
|
std::unique_ptr<JOB_FP_UPGRADE> fpJob = std::make_unique<JOB_FP_UPGRADE>( true );
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class FP_UPGRADE_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
FP_UPGRADE_COMMAND();
|
FP_UPGRADE_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ CLI::SYM_EXPORT_SVG_COMMAND::SYM_EXPORT_SVG_COMMAND() : EXPORT_PCB_BASE_COMMAND(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::SYM_EXPORT_SVG_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::SYM_EXPORT_SVG_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
std::unique_ptr<JOB_SYM_EXPORT_SVG> svgJob = std::make_unique<JOB_SYM_EXPORT_SVG>( true );
|
std::unique_ptr<JOB_SYM_EXPORT_SVG> svgJob = std::make_unique<JOB_SYM_EXPORT_SVG>( true );
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class SYM_EXPORT_SVG_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
SYM_EXPORT_SVG_COMMAND();
|
SYM_EXPORT_SVG_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ CLI::SYM_UPGRADE_COMMAND::SYM_UPGRADE_COMMAND() : EXPORT_PCB_BASE_COMMAND( "upgr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CLI::SYM_UPGRADE_COMMAND::Perform( KIWAY& aKiway )
|
int CLI::SYM_UPGRADE_COMMAND::doPerform( KIWAY& aKiway )
|
||||||
{
|
{
|
||||||
std::unique_ptr<JOB_SYM_UPGRADE> symJob = std::make_unique<JOB_SYM_UPGRADE>( true );
|
std::unique_ptr<JOB_SYM_UPGRADE> symJob = std::make_unique<JOB_SYM_UPGRADE>( true );
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,8 @@ class SYM_UPGRADE_COMMAND : public EXPORT_PCB_BASE_COMMAND
|
||||||
public:
|
public:
|
||||||
SYM_UPGRADE_COMMAND();
|
SYM_UPGRADE_COMMAND();
|
||||||
|
|
||||||
int Perform( KIWAY& aKiway ) override;
|
protected:
|
||||||
|
int doPerform( KIWAY& aKiway ) override;
|
||||||
};
|
};
|
||||||
} // namespace CLI
|
} // namespace CLI
|
||||||
|
|
||||||
|
|
|
@ -108,6 +108,7 @@ PGM_KICAD& PgmTop()
|
||||||
return program;
|
return program;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct COMMAND_ENTRY
|
struct COMMAND_ENTRY
|
||||||
{
|
{
|
||||||
CLI::COMMAND* handler;
|
CLI::COMMAND* handler;
|
||||||
|
@ -119,6 +120,7 @@ struct COMMAND_ENTRY
|
||||||
handler( aHandler ), subCommands( aSub ){};
|
handler( aHandler ), subCommands( aSub ){};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static CLI::EXPORT_PCB_DRILL_COMMAND exportPcbDrillCmd{};
|
static CLI::EXPORT_PCB_DRILL_COMMAND exportPcbDrillCmd{};
|
||||||
static CLI::EXPORT_PCB_DXF_COMMAND exportPcbDxfCmd{};
|
static CLI::EXPORT_PCB_DXF_COMMAND exportPcbDxfCmd{};
|
||||||
static CLI::EXPORT_PCB_STEP_COMMAND exportPcbStepCmd{};
|
static CLI::EXPORT_PCB_STEP_COMMAND exportPcbStepCmd{};
|
||||||
|
@ -144,6 +146,7 @@ static CLI::SYM_EXPORT_COMMAND symExportCmd{};
|
||||||
static CLI::SYM_EXPORT_SVG_COMMAND symExportSvgCmd{};
|
static CLI::SYM_EXPORT_SVG_COMMAND symExportSvgCmd{};
|
||||||
static CLI::SYM_UPGRADE_COMMAND symUpgradeCmd{};
|
static CLI::SYM_UPGRADE_COMMAND symUpgradeCmd{};
|
||||||
|
|
||||||
|
|
||||||
static std::vector<COMMAND_ENTRY> commandStack = {
|
static std::vector<COMMAND_ENTRY> commandStack = {
|
||||||
{
|
{
|
||||||
&fpCmd,
|
&fpCmd,
|
||||||
|
@ -270,8 +273,6 @@ bool PGM_KICAD::OnPgmInit()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ARG_VERSION "--version"
|
|
||||||
#define ARG_HELP "--help"
|
|
||||||
|
|
||||||
int PGM_KICAD::OnPgmRun()
|
int PGM_KICAD::OnPgmRun()
|
||||||
{
|
{
|
||||||
|
@ -284,9 +285,9 @@ int PGM_KICAD::OnPgmRun()
|
||||||
.implicit_value( true )
|
.implicit_value( true )
|
||||||
.nargs( 0 );
|
.nargs( 0 );
|
||||||
|
|
||||||
argParser.add_argument( "-h", ARG_HELP )
|
argParser.add_argument( ARG_HELP_SHORT, ARG_HELP )
|
||||||
.default_value( false )
|
.default_value( false )
|
||||||
.help( UTF8STDSTR( _( "shows help message and exits" ) ) )
|
.help( UTF8STDSTR( ARG_HELP_DESC ) )
|
||||||
.implicit_value( true )
|
.implicit_value( true )
|
||||||
.nargs( 0 );
|
.nargs( 0 );
|
||||||
|
|
||||||
|
@ -316,13 +317,14 @@ int PGM_KICAD::OnPgmRun()
|
||||||
// arg parser uses a stream overload for printing the help
|
// arg parser uses a stream overload for printing the help
|
||||||
// we want to intercept so we can wxString the utf8 contents
|
// we want to intercept so we can wxString the utf8 contents
|
||||||
// because on windows our terminal codepage might not be utf8
|
// because on windows our terminal codepage might not be utf8
|
||||||
std::stringstream ss;
|
|
||||||
if( cliCmd )
|
if( cliCmd )
|
||||||
ss << cliCmd->handler->GetArgParser();
|
cliCmd->handler->PrintHelp();
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
ss << argParser;
|
ss << argParser;
|
||||||
|
|
||||||
wxPrintf( FROM_UTF8( ss.str().c_str() ) );
|
wxPrintf( FROM_UTF8( ss.str().c_str() ) );
|
||||||
|
}
|
||||||
|
|
||||||
return CLI::EXIT_CODES::ERR_ARGS;
|
return CLI::EXIT_CODES::ERR_ARGS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue