diff options
author | Alexander Goncharov <chat@joursoir.net> | 2022-10-09 13:10:27 +0300 |
---|---|---|
committer | Anastasia Klimchuk <aklm@chromium.org> | 2023-01-18 21:04:58 +0000 |
commit | 58888f78f3690e6701a717cdc65562fdf9038e1e (patch) | |
tree | 0d253993cbac31f3f9229878aaf0d2e4e54875f5 /meson.build | |
parent | 87531ef11c00963100f20fac71c2428f54162916 (diff) | |
download | flashrom-58888f78f3690e6701a717cdc65562fdf9038e1e.tar.gz flashrom-58888f78f3690e6701a717cdc65562fdf9038e1e.tar.bz2 flashrom-58888f78f3690e6701a717cdc65562fdf9038e1e.zip |
util: add bash completion script
Add a bash script for the flashrom CLI that auto-completes the command
sequence. The script is generated from a template by substituting a
list of enabled programmers. It requires an extra `bash-completion`
package to work, but, fortunately, it's installed on most systems.
Build system changes:
meson:
provide option `bash_completion` to determine if the script should
be installed (depends on option `classic_cli`).
makefile:
make a list of enabled programmers (by using CONFIG_* variables)
to do substitution manually
Change-Id: Ie68bc91c3cea4de2ffdbeffd07e48edd8d5590e1
Signed-off-by: Alexander Goncharov <chat@joursoir.net>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/68247
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/meson.build b/meson.build index 27a284e9..36cb4f81 100644 --- a/meson.build +++ b/meson.build @@ -630,6 +630,41 @@ if get_option('ich_descriptors_tool').auto() or get_option('ich_descriptors_tool subdir('util/ich_descriptors_tool') endif +if get_option('bash_completion').auto() or get_option('bash_completion').enabled() + if get_option('classic_cli').disabled() + if get_option('bash_completion').enabled() + error('`bash_completion` can not be enabled without `classic_cli`') + endif + else + bash_comp = dependency('bash-completion', required : false) + if bash_comp.found() + bash_comp_install_dir = bash_comp.get_variable( + pkgconfig : 'completionsdir', + pkgconfig_define : ['datadir', get_option('datadir')] + ) + else + bash_comp_install_dir = join_paths(get_option('datadir'), 'bash-completion', 'completions') + endif + + programmer_names_active_str = '' + foreach p_name, p_data : programmer + if p_data.get('active') + programmer_names_active_str += p_name + ' ' + endif + endforeach + + configure_file( + input : 'util/flashrom.bash-completion.tmpl', + output : 'flashrom.bash', + configuration : { + 'PROGRAMMERS' : programmer_names_active_str, + }, + install: true, + install_dir: bash_comp_install_dir, + ) + endif +endif + # Use `.auto() or .enabled()` instead of `.allowed()` to keep the minimum meson version as low as possible. # `.allowed()` gets introduced in 0.59.0 if get_option('tests').auto() or get_option('tests').enabled() |