Filter: Added a mechanism to override ::safety
This commit is contained in:
@@ -58,6 +58,7 @@ bool domSource (const std::string& identifier, Variant& value)
|
|||||||
Filter::Filter ()
|
Filter::Filter ()
|
||||||
: _startCount (0)
|
: _startCount (0)
|
||||||
, _endCount (0)
|
, _endCount (0)
|
||||||
|
, _safety (true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,28 +262,37 @@ bool Filter::pendingOnly ()
|
|||||||
// all tasks to be modified. This is usually not intended.
|
// all tasks to be modified. This is usually not intended.
|
||||||
void Filter::safety ()
|
void Filter::safety ()
|
||||||
{
|
{
|
||||||
for (auto& a : context.cli2._args)
|
if (_safety)
|
||||||
{
|
{
|
||||||
if (a.hasTag ("CMD"))
|
for (auto& a : context.cli2._args)
|
||||||
{
|
{
|
||||||
if (a.hasTag ("WRITECMD"))
|
if (a.hasTag ("CMD"))
|
||||||
{
|
{
|
||||||
if (! context.config.getBoolean ("allow.empty.filter"))
|
if (a.hasTag ("WRITECMD"))
|
||||||
throw std::string (STRING_TASK_SAFETY_ALLOW);
|
{
|
||||||
|
if (! context.config.getBoolean ("allow.empty.filter"))
|
||||||
|
throw std::string (STRING_TASK_SAFETY_ALLOW);
|
||||||
|
|
||||||
// If user is willing to be asked, this can be avoided.
|
// If user is willing to be asked, this can be avoided.
|
||||||
if (context.config.getBoolean ("confirmation") &&
|
if (context.config.getBoolean ("confirmation") &&
|
||||||
confirm (STRING_TASK_SAFETY_VALVE))
|
confirm (STRING_TASK_SAFETY_VALVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Sounds the alarm.
|
// Sounds the alarm.
|
||||||
throw std::string (STRING_TASK_SAFETY_FAIL);
|
throw std::string (STRING_TASK_SAFETY_FAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
// CMD was found.
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// CMD was found.
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
void Filter::disableSafety ()
|
||||||
|
{
|
||||||
|
_safety = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -44,10 +44,12 @@ public:
|
|||||||
void subset (std::vector <Task>&, bool applyContext = true);
|
void subset (std::vector <Task>&, bool applyContext = true);
|
||||||
bool pendingOnly ();
|
bool pendingOnly ();
|
||||||
void safety ();
|
void safety ();
|
||||||
|
void disableSafety ();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int _startCount;
|
int _startCount;
|
||||||
int _endCount;
|
int _endCount;
|
||||||
|
bool _safety;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user