KiCad PCB EDA Suite
kicad_cli.cpp File Reference
#include <wx/filename.h>
#include <wx/log.h>
#include <wx/app.h>
#include <wx/stdpaths.h>
#include <wx/msgdlg.h>
#include <wx/wx.h>
#include <kiway.h>
#include <macros.h>
#include <paths.h>
#include <settings/settings_manager.h>
#include <settings/kicad_settings.h>
#include <systemdirsappend.h>
#include <trace_helpers.h>
#include <stdexcept>
#include "pgm_kicad.h"
#include "kicad_manager_frame.h"
#include <build_version.h>
#include <kiplatform/app.h>
#include <kiplatform/environment.h>
#include "cli/command_pcb.h"
#include "cli/command_pcb_export.h"
#include "cli/command_export_pcb_drill.h"
#include "cli/command_export_pcb_dxf.h"
#include "cli/command_export_pcb_gerber.h"
#include "cli/command_export_pcb_gerbers.h"
#include "cli/command_export_pcb_pdf.h"
#include "cli/command_export_pcb_pos.h"
#include "cli/command_export_pcb_svg.h"
#include "cli/command_export_pcb_step.h"
#include "cli/command_export_sch_pythonbom.h"
#include "cli/command_export_sch_netlist.h"
#include "cli/command_export_sch_pdf.h"
#include "cli/command_export_sch_svg.h"
#include "cli/command_fp.h"
#include "cli/command_fp_export.h"
#include "cli/command_fp_export_svg.h"
#include "cli/command_fp_upgrade.h"
#include "cli/command_sch.h"
#include "cli/command_sch_export.h"
#include "cli/command_sym.h"
#include "cli/command_sym_export.h"
#include "cli/command_sym_export_svg.h"
#include "cli/command_sym_upgrade.h"
#include "cli/command_version.h"
#include "cli/exit_codes.h"
#include "cli/cli_names.h"
#include <kiface_base.h>

Go to the source code of this file.

Classes

struct  COMMAND_ENTRY
 
struct  APP_KICAD_CLI
 Not publicly visible because most of the action is in PGM_KICAD these days. More...
 

Functions

KIFACE_BASEKiface ()
 Global KIFACE_BASE "get" accessor. More...
 
PGM_BASEPgm ()
 The global Program "get" accessor. More...
 
PGM_BASEPgmOrNull ()
 similar to PGM_BASE& Pgm(), but return a reference that can be nullptr when running a shared lib from a script, not from a kicad appl More...
 
PGM_KICADPgmTop ()
 
static void recurseArgParserBuild (argparse::ArgumentParser &aArgParser, COMMAND_ENTRY &aEntry)
 
static COMMAND_ENTRYrecurseArgParserSubCommandUsed (argparse::ArgumentParser &aArgParser, COMMAND_ENTRY &aEntry)
 
static void printHelp (argparse::ArgumentParser &argParser)
 
PROJECTPrj ()
 

Variables

static PGM_KICAD program
 
static CLI::EXPORT_PCB_DRILL_COMMAND exportPcbDrillCmd {}
 
static CLI::EXPORT_PCB_DXF_COMMAND exportPcbDxfCmd {}
 
static CLI::EXPORT_PCB_STEP_COMMAND exportPcbStepCmd {}
 
static CLI::EXPORT_PCB_SVG_COMMAND exportPcbSvgCmd {}
 
static CLI::EXPORT_PCB_PDF_COMMAND exportPcbPdfCmd {}
 
static CLI::EXPORT_PCB_POS_COMMAND exportPcbPosCmd {}
 
static CLI::EXPORT_PCB_GERBER_COMMAND exportPcbGerberCmd {}
 
static CLI::EXPORT_PCB_GERBERS_COMMAND exportPcbGerbersCmd {}
 
static CLI::EXPORT_PCB_COMMAND exportPcbCmd {}
 
static CLI::PCB_COMMAND pcbCmd {}
 
static CLI::EXPORT_SCH_COMMAND exportSchCmd {}
 
static CLI::SCH_COMMAND schCmd {}
 
static CLI::EXPORT_SCH_PYTHONBOM_COMMAND exportSchPythonBomCmd {}
 
static CLI::EXPORT_SCH_NETLIST_COMMAND exportSchNetlistCmd {}
 
static CLI::EXPORT_SCH_PDF_COMMAND exportSchPdfCmd {}
 
static CLI::EXPORT_SCH_SVG_COMMAND exportSchSvgCmd {}
 
static CLI::FP_COMMAND fpCmd {}
 
static CLI::FP_EXPORT_COMMAND fpExportCmd {}
 
static CLI::FP_EXPORT_SVG_COMMAND fpExportSvgCmd {}
 
static CLI::FP_UPGRADE_COMMAND fpUpgradeCmd {}
 
static CLI::SYM_COMMAND symCmd {}
 
