diff --git a/kibot/gs.py b/kibot/gs.py index e1e859cc..6141bc2e 100644 --- a/kibot/gs.py +++ b/kibot/gs.py @@ -50,8 +50,12 @@ class GS(object): pcb_rev = None pcb_comp = None # Global defaults + # This is used as default value for classes supporting "output" option + def_global_output = '%f-%i%v.%x' + # This value will overwrite GS.def_global_output if defined + # Classes supporting global "output" option must call super().__init__() + # after defining its own options to allow Optionable do the overwrite. global_output = None - def_global_output = '%f-%i.%x' @staticmethod def set_sch(name): diff --git a/kibot/optionable.py b/kibot/optionable.py index ed3ee5bb..6b2059fa 100644 --- a/kibot/optionable.py +++ b/kibot/optionable.py @@ -166,20 +166,28 @@ class Optionable(object): attrs = self.get_attrs_for() return ((k, v) for k, v in attrs.items() if k[0] != '_') + def _find_variant(self): + """ Returns the text to add for the current variant. + If no variant is defined an empty string is returned. """ + if hasattr(self, 'variant') and self.variant and hasattr(self.variant, 'file_id'): + return self.variant.file_id + return '' + def expand_filename(self, out_dir, name, id='', ext=''): """ Expands %* values in filenames. Uses data from the PCB. """ if GS.board: GS.load_pcb_title_block() # Do the replacements - name = name.replace('%f', GS.pcb_basename) - name = name.replace('%p', GS.pcb_title) name = name.replace('%c', GS.pcb_comp) - name = name.replace('%r', GS.pcb_rev) name = name.replace('%d', GS.pcb_date) name = name.replace('%D', GS.today) - name = name.replace('%T', GS.time) + name = name.replace('%f', GS.pcb_basename) name = name.replace('%i', id) + name = name.replace('%p', GS.pcb_title) + name = name.replace('%r', GS.pcb_rev) + name = name.replace('%T', GS.time) + name = name.replace('%v', self._find_variant()) name = name.replace('%x', ext) # sanitize the name to avoid characters illegal in file systems name = name.replace('\\', '/') @@ -192,14 +200,15 @@ class Optionable(object): if GS.sch_file: GS.load_sch_title_block() # Do the replacements - name = name.replace('%f', GS.sch_basename) - name = name.replace('%p', GS.sch_title) name = name.replace('%c', GS.sch_comp) - name = name.replace('%r', GS.sch_rev) name = name.replace('%d', GS.sch_date) name = name.replace('%D', GS.today) - name = name.replace('%T', GS.time) + name = name.replace('%f', GS.sch_basename) name = name.replace('%i', id) + name = name.replace('%p', GS.sch_title) + name = name.replace('%r', GS.sch_rev) + name = name.replace('%T', GS.time) + name = name.replace('%v', self._find_variant()) name = name.replace('%x', ext) # sanitize the name to avoid characters illegal in file systems name = name.replace('\\', '/')