KiCad PCB EDA Suite
Loading...
Searching...
No Matches
kicad_cli.cpp File Reference
#include <wx/filename.h>
#include <wx/log.h>
#include <wx/stdpaths.h>
#include <wx/wxcrtvararg.h>
#include <kiway.h>
#include <libraries/library_manager.h>
#include <string_utils.h>
#include <paths.h>
#include <settings/settings_manager.h>
#include <settings/kicad_settings.h>
#include <systemdirsappend.h>
#include <trace_helpers.h>
#include <cctype>
#include <set>
#include <stdexcept>
#include "pgm_kicad.h"
#include "kicad_manager_frame.h"
#include <build_version.h>
#include <kiplatform/app.h>
#include <kiplatform/environment.h>
#include <locale_io.h>
#include "cli/command_jobset.h"
#include "cli/command_jobset_run.h"
#include "cli/command_pcb.h"
#include "cli/command_pcb_export.h"
#include "cli/command_pcb_drc.h"
#include "cli/command_pcb_render.h"
#include "cli/command_pcb_export_3d.h"
#include "cli/command_pcb_export_drill.h"
#include "cli/command_pcb_export_dxf.h"
#include "cli/command_pcb_export_gerbers.h"
#include "cli/command_pcb_export_hpgl.h"
#include "cli/command_pcb_export_gencad.h"
#include "cli/command_pcb_export_ipc2581.h"
#include "cli/command_pcb_export_ipcd356.h"
#include "cli/command_pcb_export_odb.h"
#include "cli/command_pcb_export_pdf.h"
#include "cli/command_pcb_export_pos.h"
#include "cli/command_pcb_export_ps.h"
#include "cli/command_pcb_export_stats.h"
#include "cli/command_pcb_export_svg.h"
#include "cli/command_sch_export_bom.h"
#include "cli/command_sch_export_pythonbom.h"
#include "cli/command_sch_export_netlist.h"
#include "cli/command_sch_export_plot.h"
#include "cli/command_pcb_upgrade.h"
#include "cli/command_pcb_import.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_erc.h"
#include "cli/command_sch_export.h"
#include "cli/command_sch_upgrade.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_gerber.h"
#include "cli/command_gerber_convert.h"
#include "cli/command_gerber_convert_png.h"
#include "cli/command_gerber_info.h"
#include "cli/command_gerber_diff.h"
#include "cli/command_version.h"
#include "cli/exit_codes.h"
#include <wx/app.h>
#include <kiface_base.h>
#include <thread_pool.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.
 
static void recurseArgParserBuild (argparse::ArgumentParser &aArgParser, COMMAND_ENTRY &aEntry)
 
static COMMAND_ENTRYrecurseArgParserSubCommandUsed (argparse::ArgumentParser &aArgParser, COMMAND_ENTRY &aEntry)
 
static void printHelp (argparse::ArgumentParser &argParser)
 
static bool looksLikeNegativeVectorValue (const std::string &aValue)
 Check if a string looks like a numeric vector value that happens to start with a minus sign.
 
static std::vector< std::string > preprocessArgs (int argc, char **argv)
 Pre-process command line arguments to handle negative numeric values.
 
KIWAY Kiway (KFCTL_CPP_PROJECT_SUITE|KFCTL_CLI)
 
PROJECTPrj ()
 

Variables

static CLI::JOBSET_COMMAND jobsetCmd {}
 
static CLI::JOBSET_RUN_COMMAND jobsetRunCmd {}
 
static CLI::PCB_COMMAND pcbCmd {}
 
static CLI::PCB_DRC_COMMAND pcbDrcCmd {}
 
static CLI::PCB_RENDER_COMMAND pcbRenderCmd {}
 
static CLI::PCB_UPGRADE_COMMAND pcbUpgradeCmd {}
 
static CLI::PCB_IMPORT_COMMAND pcbImportCmd {}
 
static CLI::PCB_EXPORT_DRILL_COMMAND exportPcbDrillCmd {}
 
static CLI::PCB_EXPORT_DXF_COMMAND exportPcbDxfCmd {}
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbGlbCmd
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbStepCmd
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbBrepCmd
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbXaoCmd
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbVrmlCmd
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbPlyCmd
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbStlCmd
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbStepzCmd
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbU3DCmd
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcb3DPDFCmd
 
static CLI::PCB_EXPORT_SVG_COMMAND exportPcbSvgCmd {}
 
static CLI::PCB_EXPORT_PDF_COMMAND exportPcbPdfCmd {}
 
static CLI::PCB_EXPORT_POS_COMMAND exportPcbPosCmd {}
 
static CLI::PCB_EXPORT_PS_COMMAND exportPcbPsCmd {}
 
static CLI::PCB_EXPORT_STATS_COMMAND exportPcbStatsCmd {}
 
static CLI::PCB_EXPORT_GERBERS_COMMAND exportPcbGerbersCmd {}
 
static CLI::PCB_EXPORT_HPGL_COMMAND exportPcbHpglCmd {}
 
static CLI::PCB_EXPORT_GENCAD_COMMAND exportPcbGencadCmd {}
 
static CLI::PCB_EXPORT_IPC2581_COMMAND exportPcbIpc2581Cmd {}
 
static CLI::PCB_EXPORT_IPCD356_COMMAND exportPcbIpcD356Cmd {}
 
static CLI::PCB_EXPORT_ODB_COMMAND exportPcbOdbCmd {}
 
static CLI::PCB_EXPORT_COMMAND exportPcbCmd {}
 
static CLI::SCH_EXPORT_COMMAND exportSchCmd {}
 
static CLI::SCH_COMMAND schCmd {}
 
static CLI::SCH_ERC_COMMAND schErcCmd {}
 
static CLI::SCH_UPGRADE_COMMAND schUpgradeCmd {}
 
static CLI::SCH_EXPORT_BOM_COMMAND exportSchBomCmd {}
 
static CLI::SCH_EXPORT_PYTHONBOM_COMMAND exportSchPythonBomCmd {}
 
static CLI::SCH_EXPORT_NETLIST_COMMAND exportSchNetlistCmd {}
 
static CLI::SCH_EXPORT_PLOT_COMMAND exportSchDxfCmd
 
static CLI::SCH_EXPORT_PLOT_COMMAND exportSchHpglCmd
 
static CLI::SCH_EXPORT_PLOT_COMMAND exportSchPdfCmd
 
static CLI::SCH_EXPORT_PLOT_COMMAND exportSchPostscriptCmd
 
static CLI::SCH_EXPORT_PLOT_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::GERBER_COMMAND gerberCmd {}
 
static CLI::GERBER_CONVERT_COMMAND gerberConvertCmd {}
 
static CLI::GERBER_CONVERT_PNG_COMMAND gerberConvertPngCmd {}
 
static CLI::GERBER_INFO_COMMAND gerberInfoCmd {}
 
static CLI::GERBER_DIFF_COMMAND gerberDiffCmd {}
 
static CLI::VERSION_COMMAND versionCmd {}
 
static std::vector< COMMAND_ENTRYcommandStack
 
static PGM_KICAD program
 

Function Documentation

◆ Kiface()

KIFACE_BASE & Kiface ( )

Global KIFACE_BASE "get" accessor.

Definition at line 111 of file kicad_cli.cpp.

◆ Kiway()

KIWAY Kiway ( KFCTL_CPP_PROJECT_SUITE| KFCTL_CLI)

◆ looksLikeNegativeVectorValue()

static bool looksLikeNegativeVectorValue ( const std::string & aValue)
static

Check if a string looks like a numeric vector value that happens to start with a minus sign.

This handles values like "-45,0,45" or "-3.5,0,1.2" which are valid vector arguments but get misinterpreted by argparse as unknown options because they start with '-'.

Definition at line 397 of file kicad_cli.cpp.

Referenced by preprocessArgs().

◆ preprocessArgs()

static std::vector< std::string > preprocessArgs ( int argc,
char ** argv )
static

Pre-process command line arguments to handle negative numeric values.

The argparse library interprets values starting with '-' as option flags. For arguments that accept vector values (like –rotate, –pan, –pivot), we wrap negative values in single quotes to prevent argparse from treating them as options. The parsing code in command_pcb_render.cpp already strips these quotes via getToVector3().

Example: "--rotate -45,0,45" becomes "--rotate='-45,0,45'"

Definition at line 428 of file kicad_cli.cpp.

References looksLikeNegativeVectorValue(), next(), and result.

◆ printHelp()

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

Definition at line 383 of file kicad_cli.cpp.

References From_UTF8().

◆ Prj()

PROJECT & Prj ( )

Definition at line 770 of file kicad_cli.cpp.

References Kiway, and Prj().

◆ recurseArgParserBuild()

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

◆ recurseArgParserSubCommandUsed()

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

Variable Documentation

◆ commandStack

std::vector<COMMAND_ENTRY> commandStack
static

Definition at line 213 of file kicad_cli.cpp.

