kicad-cli: support * wildcard in BOM export

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16086
This commit is contained in:
Mike Williams 2023-11-15 10:43:33 -05:00
parent 5734a55515
commit eb5e327086
2 changed files with 41 additions and 1 deletions

View File

@ -449,6 +449,46 @@ int EESCHEMA_JOBS_HANDLER::JobExportBom( JOB* aJob )
for( wxString fieldName : aBomJob->m_fieldsOrdered ) for( wxString fieldName : aBomJob->m_fieldsOrdered )
{ {
// Handle wildcard. We allow the wildcard anywhere in the list, but it needs to respect
// fields that come before and after the wildcard.
if( fieldName == _( "*" ) )
{
for( const BOM_FIELD& modelField : dataModel.GetFieldsOrdered() )
{
struct BOM_FIELD field;
field.name = modelField.name;
field.show = true;
field.groupBy = false;
field.label = field.name;
bool fieldAlreadyPresent = false;
for( BOM_FIELD& presetField : preset.fieldsOrdered )
{
if( presetField.name == field.name )
{
fieldAlreadyPresent = true;
break;
}
}
bool fieldLaterInList = false;
for( const wxString& fieldInList : aBomJob->m_fieldsOrdered )
{
if( fieldInList == field.name )
{
fieldLaterInList = true;
break;
}
}
if( !fieldAlreadyPresent && !fieldLaterInList )
preset.fieldsOrdered.emplace_back( field );
}
continue;
}
struct BOM_FIELD field; struct BOM_FIELD field;
field.name = fieldName; field.name = fieldName;

View File

@ -53,7 +53,7 @@ namespace CLI
//Options for controlling the fields and the grouping //Options for controlling the fields and the grouping
#define ARG_FIELDS "--fields" #define ARG_FIELDS "--fields"
#define ARG_FIELDS_DESC "An ordered list of fields to export." #define ARG_FIELDS_DESC "An ordered list of fields to export. Supports * and ${} substitutions."
#define ARG_LABELS "--labels" #define ARG_LABELS "--labels"
#define ARG_LABELS_DESC "An ordered list of labels to apply the exported fields." #define ARG_LABELS_DESC "An ordered list of labels to apply the exported fields."