[Global options][Added] `environment`.`extra_os` to define environment variables
This commit is contained in:
parent
4e72af9761
commit
4fbd69ac3b
|
|
@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
- OS environment expansion in ${VAR}
|
- OS environment expansion in ${VAR}
|
||||||
- Global options:
|
- Global options:
|
||||||
- `use_os_env_for_expand` to disable OS environment expansion
|
- `use_os_env_for_expand` to disable OS environment expansion
|
||||||
|
- `environment`.`extra_os` to define environment variables
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- KiCad v6/7 schematic:
|
- KiCad v6/7 schematic:
|
||||||
|
|
|
||||||
|
|
@ -786,7 +786,12 @@ global:
|
||||||
The KIPRJMOD is also available for expansion.
|
The KIPRJMOD is also available for expansion.
|
||||||
* Valid keys:
|
* Valid keys:
|
||||||
- `define_old`: [boolean=false] Also define legacy versions of the variables.
|
- `define_old`: [boolean=false] Also define legacy versions of the variables.
|
||||||
Useful when using KiCad 6 and some libs uses old KiCad 5 names.
|
Useful when using KiCad 6+ and some libs uses old KiCad 5 names.
|
||||||
|
- `extra_os`: [list(dict)] Extra variables to export as OS environment variables.
|
||||||
|
Note that you can also define them using `- NAME: VALUE`.
|
||||||
|
* Valid keys:
|
||||||
|
- **`name`**: [string=''] Name of the variable.
|
||||||
|
- **`value`**: [string=''] Value for the variable.
|
||||||
- `footprints`: [string=''] System level footprints (aka modules) dir. KiCad 5: KICAD_FOOTPRINT_DIR and KISYSMOD.
|
- `footprints`: [string=''] System level footprints (aka modules) dir. KiCad 5: KICAD_FOOTPRINT_DIR and KISYSMOD.
|
||||||
KiCad 6: KICAD6_FOOTPRINT_DIR.
|
KiCad 6: KICAD6_FOOTPRINT_DIR.
|
||||||
- `models_3d`: [string=''] System level 3D models dir. KiCad 5: KISYS3DMOD. KiCad 6: KICAD6_3DMODEL_DIR.
|
- `models_3d`: [string=''] System level 3D models dir. KiCad 5: KISYS3DMOD. KiCad 6: KICAD6_3DMODEL_DIR.
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,40 @@ from .kicad.config import expand_env
|
||||||
from .macros import macros, document # noqa: F401
|
from .macros import macros, document # noqa: F401
|
||||||
from .pre_filters import FiltersOptions, FilterOptionsKiBot
|
from .pre_filters import FiltersOptions, FilterOptionsKiBot
|
||||||
from .log import get_logger, set_filters
|
from .log import get_logger, set_filters
|
||||||
from .misc import W_MUSTBEINT
|
from .misc import W_MUSTBEINT, W_ENVEXIST
|
||||||
from .kicad.config import KiConf
|
from .kicad.config import KiConf
|
||||||
from .kicad.sexpdata import load, SExpData, sexp_iter, Symbol
|
from .kicad.sexpdata import load, SExpData, sexp_iter, Symbol
|
||||||
from .kicad.v6_sch import PCBLayer
|
from .kicad.v6_sch import PCBLayer
|
||||||
|
|
||||||
|
|
||||||
|
class OSVariables(Optionable):
|
||||||
|
""" Name/Value pairs """
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self._unknown_is_error = True
|
||||||
|
with document:
|
||||||
|
self.name = ''
|
||||||
|
""" *Name of the variable """
|
||||||
|
self.value = ''
|
||||||
|
""" *Value for the variable """
|
||||||
|
self._name_example = 'ROOT_DIR'
|
||||||
|
self._value_example = '/root'
|
||||||
|
|
||||||
|
def config(self, parent):
|
||||||
|
# Support for - NAME: VALUE
|
||||||
|
if len(self._tree) == 1:
|
||||||
|
v0 = tuple(self._tree.values())[0]
|
||||||
|
n0 = tuple(self._tree.keys())[0]
|
||||||
|
if n0 != 'name' and n0 != 'value' and isinstance(v0, str):
|
||||||
|
logger.error(self._tree)
|
||||||
|
self.name = n0
|
||||||
|
self.value = v0
|
||||||
|
return
|
||||||
|
super().config(parent)
|
||||||
|
if not self.name:
|
||||||
|
raise KiPlotConfigurationError("Missing or empty `name` in environment variable ({})".format(str(self._tree)))
|
||||||
|
|
||||||
|
|
||||||
class Environment(Optionable):
|
class Environment(Optionable):
|
||||||
""" Used to define the KiCad environment vars """
|
""" Used to define the KiCad environment vars """
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
@ -38,7 +66,10 @@ class Environment(Optionable):
|
||||||
""" 3rd party dir. KiCad 6: KICAD6_3RD_PARTY """
|
""" 3rd party dir. KiCad 6: KICAD6_3RD_PARTY """
|
||||||
self.define_old = False
|
self.define_old = False
|
||||||
""" Also define legacy versions of the variables.
|
""" Also define legacy versions of the variables.
|
||||||
Useful when using KiCad 6 and some libs uses old KiCad 5 names """
|
Useful when using KiCad 6+ and some libs uses old KiCad 5 names """
|
||||||
|
self.extra_os = OSVariables
|
||||||
|
""" [list(dict)] Extra variables to export as OS environment variables.
|
||||||
|
Note that you can also define them using `- NAME: VALUE` """
|
||||||
|
|
||||||
def define_k5_vars(self, defs):
|
def define_k5_vars(self, defs):
|
||||||
if self.symbols:
|
if self.symbols:
|
||||||
|
|
@ -89,6 +120,12 @@ class Environment(Optionable):
|
||||||
v = expand_env(v, env, os.environ)
|
v = expand_env(v, env, os.environ)
|
||||||
logger.debug('- {} = "{}"'.format(n, v))
|
logger.debug('- {} = "{}"'.format(n, v))
|
||||||
os.environ[n] = v
|
os.environ[n] = v
|
||||||
|
if isinstance(self.extra_os, list):
|
||||||
|
for v in self.extra_os:
|
||||||
|
if v.name in os.environ:
|
||||||
|
logger.warning(W_ENVEXIST+"Overwriting {} environment variable".format(v.name))
|
||||||
|
logger.debug('- {} = "{}"'.format(v.name, v.value))
|
||||||
|
os.environ[v.name] = v.value
|
||||||
|
|
||||||
|
|
||||||
class KiCadAlias(Optionable):
|
class KiCadAlias(Optionable):
|
||||||
|
|
|
||||||
|
|
@ -273,6 +273,7 @@ W_RESVALISSUE = '(W124) '
|
||||||
W_RES3DNAME = '(W125) '
|
W_RES3DNAME = '(W125) '
|
||||||
W_ESCINV = '(W126) '
|
W_ESCINV = '(W126) '
|
||||||
W_BADVAL4 = '(W127) '
|
W_BADVAL4 = '(W127) '
|
||||||
|
W_ENVEXIST = '(W128) '
|
||||||
# Somehow arbitrary, the colors are real, but can be different
|
# Somehow arbitrary, the colors are real, but can be different
|
||||||
PCB_MAT_COLORS = {'fr1': "937042", 'fr2': "949d70", 'fr3': "adacb4", 'fr4': "332B16", 'fr5': "6cc290"}
|
PCB_MAT_COLORS = {'fr1': "937042", 'fr2': "949d70", 'fr3': "adacb4", 'fr4': "332B16", 'fr5': "6cc290"}
|
||||||
PCB_FINISH_COLORS = {'hal': "8b898c", 'hasl': "8b898c", 'imag': "8b898c", 'enig': "cfb96e", 'enepig': "cfb96e",
|
PCB_FINISH_COLORS = {'hal': "8b898c", 'hasl': "8b898c", 'imag': "8b898c", 'enig': "cfb96e", 'enepig': "cfb96e",
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,10 @@ globals:
|
||||||
user_templates: '/test4'
|
user_templates: '/test4'
|
||||||
third_party: '/test5'
|
third_party: '/test5'
|
||||||
define_old: true
|
define_old: true
|
||||||
|
extra_os:
|
||||||
|
- name: TEST1
|
||||||
|
value: Hello
|
||||||
|
- TEST2: Bye
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
- name: Step
|
- name: Step
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue