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_gerber.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_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_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_EXPORT_DRILL_COMMAND exportPcbDrillCmd {}
 
static CLI::PCB_EXPORT_DXF_COMMAND exportPcbDxfCmd {}
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbGlbCmd { "glb", UTF8STDSTR( _( "Export GLB (binary GLTF)" ) ), JOB_EXPORT_PCB_3D::FORMAT::GLB }
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbStepCmd { "step", UTF8STDSTR( _( "Export STEP" ) ), JOB_EXPORT_PCB_3D::FORMAT::STEP }
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbBrepCmd { "brep", UTF8STDSTR( _( "Export BREP" ) ), JOB_EXPORT_PCB_3D::FORMAT::BREP }
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbXaoCmd { "xao", UTF8STDSTR( _( "Export XAO" ) ), JOB_EXPORT_PCB_3D::FORMAT::XAO }
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbVrmlCmd { "vrml", UTF8STDSTR( _( "Export VRML" ) ), JOB_EXPORT_PCB_3D::FORMAT::VRML }
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbPlyCmd { "ply", UTF8STDSTR( _( "Export PLY" ) ), JOB_EXPORT_PCB_3D::FORMAT::PLY }
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbStlCmd { "stl", UTF8STDSTR( _( "Export STL" ) ), JOB_EXPORT_PCB_3D::FORMAT::STL }
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbStepzCmd { "stpz", UTF8STDSTR( _( "Export STEPZ" ) ), JOB_EXPORT_PCB_3D::FORMAT::STEPZ }
 
static CLI::PCB_EXPORT_3D_COMMAND exportPcbU3DCmd { "u3d", UTF8STDSTR( _( "Export U3D" ) ), JOB_EXPORT_PCB_3D::FORMAT::U3D }
 
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_GERBER_COMMAND exportPcbGerberCmd {}
 
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 { "dxf", UTF8STDSTR( _( "Export DXF" ) ), SCH_PLOT_FORMAT::DXF }
 
static CLI::SCH_EXPORT_PLOT_COMMAND exportSchHpglCmd { "hpgl", UTF8STDSTR( _( "Export HPGL" ) ), SCH_PLOT_FORMAT::HPGL }
 
static CLI::SCH_EXPORT_PLOT_COMMAND exportSchPdfCmd { "pdf", UTF8STDSTR( _( "Export PDF" ) ), SCH_PLOT_FORMAT::PDF, false }
 
static CLI::SCH_EXPORT_PLOT_COMMAND exportSchPostscriptCmd { "ps", UTF8STDSTR( _( "Export PS" ) ), SCH_PLOT_FORMAT::POST }
 
static CLI::SCH_EXPORT_PLOT_COMMAND exportSchSvgCmd { "svg", UTF8STDSTR( _( "Export SVG" ) ), SCH_PLOT_FORMAT::SVG }
 
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
 
static PGM_KICAD program
 

Function Documentation

◆ Kiface()

KIFACE_BASE & Kiface ( )

Global KIFACE_BASE "get" accessor.

Definition at line 102 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 338 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 369 of file kicad_cli.cpp.

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

◆ printHelp()

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

Definition at line 324 of file kicad_cli.cpp.

References From_UTF8().

◆ Prj()

PROJECT & Prj ( )

Definition at line 718 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 180 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 141 of file kicad_cli.cpp.

◆ exportPcbBrepCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbBrepCmd { "brep", UTF8STDSTR( _( "Export BREP" ) ), JOB_EXPORT_PCB_3D::FORMAT::BREP }
static

Definition at line 134 of file kicad_cli.cpp.

◆ exportPcbCmd

CLI::PCB_EXPORT_COMMAND exportPcbCmd {}
static

Definition at line 155 of file kicad_cli.cpp.

◆ exportPcbDrillCmd

CLI::PCB_EXPORT_DRILL_COMMAND exportPcbDrillCmd {}
static

Definition at line 130 of file kicad_cli.cpp.

◆ exportPcbDxfCmd

CLI::PCB_EXPORT_DXF_COMMAND exportPcbDxfCmd {}
static

Definition at line 131 of file kicad_cli.cpp.

◆ exportPcbGencadCmd

CLI::PCB_EXPORT_GENCAD_COMMAND exportPcbGencadCmd {}
static

Definition at line 151 of file kicad_cli.cpp.

◆ exportPcbGerberCmd

CLI::PCB_EXPORT_GERBER_COMMAND exportPcbGerberCmd {}
static

Definition at line 148 of file kicad_cli.cpp.

◆ exportPcbGerbersCmd