◆ exportPcb3DPDFCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcb3DPDFCmd
static
Initial value:
{ "3dpdf", UTF8STDSTR( _( "Export PDF" ) ),
#define UTF8STDSTR(s)
Definition command.h:27
#define _(s)

Definition at line 162 of file kicad_cli.cpp.

◆ exportPcbBrepCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbBrepCmd
static
Initial value:

Definition at line 148 of file kicad_cli.cpp.

◆ exportPcbCmd

CLI::PCB_EXPORT_COMMAND exportPcbCmd {}
static

Definition at line 175 of file kicad_cli.cpp.

◆ exportPcbDrillCmd

CLI::PCB_EXPORT_DRILL_COMMAND exportPcbDrillCmd {}
static

Definition at line 142 of file kicad_cli.cpp.

◆ exportPcbDxfCmd

CLI::PCB_EXPORT_DXF_COMMAND exportPcbDxfCmd {}
static

Definition at line 143 of file kicad_cli.cpp.

◆ exportPcbGencadCmd

CLI::PCB_EXPORT_GENCAD_COMMAND exportPcbGencadCmd {}
static

Definition at line 171 of file kicad_cli.cpp.

◆ exportPcbGerbersCmd

CLI::PCB_EXPORT_GERBERS_COMMAND exportPcbGerbersCmd {}
static

Definition at line 169 of file kicad_cli.cpp.

◆ exportPcbGlbCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbGlbCmd
static
Initial value:
{ "glb", UTF8STDSTR( _( "Export GLB (binary GLTF)" ) ),

Definition at line 144 of file kicad_cli.cpp.

◆ exportPcbHpglCmd

CLI::PCB_EXPORT_HPGL_COMMAND exportPcbHpglCmd {}
static

Definition at line 170 of file kicad_cli.cpp.

◆ exportPcbIpc2581Cmd

CLI::PCB_EXPORT_IPC2581_COMMAND exportPcbIpc2581Cmd {}
static

Definition at line 172 of file kicad_cli.cpp.

◆ exportPcbIpcD356Cmd

CLI::PCB_EXPORT_IPCD356_COMMAND exportPcbIpcD356Cmd {}
static

Definition at line 173 of file kicad_cli.cpp.

◆ exportPcbOdbCmd

CLI::PCB_EXPORT_ODB_COMMAND exportPcbOdbCmd {}
static

Definition at line 174 of file kicad_cli.cpp.

◆ exportPcbPdfCmd

CLI::PCB_EXPORT_PDF_COMMAND exportPcbPdfCmd {}
static

Definition at line 165 of file kicad_cli.cpp.

◆ exportPcbPlyCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbPlyCmd
static
Initial value:

Definition at line 154 of file kicad_cli.cpp.

◆ exportPcbPosCmd

CLI::PCB_EXPORT_POS_COMMAND exportPcbPosCmd {}
static

Definition at line 166 of file kicad_cli.cpp.

◆ exportPcbPsCmd

CLI::PCB_EXPORT_PS_COMMAND exportPcbPsCmd {}
static

Definition at line 167 of file kicad_cli.cpp.

◆ exportPcbStatsCmd

CLI::PCB_EXPORT_STATS_COMMAND exportPcbStatsCmd {}
static

Definition at line 168 of file kicad_cli.cpp.

◆ exportPcbStepCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbStepCmd
static
Initial value:

Definition at line 146 of file kicad_cli.cpp.

◆ exportPcbStepzCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbStepzCmd
static
Initial value:

Definition at line 158 of file kicad_cli.cpp.

◆ exportPcbStlCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbStlCmd
static
Initial value:

Definition at line 156 of file kicad_cli.cpp.

◆ exportPcbSvgCmd

CLI::PCB_EXPORT_SVG_COMMAND exportPcbSvgCmd {}
static

Definition at line 164 of file kicad_cli.cpp.

◆ exportPcbU3DCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbU3DCmd
static
Initial value:

Definition at line 160 of file kicad_cli.cpp.

◆ exportPcbVrmlCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbVrmlCmd
static
Initial value:

Definition at line 152 of file kicad_cli.cpp.

◆ exportPcbXaoCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbXaoCmd
static
Initial value:

Definition at line 150 of file kicad_cli.cpp.

◆ exportSchBomCmd

CLI::SCH_EXPORT_BOM_COMMAND exportSchBomCmd {}
static

Definition at line 180 of file kicad_cli.cpp.

◆ exportSchCmd

CLI::SCH_EXPORT_COMMAND exportSchCmd {}
static

Definition at line 176 of file kicad_cli.cpp.

◆ exportSchDxfCmd

CLI::SCH_EXPORT_PLOT_COMMAND exportSchDxfCmd
static
Initial value:

Definition at line 183 of file kicad_cli.cpp.

◆ exportSchHpglCmd

CLI::SCH_EXPORT_PLOT_COMMAND exportSchHpglCmd
static
Initial value:

Definition at line 185 of file kicad_cli.cpp.

◆ exportSchNetlistCmd

CLI::SCH_EXPORT_NETLIST_COMMAND exportSchNetlistCmd {}
static

Definition at line 182 of file kicad_cli.cpp.

◆ exportSchPdfCmd

CLI::SCH_EXPORT_PLOT_COMMAND exportSchPdfCmd
static
Initial value:

Definition at line 187 of file kicad_cli.cpp.

◆ exportSchPostscriptCmd

CLI::SCH_EXPORT_PLOT_COMMAND exportSchPostscriptCmd
static
Initial value:

Definition at line 189 of file kicad_cli.cpp.

◆ exportSchPythonBomCmd

CLI::SCH_EXPORT_PYTHONBOM_COMMAND exportSchPythonBomCmd {}
static

Definition at line 181 of file kicad_cli.cpp.

◆ exportSchSvgCmd

CLI::SCH_EXPORT_PLOT_COMMAND exportSchSvgCmd
static
Initial value:

Definition at line 191 of file kicad_cli.cpp.

◆ fpCmd

CLI::FP_COMMAND fpCmd {}
static

Definition at line 193 of file kicad_cli.cpp.

◆ fpExportCmd

CLI::FP_EXPORT_COMMAND fpExportCmd {}
static

Definition at line 194 of file kicad_cli.cpp.

◆ fpExportSvgCmd

CLI::FP_EXPORT_SVG_COMMAND fpExportSvgCmd {}
static

Definition at line 195 of file kicad_cli.cpp.

◆ fpUpgradeCmd

CLI::FP_UPGRADE_COMMAND fpUpgradeCmd {}
static

Definition at line 196 of file kicad_cli.cpp.

◆ gerberCmd

CLI::GERBER_COMMAND gerberCmd {}
static

Definition at line 201 of file kicad_cli.cpp.

◆ gerberConvertCmd

CLI::GERBER_CONVERT_COMMAND gerberConvertCmd {}
static

Definition at line 202 of file kicad_cli.cpp.

◆ gerberConvertPngCmd

CLI::GERBER_CONVERT_PNG_COMMAND gerberConvertPngCmd {}
static

Definition at line 203 of file kicad_cli.cpp.

◆ gerberDiffCmd

CLI::GERBER_DIFF_COMMAND gerberDiffCmd {}
static

Definition at line 205 of file kicad_cli.cpp.

◆ gerberInfoCmd

CLI::GERBER_INFO_COMMAND gerberInfoCmd {}
static

Definition at line 204 of file kicad_cli.cpp.

◆ jobsetCmd

CLI::JOBSET_COMMAND jobsetCmd {}
static

Definition at line 135 of file kicad_cli.cpp.

◆ jobsetRunCmd

CLI::JOBSET_RUN_COMMAND jobsetRunCmd {}
static

Definition at line 136 of file kicad_cli.cpp.

◆ pcbCmd

CLI::PCB_COMMAND pcbCmd {}
static

Definition at line 137 of file kicad_cli.cpp.

◆ pcbDrcCmd

CLI::PCB_DRC_COMMAND pcbDrcCmd {}
static

Definition at line 138 of file kicad_cli.cpp.

◆ pcbImportCmd

CLI::PCB_IMPORT_COMMAND pcbImportCmd {}
static

Definition at line 141 of file kicad_cli.cpp.

◆ pcbRenderCmd

CLI::PCB_RENDER_COMMAND pcbRenderCmd {}
static

Definition at line 139 of file kicad_cli.cpp.

◆ pcbUpgradeCmd

CLI::PCB_UPGRADE_COMMAND pcbUpgradeCmd {}
static

Definition at line 140 of file kicad_cli.cpp.

◆ program

◆ schCmd

CLI::SCH_COMMAND schCmd {}
static

Definition at line 177 of file kicad_cli.cpp.

◆ schErcCmd

CLI::SCH_ERC_COMMAND schErcCmd {}
static

Definition at line 178 of file kicad_cli.cpp.

◆ schUpgradeCmd

CLI::SCH_UPGRADE_COMMAND schUpgradeCmd {}
static

Definition at line 179 of file kicad_cli.cpp.

◆ symCmd

CLI::SYM_COMMAND symCmd {}
static

Definition at line 197 of file kicad_cli.cpp.

◆ symExportCmd

CLI::SYM_EXPORT_COMMAND symExportCmd {}
static

Definition at line 198 of file kicad_cli.cpp.

◆ symExportSvgCmd

CLI::SYM_EXPORT_SVG_COMMAND symExportSvgCmd {}
static

Definition at line 199 of file kicad_cli.cpp.

◆ symUpgradeCmd

CLI::SYM_UPGRADE_COMMAND symUpgradeCmd {}
static

Definition at line 200 of file kicad_cli.cpp.

◆ versionCmd

CLI::VERSION_COMMAND versionCmd {}
static

Definition at line 206 of file kicad_cli.cpp.