|
|
|
@ -419,50 +419,8 @@ static command_result orders_export_command(color_ostream & out, const std::stri
|
|
|
|
|
return file.good() ? CR_OK : CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static command_result orders_import_command(color_ostream & out, const std::string & name)
|
|
|
|
|
static command_result orders_import(color_ostream &out, Json::Value &orders)
|
|
|
|
|
{
|
|
|
|
|
if (!is_safe_filename(out, name))
|
|
|
|
|
{
|
|
|
|
|
return CR_WRONG_USAGE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const std::string filename("dfhack-config/orders/" + name + ".json");
|
|
|
|
|
Json::Value orders;
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
std::ifstream file(filename);
|
|
|
|
|
|
|
|
|
|
if (!file.good())
|
|
|
|
|
{
|
|
|
|
|
out << COLOR_LIGHTRED << "Cannot find orders file: " << filename << std::endl;
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
file >> orders;
|
|
|
|
|
}
|
|
|
|
|
catch (const std::exception & e)
|
|
|
|
|
{
|
|
|
|
|
out << COLOR_LIGHTRED << "Error reading orders file: " << filename << ": " << e.what() << std::endl;
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!file.good())
|
|
|
|
|
{
|
|
|
|
|
out << COLOR_LIGHTRED << "Error reading orders file: " << filename << std::endl;
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (orders.type() != Json::arrayValue)
|
|
|
|
|
{
|
|
|
|
|
out << COLOR_LIGHTRED << "Invalid orders file: " << filename << ": expected array" << std::endl;
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CoreSuspender suspend;
|
|
|
|
|
|
|
|
|
|
std::map<int32_t, int32_t> id_mapping;
|
|
|
|
|
for (auto it : orders)
|
|
|
|
|
{
|
|
|
|
@ -793,6 +751,61 @@ static command_result orders_import_command(color_ostream & out, const std::stri
|
|
|
|
|
return CR_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static command_result orders_import_command(color_ostream & out, const std::string & name)
|
|
|
|
|
{
|
|
|
|
|
if (!is_safe_filename(out, name))
|
|
|
|
|
{
|
|
|
|
|
return CR_WRONG_USAGE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const std::string filename("dfhack-config/orders/" + name + ".json");
|
|
|
|
|
Json::Value orders;
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
std::ifstream file(filename);
|
|
|
|
|
|
|
|
|
|
if (!file.good())
|
|
|
|
|
{
|
|
|
|
|
out << COLOR_LIGHTRED << "Cannot find orders file: " << filename << std::endl;
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
file >> orders;
|
|
|
|
|
}
|
|
|
|
|
catch (const std::exception & e)
|
|
|
|
|
{
|
|
|
|
|
out << COLOR_LIGHTRED << "Error reading orders file: " << filename << ": " << e.what() << std::endl;
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!file.good())
|
|
|
|
|
{
|
|
|
|
|
out << COLOR_LIGHTRED << "Error reading orders file: " << filename << std::endl;
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (orders.type() != Json::arrayValue)
|
|
|
|
|
{
|
|
|
|
|
out << COLOR_LIGHTRED << "Invalid orders file: " << filename << ": expected array" << std::endl;
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CoreSuspender suspend;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
return orders_import(out, orders);
|
|
|
|
|
}
|
|
|
|
|
catch (const std::exception & e)
|
|
|
|
|
{
|
|
|
|
|
out << COLOR_LIGHTRED << "Error reading orders file: " << filename << ": " << e.what() << std::endl;
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static command_result orders_clear_command(color_ostream & out)
|
|
|
|
|
{
|
|
|
|
|
CoreSuspender suspend;
|
|
|
|
|