diff --git a/CHANGELOG.md b/CHANGELOG.md index efd871f2..1db8ba9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `_only_smd` used to get only SMD parts - `_only_tht` used to get only THT parts - `_only_virtual` used to get only virtual parts +- Compress: + - Option to use the output's `dir` as reference (`from_output_dir`) +- iBoM: + - `hide_excluded` to hide excluded *.Fab drawings. - Internal templates: - FusionPCB: gerber, drill and compress - Elecrow: gerber, drill and compress @@ -25,8 +29,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added support for the KiCad 6 "sketch_pads_on_fab_layers" option. (#356) - Variants: - Support for multi-boards as defined by KiKit -- iBoM: - - `hide_excluded` to hide excluded *.Fab drawings. - SVG: - Options to limit the view box to the used area. ### Fixed diff --git a/README.md b/README.md index ae2192a3..9b9b4a52 100644 --- a/README.md +++ b/README.md @@ -1802,10 +1802,13 @@ Notes: When used the `source` option is ignored. - **`source`**: [string='*'] File names to add, wildcards allowed. Use ** for recursive match. By default this pattern is applied to the output dir specified with `-d` command line option. - See the `from_cwd` option. + See the `from_cwd` and `from_output_dir` options. - `dest`: [string=''] Destination directory inside the archive, empty means the same of the file. - `filter`: [string='.*'] A regular expression that source files must match. - `from_cwd`: [boolean=false] Use the current working directory instead of the dir specified by `-d`. + - `from_output_dir`: [boolean=false] Use the current the directory specified by the output instead of the dir specified by `-d`. + Note that it only applies when using `from_output` and no `dest` is specified. + It has more prescedence than `from_cwd`. - **`format`**: [string='ZIP'] [ZIP,TAR,RAR] Output file format. - **`output`**: [string='%f-%i%I%v.%x'] Name for the generated archive (%i=name of the output %x=according to format). Affected by global options. - `compression`: [string='auto'] [auto,stored,deflated,bzip2,lzma] Compression algorithm. Use auto to let KiBot select a suitable one. diff --git a/docs/samples/generic_plot.kibot.yaml b/docs/samples/generic_plot.kibot.yaml index 8122e499..d0d04568 100644 --- a/docs/samples/generic_plot.kibot.yaml +++ b/docs/samples/generic_plot.kibot.yaml @@ -449,9 +449,13 @@ outputs: # [string=''] Collect files from the selected output. # When used the `source` option is ignored from_output: '' + # [boolean=false] Use the current the directory specified by the output instead of the dir specified by `-d`. + # Note that it only applies when using `from_output` and no `dest` is specified. + # It has more prescedence than `from_cwd` + from_output_dir: false # [string='*'] File names to add, wildcards allowed. Use ** for recursive match. # By default this pattern is applied to the output dir specified with `-d` command line option. - # See the `from_cwd` option + # See the `from_cwd` and `from_output_dir` options source: '*' # [boolean=true] Store the file pointed by symlinks, not the symlink follow_links: true diff --git a/kibot/out_compress.py b/kibot/out_compress.py index 24c3a0e6..f65b6d88 100644 --- a/kibot/out_compress.py +++ b/kibot/out_compress.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2021-2022 Salvador E. Tropea -# Copyright (c) 2021-2022 Instituto Nacional de TecnologĂ­a Industrial +# Copyright (c) 2021-2023 Salvador E. Tropea +# Copyright (c) 2021-2023 Instituto Nacional de TecnologĂ­a Industrial # License: GPL-3.0 # Project: KiBot (formerly KiPlot) """ @@ -41,9 +41,13 @@ class FilesList(Optionable): self.source = '*' """ *File names to add, wildcards allowed. Use ** for recursive match. By default this pattern is applied to the output dir specified with `-d` command line option. - See the `from_cwd` option """ + See the `from_cwd` and `from_output_dir` options """ self.from_cwd = False """ Use the current working directory instead of the dir specified by `-d` """ + self.from_output_dir = False + """ Use the current the directory specified by the output instead of the dir specified by `-d`. + Note that it only applies when using `from_output` and no `dest` is specified. + It has more prescedence than `from_cwd` """ self.from_output = '' """ *Collect files from the selected output. When used the `source` option is ignored """ @@ -146,19 +150,19 @@ class CompressOptions(BaseOptions): for f in self.files: # Get the list of candidates files_list = None + output_out_dir = None if f.from_output: logger.debugl(2, '- From output `{}`'.format(f.from_output)) out = RegOutput.get_output(f.from_output) - if out is not None: - config_output(out) - out_dir = get_output_dir(out.dir, out, dry=True) - files_list = out.get_targets(out_dir) - logger.debugl(2, '- List of files: {}'.format(files_list)) - if out_dir not in dirs_list: - dirs_list.append(out_dir) - else: + if out is None: logger.error('Unknown output `{}` selected in {}'.format(f.from_output, self._parent)) exit(WRONG_ARGUMENTS) + config_output(out) + output_out_dir = out_dir = get_output_dir(out.dir, out, dry=True) + files_list = out.get_targets(out_dir) + logger.debugl(2, '- List of files: {}'.format(files_list)) + if out_dir not in dirs_list: + dirs_list.append(out_dir) if not no_out_run: extra_files = [] for file in files_list: @@ -187,6 +191,10 @@ class CompressOptions(BaseOptions): if GS.debug_level > 1: files_list = list(files_list) logger.debug('- Pattern {} list of files: {}'.format(source, files_list)) + # Compute the reference dir when no f.dest + out_dir = out_dir_cwd if f.from_cwd else out_dir_default + if f.from_output_dir: + out_dir = output_out_dir # Filter and adapt them for fname in filter(re.compile(f.filter).match, files_list): fname_real = os.path.realpath(fname) if self.follow_links else os.path.abspath(fname) @@ -198,7 +206,6 @@ class CompressOptions(BaseOptions): if f.dest: dest = os.path.join(f.dest, os.path.basename(fname)) else: - out_dir = out_dir_cwd if f.from_cwd else out_dir_default dest = os.path.relpath(dest, out_dir) files[fname_real] = dest return files, dirs_list