Added global options to control the date format.

This commit is contained in:
Salvador E. Tropea 2021-12-01 14:59:36 -03:00
parent 779399c4db
commit a503c5fdc6
8 changed files with 38 additions and 6 deletions

View File

@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **%bc**, **%bd**, **%bf**, **%bF**, **%bp** and **%br** board data - **%bc**, **%bd**, **%bf**, **%bF**, **%bp** and **%br** board data
- **%sc**, **%sd**, **%sf**, **%sF**, **%sp** and **%sr** schematic data - **%sc**, **%sd**, **%sf**, **%sF**, **%sp** and **%sr** schematic data
- Now patterns are also expanded in the out_dir name. - Now patterns are also expanded in the out_dir name.
- Global options to control the date format.
### Changed ### Changed
- Internal BoM: now components with different Tolerance, Voltage, Current - Internal BoM: now components with different Tolerance, Voltage, Current

View File

@ -26,6 +26,7 @@
* [Default *dir* option](#default-dir-option) * [Default *dir* option](#default-dir-option)
* [Default *variant* option](#default-variant-option) * [Default *variant* option](#default-variant-option)
* [Output directory option](#output-directory-option) * [Output directory option](#output-directory-option)
* [Date format option](#date-format-option)
* [Filtering KiBot warnings](#filtering-kibot-warnings) * [Filtering KiBot warnings](#filtering-kibot-warnings)
* [Filters and variants](#filters-and-variants) * [Filters and variants](#filters-and-variants)
* [Supported filters](#supported-filters) * [Supported filters](#supported-filters)
@ -256,6 +257,14 @@ Note that the command line option has precedence over it.
Expansion patterns are applied to this value, but you should avoid using patterns that expand according to the context, i.e. **%c**, **%d**, **%f**, **%F**, **%p** and **%r**. Expansion patterns are applied to this value, but you should avoid using patterns that expand according to the context, i.e. **%c**, **%d**, **%f**, **%F**, **%p** and **%r**.
The behavior of these patterns isn't fully defined in this case and the results may change in the future. The behavior of these patterns isn't fully defined in this case and the results may change in the future.
#### Date format option
* The **%d**, **%sd** and **%bd** patterns use the date and time from the PCB and schematic. When abscent they use the file timestamp. The `date_time_format` global option controls the format used.
* The **%D** format is controlled by the `date_format` global option.
* The **%T** format is controlled by the `time_format` global option.
In all cases the format is the one used by the `strftime` POSIX function, for more information visit this [site](https://strftime.org/).
#### Filtering KiBot warnings #### Filtering KiBot warnings
KiBot warnings are marked with `(Wn)` where *n* is the warning id. KiBot warnings are marked with `(Wn)` where *n* is the warning id.

View File

@ -26,6 +26,7 @@
* [Default *dir* option](#default-dir-option) * [Default *dir* option](#default-dir-option)
* [Default *variant* option](#default-variant-option) * [Default *variant* option](#default-variant-option)
* [Output directory option](#output-directory-option) * [Output directory option](#output-directory-option)
* [Date format option](#date-format-option)
* [Filtering KiBot warnings](#filtering-kibot-warnings) * [Filtering KiBot warnings](#filtering-kibot-warnings)
* [Filters and variants](#filters-and-variants) * [Filters and variants](#filters-and-variants)
* [Supported filters](#supported-filters) * [Supported filters](#supported-filters)
@ -235,6 +236,14 @@ Note that the command line option has precedence over it.
Expansion patterns are applied to this value, but you should avoid using patterns that expand according to the context, i.e. **%c**, **%d**, **%f**, **%F**, **%p** and **%r**. Expansion patterns are applied to this value, but you should avoid using patterns that expand according to the context, i.e. **%c**, **%d**, **%f**, **%F**, **%p** and **%r**.
The behavior of these patterns isn't fully defined in this case and the results may change in the future. The behavior of these patterns isn't fully defined in this case and the results may change in the future.
#### Date format option
* The **%d**, **%sd** and **%bd** patterns use the date and time from the PCB and schematic. When abscent they use the file timestamp. The `date_time_format` global option controls the format used.
* The **%D** format is controlled by the `date_format` global option.
* The **%T** format is controlled by the `time_format` global option.
In all cases the format is the one used by the `strftime` POSIX function, for more information visit this [site](https://strftime.org/).
#### Filtering KiBot warnings #### Filtering KiBot warnings
KiBot warnings are marked with `(Wn)` where *n* is the warning id. KiBot warnings are marked with `(Wn)` where *n* is the warning id.

View File

@ -329,6 +329,9 @@ class CfgYamlReader(object):
GS.global_output = GS.global_from_cli.get('output', None) GS.global_output = GS.global_from_cli.get('output', None)
GS.global_dir = GS.global_from_cli.get('dir', None) GS.global_dir = GS.global_from_cli.get('dir', None)
GS.global_variant = GS.global_from_cli.get('variant', None) GS.global_variant = GS.global_from_cli.get('variant', None)
GS.global_date_time_format = GS.global_from_cli.get('date_time_format', None)
GS.global_date_format = GS.global_from_cli.get('date_format', None)
GS.global_time_format = GS.global_from_cli.get('time_format', None)
GS.global_kiauto_wait_start = GS.global_from_cli.get('kiauto_wait_start', None) GS.global_kiauto_wait_start = GS.global_from_cli.get('kiauto_wait_start', None)
GS.global_kiauto_time_out_scale = GS.global_from_cli.get('kiauto_time_out_scale', None) GS.global_kiauto_time_out_scale = GS.global_from_cli.get('kiauto_time_out_scale', None)
# List of outputs # List of outputs

View File

@ -28,6 +28,12 @@ class Globals(FiltersOptions):
""" Time to wait for KiCad in KiAuto operations """ """ Time to wait for KiCad in KiAuto operations """
self.kiauto_time_out_scale = 0.0 self.kiauto_time_out_scale = 0.0
""" Time-out multiplier for KiAuto operations """ """ Time-out multiplier for KiAuto operations """
self.date_time_format = '%Y-%m-%d_%H-%M-%S'
""" Format used for the PCB and schematic date when using the file timestamp. Uses the `strftime` format """
self.date_format = '%Y-%m-%d'
""" Format used for the day we started the script. Uses the `strftime` format """
self.time_format = '%H-%M-%S'
""" Format used for the time we started the script. Uses the `strftime` format """
self.set_doc('filters', " [list(dict)] KiBot warnings to be ignored ") self.set_doc('filters', " [list(dict)] KiBot warnings to be ignored ")
self._filter_what = 'KiBot warnings' self._filter_what = 'KiBot warnings'
self._unkown_is_error = True self._unkown_is_error = True
@ -47,6 +53,9 @@ class Globals(FiltersOptions):
GS.global_output = self.set_global(GS.global_output, self.output, 'output') GS.global_output = self.set_global(GS.global_output, self.output, 'output')
GS.global_dir = self.set_global(GS.global_dir, self.dir, 'dir') GS.global_dir = self.set_global(GS.global_dir, self.dir, 'dir')
GS.global_variant = self.set_global(GS.global_variant, self.variant, 'variant') GS.global_variant = self.set_global(GS.global_variant, self.variant, 'variant')
GS.global_date_time_format = self.set_global(GS.global_date_time_format, self.date_time_format, 'date_time_format')
GS.global_date_format = self.set_global(GS.global_date_format, self.date_format, 'date_format')
GS.global_time_format = self.set_global(GS.global_time_format, self.time_format, 'time_format')
GS.global_kiauto_wait_start = self.set_global(GS.global_kiauto_wait_start, self.kiauto_wait_start, 'kiauto_wait_start') GS.global_kiauto_wait_start = self.set_global(GS.global_kiauto_wait_start, self.kiauto_wait_start, 'kiauto_wait_start')
if GS.global_kiauto_wait_start and int(GS.global_kiauto_wait_start) != GS.global_kiauto_wait_start: if GS.global_kiauto_wait_start and int(GS.global_kiauto_wait_start) != GS.global_kiauto_wait_start:
GS.global_kiauto_wait_start = int(GS.global_kiauto_wait_start) GS.global_kiauto_wait_start = int(GS.global_kiauto_wait_start)

View File

@ -36,8 +36,6 @@ class GS(object):
debug_enabled = False debug_enabled = False
debug_level = 0 debug_level = 0
n = datetime.now() n = datetime.now()
today = n.strftime('%Y-%m-%d')
time = n.strftime('%H-%M-%S')
kicad_version = '' kicad_version = ''
kicad_conf_path = None kicad_conf_path = None
kicad_share_path = None kicad_share_path = None
@ -78,6 +76,9 @@ class GS(object):
global_kiauto_time_out_scale = None global_kiauto_time_out_scale = None
global_opts_class = None global_opts_class = None
global_3D_model_field = '_3D_model' global_3D_model_field = '_3D_model'
global_date_time_format = None
global_date_format = None
global_time_format = None
test_boolean = True test_boolean = True
@staticmethod @staticmethod
@ -121,7 +122,7 @@ class GS(object):
GS.pcb_date = title_block.GetDate() GS.pcb_date = title_block.GetDate()
if not GS.pcb_date: if not GS.pcb_date:
file_mtime = os.path.getmtime(GS.pcb_file) file_mtime = os.path.getmtime(GS.pcb_file)
GS.pcb_date = datetime.fromtimestamp(file_mtime).strftime('%Y-%m-%d_%H-%M-%S') GS.pcb_date = datetime.fromtimestamp(file_mtime).strftime(GS.global_date_time_format)
GS.pcb_title = title_block.GetTitle() GS.pcb_title = title_block.GetTitle()
if not GS.pcb_title: if not GS.pcb_title:
GS.pcb_title = GS.pcb_basename GS.pcb_title = GS.pcb_basename

View File

@ -1494,7 +1494,7 @@ class Schematic(object):
# Fill in some missing info # Fill in some missing info
if not self.date: if not self.date:
file_mtime = os.path.getmtime(fname) file_mtime = os.path.getmtime(fname)
self.date = datetime.fromtimestamp(file_mtime).strftime('%Y-%m-%d_%H-%M-%S') self.date = datetime.fromtimestamp(file_mtime).strftime(GS.global_date_time_format)
if not self.title: if not self.title:
self.title = os.path.splitext(os.path.basename(fname))[0] self.title = os.path.splitext(os.path.basename(fname))[0]
logger.debug("SCH title: `{}`".format(self.title)) logger.debug("SCH title: `{}`".format(self.title))

View File

@ -218,7 +218,6 @@ class Optionable(object):
name = name.replace('%bf', GS.pcb_basename) name = name.replace('%bf', GS.pcb_basename)
name = name.replace('%bp', GS.pcb_title) name = name.replace('%bp', GS.pcb_title)
name = name.replace('%br', GS.pcb_rev) name = name.replace('%br', GS.pcb_rev)
name = name.replace('%D', GS.today)
if GS.solved_global_variant: if GS.solved_global_variant:
name = name.replace('%g', GS.solved_global_variant.file_id) name = name.replace('%g', GS.solved_global_variant.file_id)
name = name.replace('%G', GS.solved_global_variant.name) name = name.replace('%G', GS.solved_global_variant.name)
@ -230,7 +229,8 @@ class Optionable(object):
name = name.replace('%sf', GS.sch_basename) name = name.replace('%sf', GS.sch_basename)
name = name.replace('%sp', GS.sch_title) name = name.replace('%sp', GS.sch_title)
name = name.replace('%sr', GS.sch_rev) name = name.replace('%sr', GS.sch_rev)
name = name.replace('%T', GS.time) name = name.replace('%D', GS.n.strftime(GS.global_date_format))
name = name.replace('%T', GS.n.strftime(GS.global_time_format))
if self: if self:
name = name.replace('%i', self._expand_id) name = name.replace('%i', self._expand_id)
name = name.replace('%v', self._find_variant()) name = name.replace('%v', self._find_variant())