mirror of https://github.com/SeanOMik/znc-push.git
Implement save/load for user options
In preparation for renaming the project and supparting multiple notification services, there needs to be a simple method for migrating user options to the new module name. Using the built-in dictionary read/write mechanism, migrating to a new module name would be as simple as issuing `/msg *notifo save foo` and `/msg *notify load foo`.
This commit is contained in:
parent
e2ddfe78e9
commit
60632d42fb
|
@ -90,6 +90,15 @@ Commands
|
||||||
|
|
||||||
Allows you to reset a configuration option back to the default value.
|
Allows you to reset a configuration option back to the default value.
|
||||||
|
|
||||||
|
* `save <filename>`
|
||||||
|
|
||||||
|
Writes your options to a file with the given path and name.
|
||||||
|
|
||||||
|
* `load <filename>`
|
||||||
|
|
||||||
|
Loads your options from a file with the given path and name. Caution should be taken,
|
||||||
|
as this will lose any options that aren't already saved to the given file.
|
||||||
|
|
||||||
* `status [<context>]`
|
* `status [<context>]`
|
||||||
|
|
||||||
Check the status of current conditions. Specifying the "context" of either a channel
|
Check the status of current conditions. Specifying the "context" of either a channel
|
||||||
|
|
66
notifo.cpp
66
notifo.cpp
|
@ -912,6 +912,72 @@ class CNotifoMod : public CModule
|
||||||
PutModule(option + CString(": \"") + options[option] + CString("\""));
|
PutModule(option + CString(": \"") + options[option] + CString("\""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// SAVE command
|
||||||
|
else if (action == "save")
|
||||||
|
{
|
||||||
|
if (token_count < 2)
|
||||||
|
{
|
||||||
|
PutModule("Usage: save <filepath>");
|
||||||
|
}
|
||||||
|
|
||||||
|
CString file_path = command.Token(1, true, " ");
|
||||||
|
MCString::status_t status = options.WriteToDisk(file_path);
|
||||||
|
|
||||||
|
if (status == MCString::MCS_SUCCESS)
|
||||||
|
{
|
||||||
|
PutModule("Options saved to " + file_path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (status)
|
||||||
|
{
|
||||||
|
case MCString::MCS_EOPEN:
|
||||||
|
case MCString::MCS_EWRITE:
|
||||||
|
case MCString::MCS_EWRITEFIL:
|
||||||
|
PutModule("Failed to save options to " + file_path);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
PutModule("Failure");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// LOAD command
|
||||||
|
else if (action == "load")
|
||||||
|
{
|
||||||
|
if (token_count < 2)
|
||||||
|
{
|
||||||
|
PutModule("Usage: load <filename>");
|
||||||
|
}
|
||||||
|
|
||||||
|
CString file_path = command.Token(1, true, " ");
|
||||||
|
|
||||||
|
if (!CFile::Exists(file_path))
|
||||||
|
{
|
||||||
|
PutModule("File does not exist: " + file_path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MCString::status_t status = options.ReadFromDisk(file_path);
|
||||||
|
|
||||||
|
if (status == MCString::MCS_SUCCESS)
|
||||||
|
{
|
||||||
|
PutModule("Options loaded from " + file_path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (status)
|
||||||
|
{
|
||||||
|
case MCString::MCS_EOPEN:
|
||||||
|
case MCString::MCS_EREADFIL:
|
||||||
|
PutModule("Failed to read options from " + file_path);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
PutModule("Failure");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// STATUS command
|
// STATUS command
|
||||||
else if (action == "status")
|
else if (action == "status")
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue