mirror of https://github.com/djcb/mu.git
options: implement ExpandPath transformer
For expanding shell options (with expand_path / wordexp) Note that e.g. in zsh: --maildir=~/Maildir is handled (program receives --maildir=/home/user/Maildir) but e.g. bash does not do that, and the program receives the literal '~/Maildir' We expanded this in mu earlier, so let's do that again.
This commit is contained in:
parent
111e48efa3
commit
ade62fc67c
|
@ -116,6 +116,8 @@ endforeach
|
|||
|
||||
if cc.has_function('wordexp')
|
||||
config_h_data.set('HAVE_WORDEXP_H',1)
|
||||
else
|
||||
message('no wordexp, no command-line option expansion')
|
||||
endif
|
||||
|
||||
testmaildir=join_paths(meson.current_source_dir(), 'lib', 'tests')
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include <unistd.h>
|
||||
|
||||
#include <utils/mu-utils.hh>
|
||||
#include <utils/mu-utils-file.hh>
|
||||
#include <utils/mu-error.hh>
|
||||
#include "utils/mu-test-utils.hh"
|
||||
#include "mu-options.hh"
|
||||
|
@ -183,6 +184,19 @@ options_map(const IE& ie)
|
|||
return map;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// transformers
|
||||
|
||||
|
||||
// Expand the path using wordexp
|
||||
static const std::function ExpandPath = [](std::string filepath)->std::string {
|
||||
if (auto&& res{expand_path(filepath)}; !res)
|
||||
throw CLI::ValidationError{res.error().what()};
|
||||
else
|
||||
return filepath = std::move(res.value());
|
||||
};
|
||||
|
||||
/*
|
||||
* common
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue