mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
CLI
- Can now safely re-analyze command line if something changes. This required a ::analzye method to be called late in Context::initialize.
This commit is contained in:
parent
171fabbcda
commit
cd8f7ddac4
3 changed files with 15 additions and 22 deletions
35
src/CLI.cpp
35
src/CLI.cpp
|
@ -230,30 +230,10 @@ void CLI::initialize (int argc, const char** argv)
|
||||||
{
|
{
|
||||||
// Clean what needs to be cleaned. Everything in this case.
|
// Clean what needs to be cleaned. Everything in this case.
|
||||||
_original_args.clear ();
|
_original_args.clear ();
|
||||||
_args.clear ();
|
|
||||||
|
|
||||||
for (int i = 0; i < argc; ++i)
|
for (int i = 0; i < argc; ++i)
|
||||||
{
|
|
||||||
_original_args.push_back (argv[i]);
|
_original_args.push_back (argv[i]);
|
||||||
|
|
||||||
if (i == 0)
|
analyze ();
|
||||||
{
|
|
||||||
A a ("arg", argv[i]);
|
|
||||||
a.tag ("ORIGINAL");
|
|
||||||
a.tag ("BINARY");
|
|
||||||
_args.push_back (a);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
A a ("arg", argv[i]);
|
|
||||||
a.tag ("ORIGINAL");
|
|
||||||
_args.push_back (a);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
aliasExpansion ();
|
|
||||||
findOverrides ();
|
|
||||||
categorize ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -261,9 +241,20 @@ void CLI::initialize (int argc, const char** argv)
|
||||||
void CLI::add (const std::string& arg)
|
void CLI::add (const std::string& arg)
|
||||||
{
|
{
|
||||||
// Clean what needs to be cleaned. Most in this case.
|
// Clean what needs to be cleaned. Most in this case.
|
||||||
_args.clear ();
|
|
||||||
_original_args.push_back (arg);
|
_original_args.push_back (arg);
|
||||||
|
|
||||||
|
analyze ();
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Intended to be called after ::initialize() and ::add(), to perform the final
|
||||||
|
// analysis. Analysis is also performed directly after the above, because there
|
||||||
|
// is a need to extract overrides early, before entities are proviedd.
|
||||||
|
void CLI::analyze ()
|
||||||
|
{
|
||||||
|
// Clean what needs to be cleaned. Most in this case.
|
||||||
|
_args.clear ();
|
||||||
|
|
||||||
for (int i = 0; i < _original_args.size (); ++i)
|
for (int i = 0; i < _original_args.size (); ++i)
|
||||||
{
|
{
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
|
|
|
@ -66,6 +66,7 @@ public:
|
||||||
void entity (const std::string&, const std::string&);
|
void entity (const std::string&, const std::string&);
|
||||||
void initialize (int, const char**);
|
void initialize (int, const char**);
|
||||||
void add (const std::string&);
|
void add (const std::string&);
|
||||||
|
void analyze ();
|
||||||
const std::string getFilter ();
|
const std::string getFilter ();
|
||||||
const std::vector <std::string> getWords ();
|
const std::vector <std::string> getWords ();
|
||||||
const std::vector <std::string> getModifications ();
|
const std::vector <std::string> getModifications ();
|
||||||
|
|
|
@ -248,6 +248,7 @@ int Context::initialize (int argc, const char** argv)
|
||||||
|
|
||||||
staticInitialization (); // Decouple code from Context.
|
staticInitialization (); // Decouple code from Context.
|
||||||
parser.parse (); // Parse all elements.
|
parser.parse (); // Parse all elements.
|
||||||
|
cli.analyze (); // Parse all elements.
|
||||||
|
|
||||||
tdb2.set_location (data_dir); // Prepare the task database.
|
tdb2.set_location (data_dir); // Prepare the task database.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue