mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-28 04:27:20 +02:00
CLI2: Pseudo-args demoted to config settings
- When 'limit:N' is encountered, it is removed from the command line, and added as a config setting, equivalent to 'rc.limit:N'. - This simplifieѕ subsequent command line parsing.
This commit is contained in:
parent
c59afe34c4
commit
84b3055690
3 changed files with 20 additions and 17 deletions
34
src/CLI2.cpp
34
src/CLI2.cpp
|
@ -506,10 +506,9 @@ void CLI2::lexArguments ()
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Scan all args for the 'add' and 'log' commands, and demote any
|
// [1] Scan all args for the 'add' and 'log' commands, and demote any
|
||||||
// Lexer::Type::Tag args with sign '-' to Lexer::Type::word.
|
// Lexer::Type::Tag args with sign '-' to Lexer::Type::word.
|
||||||
//
|
// [2] Convert any pseudo args name:value into config settings, and erase.
|
||||||
// TODO This is obsolete, given FILTER, MODIFICATION, MISCELLANEOUS.
|
|
||||||
void CLI2::demotion ()
|
void CLI2::demotion ()
|
||||||
{
|
{
|
||||||
bool changes = false;
|
bool changes = false;
|
||||||
|
@ -529,6 +528,22 @@ void CLI2::demotion ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
for (auto& a : _args)
|
||||||
|
{
|
||||||
|
std::string canonical;
|
||||||
|
if (a._lextype == Lexer::Type::pair &&
|
||||||
|
canonicalize (canonical, "pseudo", a.attribute ("name")))
|
||||||
|
{
|
||||||
|
context.config.set (canonical, a.attribute ("value"));
|
||||||
|
changes = true;
|
||||||
|
_args.erase (_args.begin () + count);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++count;
|
||||||
|
}
|
||||||
|
|
||||||
if (changes &&
|
if (changes &&
|
||||||
context.config.getInteger ("debug.parser") >= 2)
|
context.config.getInteger ("debug.parser") >= 2)
|
||||||
context.debug (dump ("CLI2::analyze demotion"));
|
context.debug (dump ("CLI2::analyze demotion"));
|
||||||
|
@ -726,17 +741,6 @@ std::string CLI2::getCommand (bool canonical) const
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
std::string CLI2::getLimit () const
|
|
||||||
{
|
|
||||||
for (auto& a : _args)
|
|
||||||
if (a.hasTag ("PSEUDO") &&
|
|
||||||
a.attribute ("canonical") == "limit")
|
|
||||||
return a.attribute ("value");
|
|
||||||
|
|
||||||
return "0";
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
const std::string CLI2::dump (const std::string& title) const
|
const std::string CLI2::dump (const std::string& title) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -81,7 +81,6 @@ public:
|
||||||
bool canonicalize (std::string&, const std::string&, const std::string&) const;
|
bool canonicalize (std::string&, const std::string&, const std::string&) const;
|
||||||
std::string getBinary () const;
|
std::string getBinary () const;
|
||||||
std::string getCommand (bool canonical = true) const;
|
std::string getCommand (bool canonical = true) const;
|
||||||
std::string getLimit () const;
|
|
||||||
const std::string dump (const std::string& title = "CLI2 Parser") const;
|
const std::string dump (const std::string& title = "CLI2 Parser") const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -595,7 +595,7 @@ void Context::getLimits (int& rows, int& lines)
|
||||||
lines = 0;
|
lines = 0;
|
||||||
|
|
||||||
// This is an integer specified as a filter (limit:10).
|
// This is an integer specified as a filter (limit:10).
|
||||||
std::string limit = cli2.getLimit ();
|
std::string limit = config.get ("limit");
|
||||||
if (limit != "")
|
if (limit != "")
|
||||||
{
|
{
|
||||||
if (limit == "page")
|
if (limit == "page")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue