3 #include <Strings/components/utils/io/io.h>
4 #include <Strings/components/utils/string/string.h>
5 #include <Strings/components/utils/converters/converters.h>
6 #include <Strings/components/logger/logger.h>
8 #include <HEKGuerilla/components/tags/importers/bitmap/bitmap.h>
9 #include <HEKGuerilla/components/tags/tags.h>
10 #include <HEKGuerilla/components/settings/config/config.h>
12 #include "../ToolCommand.hpp"
13 #include "../console.h"
16 #ifdef TOOL_LIB_EXPORTS
17 #define TOOL_LIB_API __declspec(dllexport)
19 #define TOOL_LIB_API __declspec(dllimport)
33 std::vector<std::string> supported_extensions =
60 syntax =
"bitmaps <directory> [recursive]";
61 description =
"scans through a given directory and imports all images as bitmap tags. resulting tags will be placed in the specified output folder. "
62 "if recursive is set to true, then all subdirectories will be scanned and imported as well. this is disabled by default. "
63 "supported formats: " + BlamStrings::Utils::String::BuildFromList(supported_extensions,
", ");
66 int execute(std::vector<std::string> args)
68 Guerilla::Tags::LoadPlugins();
72 std::string import_base_dir = BlamStrings::Utils::IO::NormalizePath(project_root +
"data/");
73 std::string output_base_dir = BlamStrings::Utils::IO::NormalizePath(project_root +
"tags/");
75 bool recursive_search =
false;
76 std::string input_directory =
"";
77 std::string output_directory =
"";
81 BlamStrings::Logger::LogEvent(
"no input directory path was provided, cannot compile bitmaps", BlamLogLevel::Warning);
87 BlamStrings::Logger::LogEvent(
"too many arguments specified - skipping compilation. check your input and try again. "
88 "for additional help, use 'tool.exe help bitmaps'.", BlamLogLevel::Warning);
96 if (BlamStrings::Converters::StringToBool(args[1]))
98 BlamStrings::Logger::LogEvent(
"enabling recursive bitmap import, if you have many subdirectories this may take a long time!");
99 recursive_search =
true;
103 input_directory = BlamStrings::Utils::IO::NormalizePath(import_base_dir + args[0]);
104 output_directory = BlamStrings::Utils::IO::NormalizePath(output_base_dir + args[0]);
107 std::vector<std::string> file_list = std::vector<std::string>();
109 if (recursive_search)
111 file_list = BlamStrings::Utils::IO::GetDeepFileList(input_directory);
115 file_list = BlamStrings::Utils::IO::GetFileList(input_directory);
118 for (std::string file_path : file_list)
120 if (BlamStrings::Utils::String::EndsWithAny(file_path, supported_extensions,
true))
122 std::string file_output_dir = output_directory;
124 if (recursive_search)
126 file_output_dir = BlamStrings::Utils::String::Replace(file_path, input_directory, output_directory);
127 file_output_dir = BlamStrings::Utils::IO::GetContainingFolder(file_output_dir);
130 if (!Guerilla::Tags::Importers::Bitmap::ImportBitmap(file_path, file_output_dir))
132 BlamStrings::Logger::LogEvent(
"failed to import bitmap '" + file_path +
"'", WSV_WARNING);
136 BlamStrings::Logger::LogEvent(
"successfully imported bitmap '" + file_path +
"' to directory '" + file_output_dir +
"'");
141 Guerilla::Tags::ReleasePlugins();
143 BlamStrings::Logger::LogEvent(
"finished.");