CLI::PCB_EXPORT_GERBERS_COMMAND exportPcbGerbersCmd {}
static

Definition at line 149 of file kicad_cli.cpp.

◆ exportPcbGlbCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbGlbCmd { "glb", UTF8STDSTR( _( "Export GLB (binary GLTF)" ) ), JOB_EXPORT_PCB_3D::FORMAT::GLB }
static

Definition at line 132 of file kicad_cli.cpp.

◆ exportPcbHpglCmd

CLI::PCB_EXPORT_HPGL_COMMAND exportPcbHpglCmd {}
static

Definition at line 150 of file kicad_cli.cpp.

◆ exportPcbIpc2581Cmd

CLI::PCB_EXPORT_IPC2581_COMMAND exportPcbIpc2581Cmd {}
static

Definition at line 152 of file kicad_cli.cpp.

◆ exportPcbIpcD356Cmd

CLI::PCB_EXPORT_IPCD356_COMMAND exportPcbIpcD356Cmd {}
static

Definition at line 153 of file kicad_cli.cpp.

◆ exportPcbOdbCmd

CLI::PCB_EXPORT_ODB_COMMAND exportPcbOdbCmd {}
static

Definition at line 154 of file kicad_cli.cpp.

◆ exportPcbPdfCmd

CLI::PCB_EXPORT_PDF_COMMAND exportPcbPdfCmd {}
static

Definition at line 144 of file kicad_cli.cpp.

◆ exportPcbPlyCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbPlyCmd { "ply", UTF8STDSTR( _( "Export PLY" ) ), JOB_EXPORT_PCB_3D::FORMAT::PLY }
static

Definition at line 137 of file kicad_cli.cpp.

◆ exportPcbPosCmd

CLI::PCB_EXPORT_POS_COMMAND exportPcbPosCmd {}
static

Definition at line 145 of file kicad_cli.cpp.

◆ exportPcbPsCmd

CLI::PCB_EXPORT_PS_COMMAND exportPcbPsCmd {}
static

Definition at line 146 of file kicad_cli.cpp.

◆ exportPcbStatsCmd

CLI::PCB_EXPORT_STATS_COMMAND exportPcbStatsCmd {}
static

Definition at line 147 of file kicad_cli.cpp.

◆ exportPcbStepCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbStepCmd { "step", UTF8STDSTR( _( "Export STEP" ) ), JOB_EXPORT_PCB_3D::FORMAT::STEP }
static

Definition at line 133 of file kicad_cli.cpp.

◆ exportPcbStepzCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbStepzCmd { "stpz", UTF8STDSTR( _( "Export STEPZ" ) ), JOB_EXPORT_PCB_3D::FORMAT::STEPZ }
static

Definition at line 139 of file kicad_cli.cpp.

◆ exportPcbStlCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbStlCmd { "stl", UTF8STDSTR( _( "Export STL" ) ), JOB_EXPORT_PCB_3D::FORMAT::STL }
static

Definition at line 138 of file kicad_cli.cpp.

◆ exportPcbSvgCmd

CLI::PCB_EXPORT_SVG_COMMAND exportPcbSvgCmd {}
static

Definition at line 143 of file kicad_cli.cpp.

◆ exportPcbU3DCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbU3DCmd { "u3d", UTF8STDSTR( _( "Export U3D" ) ), JOB_EXPORT_PCB_3D::FORMAT::U3D }
static

Definition at line 140 of file kicad_cli.cpp.

◆ exportPcbVrmlCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbVrmlCmd { "vrml", UTF8STDSTR( _( "Export VRML" ) ), JOB_EXPORT_PCB_3D::FORMAT::VRML }
static

Definition at line 136 of file kicad_cli.cpp.

◆ exportPcbXaoCmd

CLI::PCB_EXPORT_3D_COMMAND exportPcbXaoCmd { "xao", UTF8STDSTR( _( "Export XAO" ) ), JOB_EXPORT_PCB_3D::FORMAT::XAO }
static

Definition at line 135 of file kicad_cli.cpp.

◆ exportSchBomCmd

CLI::SCH_EXPORT_BOM_COMMAND exportSchBomCmd {}
static

Definition at line 160 of file kicad_cli.cpp.

◆ exportSchCmd

CLI::SCH_EXPORT_COMMAND exportSchCmd {}
static

Definition at line 156 of file kicad_cli.cpp.

◆ exportSchDxfCmd

CLI::SCH_EXPORT_PLOT_COMMAND exportSchDxfCmd { "dxf", UTF8STDSTR( _( "Export DXF" ) ), SCH_PLOT_FORMAT::DXF }
static

Definition at line 163 of file kicad_cli.cpp.

◆ exportSchHpglCmd

CLI::SCH_EXPORT_PLOT_COMMAND exportSchHpglCmd { "hpgl", UTF8STDSTR( _( "Export HPGL" ) ), SCH_PLOT_FORMAT::HPGL }
static

Definition at line 164 of file kicad_cli.cpp.

◆ exportSchNetlistCmd

CLI::SCH_EXPORT_NETLIST_COMMAND exportSchNetlistCmd {}
static

Definition at line 162 of file kicad_cli.cpp.

◆ exportSchPdfCmd

CLI::SCH_EXPORT_PLOT_COMMAND exportSchPdfCmd { "pdf", UTF8STDSTR( _( "Export PDF" ) ), SCH_PLOT_FORMAT::PDF, false }
static

Definition at line 165 of file kicad_cli.cpp.

◆ exportSchPostscriptCmd

CLI::SCH_EXPORT_PLOT_COMMAND exportSchPostscriptCmd { "ps", UTF8STDSTR( _( "Export PS" ) ), SCH_PLOT_FORMAT::POST }
static

Definition at line 166 of file kicad_cli.cpp.

◆ exportSchPythonBomCmd

CLI::SCH_EXPORT_PYTHONBOM_COMMAND exportSchPythonBomCmd {}
static

Definition at line 161 of file kicad_cli.cpp.

◆ exportSchSvgCmd

CLI::SCH_EXPORT_PLOT_COMMAND exportSchSvgCmd { "svg", UTF8STDSTR( _( "Export SVG" ) ), SCH_PLOT_FORMAT::SVG }
static

Definition at line 167 of file kicad_cli.cpp.

◆ fpCmd

CLI::FP_COMMAND fpCmd {}
static

Definition at line 168 of file kicad_cli.cpp.

◆ fpExportCmd

CLI::FP_EXPORT_COMMAND fpExportCmd {}
static

Definition at line 169 of file kicad_cli.cpp.

◆ fpExportSvgCmd

CLI::FP_EXPORT_SVG_COMMAND fpExportSvgCmd {}
static

Definition at line 170 of file kicad_cli.cpp.

◆ fpUpgradeCmd

CLI::FP_UPGRADE_COMMAND fpUpgradeCmd {}
static

Definition at line 171 of file kicad_cli.cpp.

◆ jobsetCmd

CLI::JOBSET_COMMAND jobsetCmd {}
static

Definition at line 124 of file kicad_cli.cpp.

◆ jobsetRunCmd

CLI::JOBSET_RUN_COMMAND jobsetRunCmd {}
static

Definition at line 125 of file kicad_cli.cpp.

◆ pcbCmd

CLI::PCB_COMMAND pcbCmd {}
static

Definition at line 126 of file kicad_cli.cpp.

◆ pcbDrcCmd

CLI::PCB_DRC_COMMAND pcbDrcCmd {}
static

Definition at line 127 of file kicad_cli.cpp.

◆ pcbRenderCmd

CLI::PCB_RENDER_COMMAND pcbRenderCmd {}
static

Definition at line 128 of file kicad_cli.cpp.

◆ pcbUpgradeCmd

CLI::PCB_UPGRADE_COMMAND pcbUpgradeCmd {}
static

Definition at line 129 of file kicad_cli.cpp.

◆ program

◆ schCmd

CLI::SCH_COMMAND schCmd {}
static

Definition at line 157 of file kicad_cli.cpp.

◆ schErcCmd

CLI::SCH_ERC_COMMAND schErcCmd {}
static

Definition at line 158 of file kicad_cli.cpp.

◆ schUpgradeCmd

CLI::SCH_UPGRADE_COMMAND schUpgradeCmd {}
static

Definition at line 159 of file kicad_cli.cpp.

◆ symCmd

CLI::SYM_COMMAND symCmd {}
static

Definition at line 172 of file kicad_cli.cpp.

◆ symExportCmd

CLI::SYM_EXPORT_COMMAND symExportCmd {}
static

Definition at line 173 of file kicad_cli.cpp.

◆ symExportSvgCmd

CLI::SYM_EXPORT_SVG_COMMAND symExportSvgCmd {}
static

Definition at line 174 of file kicad_cli.cpp.

◆ symUpgradeCmd

CLI::SYM_UPGRADE_COMMAND symUpgradeCmd {}
static

Definition at line 175 of file kicad_cli.cpp.

◆ versionCmd

CLI::VERSION_COMMAND versionCmd {}
static

Definition at line 176 of file kicad_cli.cpp.