[CLI][Added] More clear --list output and --only-pre option

- Takes most of the #436 suggestions
This commit is contained in:
Salvador E. Tropea 2023-05-17 12:43:41 -03:00
parent 1e971e2461
commit ebc48f57d9
4 changed files with 47 additions and 21 deletions

View File

@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Command line:
- `--list-variants` List all available variants (See #434)
- `--only-names` to make `--list` list only output names
- `--only-pre` to list only the preflights
- Global options:
- `use_os_env_for_expand` to disable OS environment expansion
- `environment`.`extra_os` to define environment variables

View File

@ -5533,7 +5533,7 @@ Usage:
[-q | -v...] [-L LOGFILE] [-C | -i | -n] [-m MKFILE] [-A] [-g DEF] ...
[-E DEF] ... [-w LIST] [--banner N] [TARGET...]
kibot [-v...] [-b BOARD] [-e SCHEMA] [-c PLOT_CONFIG] [--banner N]
[-E DEF] [--config-outs] ... --list
[-E DEF] [--config-outs] [--only-pre] [--only-names] ... --list
kibot [-v...] [-c PLOT_CONFIG] [--banner N] [-E DEF] [--only-names] ...
--list-variants
kibot [-v...] [-b BOARD] [-d OUT_DIR] [-p | -P] [--banner N] --example
@ -5577,6 +5577,8 @@ Options:
-n, --no-priority Don't sort targets by priority
-p, --copy-options Copy plot options from the PCB file
--only-names Print only the names
--only-pre Print only the preflights. Note that
`--only-names` alone prints only the outputs
-P, --copy-and-expand As -p but expand the list of layers
-q, --quiet Remove information logs
-s PRE, --skip-pre PRE Skip preflights, comma separated or `all`

View File

@ -12,7 +12,7 @@ Usage:
[-q | -v...] [-L LOGFILE] [-C | -i | -n] [-m MKFILE] [-A] [-g DEF] ...
[-E DEF] ... [-w LIST] [--banner N] [TARGET...]
kibot [-v...] [-b BOARD] [-e SCHEMA] [-c PLOT_CONFIG] [--banner N]
[-E DEF] [--config-outs] [--only-names] ... --list
[-E DEF] [--config-outs] [--only-pre] [--only-names] ... --list
kibot [-v...] [-c PLOT_CONFIG] [--banner N] [-E DEF] [--only-names] ...
--list-variants
kibot [-v...] [-b BOARD] [-d OUT_DIR] [-p | -P] [--banner N] --example
@ -56,6 +56,8 @@ Options:
-n, --no-priority Don't sort targets by priority
-p, --copy-options Copy plot options from the PCB file
--only-names Print only the names
--only-pre Print only the preflights. Note that
`--only-names` alone prints only the outputs
-P, --copy-and-expand As -p but expand the list of layers
-q, --quiet Remove information logs
-s PRE, --skip-pre PRE Skip preflights, comma separated or `all`
@ -125,28 +127,45 @@ from .registrable import RegOutput
GS.kibot_version = __version__
def list_pre_and_outs(logger, outputs, do_config, only_names):
if not only_names:
logger.info('Available actions:\n')
def list_pre_and_outs_names(logger, outputs, do_config, only_pre):
pf = BasePreFlight.get_in_use_names()
if len(pf) and only_pre:
for c in pf:
logger.info(c)
return
if len(outputs):
for o in outputs:
if do_config:
config_output(o, dry=False)
logger.info(o.name)
def list_pre_and_outs(logger, outputs, do_config, only_names, only_pre):
if only_names:
return list_pre_and_outs_names(logger, outputs, do_config, only_pre)
pf = BasePreFlight.get_in_use_objs()
if len(pf) and not only_names:
logger.info('Pre-flight:')
if len(pf):
logger.info('Available pre-flights:')
for c in pf:
logger.info('- '+str(c))
if len(outputs) and not only_pre:
logger.info("")
if len(outputs) and not only_pre:
logger.info("Available outputs: 'comment/description' (name) [type]")
for o in outputs:
# Note: we can't do a `dry` config because some layer and field names can be validated only if we
# load the schematic and the PCB.
if do_config:
config_output(o, dry=False)
logger.info('- '+str(o))
if len(pf):
logger.info("")
logger.info("You can use e.g. `kibot --skip-pre preflight_name1,preflight_name2` to")
logger.info("skip specific preflights (or pass `all` to skip them all).")
if len(outputs):
if not only_names:
logger.info('Outputs:')
for o in outputs:
# Note: we can't do a `dry` config because some layer and field names can be validated only if we
# load the schematic and the PCB.
if do_config:
config_output(o, dry=False)
logger.info('- '+str(o))
else:
for o in outputs:
if do_config:
config_output(o, dry=False)
logger.info(o.name)
logger.info("")
logger.info("You can use e.g. `kibot output_name1 output_name1` to generate only")
logger.info("specific outputs by name.")
def list_variants(logger, only_names):
@ -463,7 +482,7 @@ def main():
# Is just "list the available targets"?
if args.list:
list_pre_and_outs(logger, outputs, args.config_outs, args.only_names)
list_pre_and_outs(logger, outputs, args.config_outs, args.only_names, args.only_pre)
sys.exit(0)
if args.list_variants:

View File

@ -49,6 +49,10 @@ class BasePreFlight(Registrable):
def get_in_use_objs():
return BasePreFlight._in_use.values()
@staticmethod
def get_in_use_names():
return BasePreFlight._in_use.keys()
@staticmethod
def _set_option(name, value):
BasePreFlight._options[name] = value