static CLI::SYM_EXPORT_COMMAND symExportCmd {}
 
static CLI::SYM_EXPORT_SVG_COMMAND symExportSvgCmd {}
 
static CLI::SYM_UPGRADE_COMMAND symUpgradeCmd {}
 
static CLI::VERSION_COMMAND versionCmd {}
 
static std::vector< COMMAND_ENTRYcommandStack
 

Function Documentation

◆ Kiface()

KIFACE_BASE & Kiface ( )

Global KIFACE_BASE "get" accessor.

Definition at line 80 of file kicad_cli.cpp.

81{
82 // This function should never be called. It is only referenced from
83 // EDA_BASE_FRAME::config() and this is only provided to satisfy the linker,
84 // not to be actually called.
85 wxLogFatalError( wxT( "Unexpected call to Kiface() in kicad/kicad.cpp" ) );
86
87 throw std::logic_error( "Unexpected call to Kiface() in kicad/kicad.cpp" );
88}

◆ Pgm()

PGM_BASE & Pgm ( )

The global Program "get" accessor.

Implemented in: 1) common/single_top.cpp, 2) kicad/kicad.cpp, and 3) scripting/kiway.i

Definition at line 94 of file kicad_cli.cpp.

95{
96 return program;
97}
static PGM_KICAD program
Definition: kicad_cli.cpp:91

References program.

Referenced by APP_KICAD_CLI::FilterEvent().

◆ PgmOrNull()

PGM_BASE * PgmOrNull ( )

similar to PGM_BASE& Pgm(), but return a reference that can be nullptr when running a shared lib from a script, not from a kicad appl

Definition at line 101 of file kicad_cli.cpp.

102{
103 return &program;
104}

References program.

◆ PgmTop()

PGM_KICAD & PgmTop ( )

Definition at line 107 of file kicad_cli.cpp.

108{
109 return program;
110}

References program.

◆ printHelp()

static void printHelp ( argparse::ArgumentParser &  argParser)
static

Definition at line 252 of file kicad_cli.cpp.

253{
254 std::stringstream ss;
255 ss << argParser;
256 wxPrintf( FROM_UTF8( ss.str().c_str() ) );
257}
static wxString FROM_UTF8(const char *cstring)
Convert a UTF8 encoded C string to a wxString for all wxWidgets build modes.
Definition: macros.h:110

References FROM_UTF8().

◆ Prj()

PROJECT & Prj ( )

Definition at line 587 of file kicad_cli.cpp.

588{
589 return Kiway.Prj();
590}
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:192
KIWAY Kiway

References Kiway, and KIWAY::Prj().

◆ recurseArgParserBuild()

static void recurseArgParserBuild ( argparse::ArgumentParser &  aArgParser,
COMMAND_ENTRY aEntry 
)
static

Definition at line 219 of file kicad_cli.cpp.

220{
221 aArgParser.add_subparser( aEntry.handler->GetArgParser() );
222
223 for( COMMAND_ENTRY& subEntry : aEntry.subCommands )
224 {
225 recurseArgParserBuild( aEntry.handler->GetArgParser(), subEntry );
226 }
227}
argparse::ArgumentParser & GetArgParser()
Definition: command.h:54
static void recurseArgParserBuild(argparse::ArgumentParser &aArgParser, COMMAND_ENTRY &aEntry)
Definition: kicad_cli.cpp:219
Definition: kicad_cli.cpp:114
CLI::COMMAND * handler
Definition: kicad_cli.cpp:115
std::vector< COMMAND_ENTRY > subCommands
Definition: kicad_cli.cpp:117

References CLI::COMMAND::GetArgParser(), COMMAND_ENTRY::handler, recurseArgParserBuild(), and COMMAND_ENTRY::subCommands.

Referenced by recurseArgParserBuild().

◆ recurseArgParserSubCommandUsed()

static COMMAND_ENTRY * recurseArgParserSubCommandUsed ( argparse::ArgumentParser &  aArgParser,
COMMAND_ENTRY aEntry 
)
static

Definition at line 230 of file kicad_cli.cpp.

232{
233 COMMAND_ENTRY* cliCmd = nullptr;
234
235 if( aArgParser.is_subcommand_used( aEntry.handler->GetName() ) )
236 {
237 for( COMMAND_ENTRY& subentry : aEntry.subCommands )
238 {
239 cliCmd = recurseArgParserSubCommandUsed( aEntry.handler->GetArgParser(), subentry );
240 if( cliCmd )
241 break;
242 }
243
244 if(!cliCmd)
245 cliCmd = &aEntry;
246 }
247
248 return cliCmd;
249}
const std::string & GetName() const
Definition: command.h:55
static COMMAND_ENTRY * recurseArgParserSubCommandUsed(argparse::ArgumentParser &aArgParser, COMMAND_ENTRY &aEntry)
Definition: kicad_cli.cpp:230

References CLI::COMMAND::GetArgParser(), CLI::COMMAND::GetName(), COMMAND_ENTRY::handler, recurseArgParserSubCommandUsed(), and COMMAND_ENTRY::subCommands.

Referenced by recurseArgParserSubCommandUsed().

Variable Documentation

◆ commandStack

std::vector<COMMAND_ENTRY> commandStack
static

Definition at line 152 of file kicad_cli.cpp.

◆ exportPcbCmd

CLI::EXPORT_PCB_COMMAND exportPcbCmd {}
static

Definition at line 133 of file kicad_cli.cpp.

◆ exportPcbDrillCmd

CLI::EXPORT_PCB_DRILL_COMMAND exportPcbDrillCmd {}
static

Definition at line 125 of file kicad_cli.cpp.

◆ exportPcbDxfCmd

CLI::EXPORT_PCB_DXF_COMMAND exportPcbDxfCmd {}
static

Definition at line 126 of file kicad_cli.cpp.

◆ exportPcbGerberCmd

CLI::EXPORT_PCB_GERBER_COMMAND exportPcbGerberCmd {}
static

Definition at line 131 of file kicad_cli.cpp.

◆ exportPcbGerbersCmd

CLI::EXPORT_PCB_GERBERS_COMMAND exportPcbGerbersCmd {}
static

Definition at line 132 of file kicad_cli.cpp.

◆ exportPcbPdfCmd

CLI::EXPORT_PCB_PDF_COMMAND exportPcbPdfCmd {}
static

Definition at line 129 of file kicad_cli.cpp.

◆ exportPcbPosCmd

CLI::EXPORT_PCB_POS_COMMAND exportPcbPosCmd {}
static

Definition at line 130 of file kicad_cli.cpp.

◆ exportPcbStepCmd

CLI::EXPORT_PCB_STEP_COMMAND exportPcbStepCmd {}
static

Definition at line 127 of file kicad_cli.cpp.

◆ exportPcbSvgCmd

CLI::EXPORT_PCB_SVG_COMMAND exportPcbSvgCmd {}
static

Definition at line 128 of file kicad_cli.cpp.

◆ exportSchCmd

CLI::EXPORT_SCH_COMMAND exportSchCmd {}
static

Definition at line 135 of file kicad_cli.cpp.

◆ exportSchNetlistCmd

CLI::EXPORT_SCH_NETLIST_COMMAND exportSchNetlistCmd {}
static

Definition at line 138 of file kicad_cli.cpp.

◆ exportSchPdfCmd

CLI::EXPORT_SCH_PDF_COMMAND exportSchPdfCmd {}
static

Definition at line 139 of file kicad_cli.cpp.

◆ exportSchPythonBomCmd

CLI::EXPORT_SCH_PYTHONBOM_COMMAND exportSchPythonBomCmd {}
static

Definition at line 137 of file kicad_cli.cpp.

◆ exportSchSvgCmd

CLI::EXPORT_SCH_SVG_COMMAND exportSchSvgCmd {}
static

Definition at line 140 of file kicad_cli.cpp.

◆ fpCmd

CLI::FP_COMMAND fpCmd {}
static

Definition at line 141 of file kicad_cli.cpp.

◆ fpExportCmd

CLI::FP_EXPORT_COMMAND fpExportCmd {}
static

Definition at line 142 of file kicad_cli.cpp.

◆ fpExportSvgCmd

CLI::FP_EXPORT_SVG_COMMAND fpExportSvgCmd {}
static

Definition at line 143 of file kicad_cli.cpp.

◆ fpUpgradeCmd

CLI::FP_UPGRADE_COMMAND fpUpgradeCmd {}
static

Definition at line 144 of file kicad_cli.cpp.

◆ pcbCmd

CLI::PCB_COMMAND pcbCmd {}
static

Definition at line 134 of file kicad_cli.cpp.

◆ program

◆ schCmd

CLI::SCH_COMMAND schCmd {}
static

Definition at line 136 of file kicad_cli.cpp.

◆ symCmd

CLI::SYM_COMMAND symCmd {}
static

Definition at line 145 of file kicad_cli.cpp.

◆ symExportCmd

CLI::SYM_EXPORT_COMMAND symExportCmd {}
static

Definition at line 146 of file kicad_cli.cpp.

◆ symExportSvgCmd

CLI::SYM_EXPORT_SVG_COMMAND symExportSvgCmd {}
static

Definition at line 147 of file kicad_cli.cpp.

◆ symUpgradeCmd

CLI::SYM_UPGRADE_COMMAND symUpgradeCmd {}
static

Definition at line 148 of file kicad_cli.cpp.

◆ versionCmd

CLI::VERSION_COMMAND versionCmd {}
static

Definition at line 149 of file kicad_cli.cpp.