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"
15 #ifdef TOOL_LIB_EXPORTS
16 #define TOOL_LIB_API __declspec(dllexport)
18 #define TOOL_LIB_API __declspec(dllimport)
31 syntax =
"bitmaps <directory> <output directory> [recursive]";
32 description =
"scans through a given directory and imports all images as bitmap tags. resulting tags will be placed in the specified output folder. "
33 "if recursive is set to true, then all subdirectories will be scanned and imported as well. this is disabled by default. "
34 "supported formats: apng, avif, bmp, cur, gif, ico, jpeg, jpeg2k, pcx, png, qoi, svg, tga, tiff, wal, webp, xbm";
37 int execute(std::vector<std::string> args)
39 Guerilla::Tags::LoadPlugins();
41 bool recursive_search =
false;
42 std::string input_directory =
"";
43 std::string output_directory =
"";
47 BlamStrings::Logger::LogEvent(
"no input directory path was provided, cannot compile bitmaps", BlamLogLevel::Warning);
53 BlamStrings::Logger::LogEvent(
"no output directory path was provided, cannot compile bitmaps", BlamLogLevel::Warning);
59 BlamStrings::Logger::LogEvent(
"too many arguments specified - skipping compilation. check your input and try again. "
60 "for additional help, use 'tool.exe help bitmaps'.", BlamLogLevel::Warning);
68 if (BlamStrings::Converters::StringToBool(args[2]))
70 BlamStrings::Logger::LogEvent(
"enabling recursive bitmap import, if you have many subdirectories this may take a long time!");
71 BlamStrings::Logger::LogEvent(
"TODO: FINISH RECURSIVE IMPORT!!!", WSV_WARNING);
72 recursive_search =
true;
76 input_directory = BlamStrings::Utils::IO::NormalizePath(args[0]);
77 output_directory = BlamStrings::Utils::IO::NormalizePath(args[1]);
80 std::vector<std::string> supported_extensions =
103 std::vector<std::string> file_list = std::vector<std::string>();
105 if (recursive_search)
107 file_list = BlamStrings::Utils::IO::GetDeepFileList(input_directory);
111 file_list = BlamStrings::Utils::IO::GetFileList(input_directory);
114 for (std::string file_path : file_list)
116 if (BlamStrings::Utils::String::EndsWithAny(file_path, supported_extensions,
true))
118 if (!Guerilla::Tags::Importers::Bitmap::ImportBitmap(file_path, output_directory))
120 BlamStrings::Logger::LogEvent(
"failed to import bitmap '" + file_path +
"'", WSV_WARNING);
124 BlamStrings::Logger::LogEvent(
"successfully imported bitmap '" + file_path +
"' to directory '" + output_directory +
"'");
129 Guerilla::Tags::ReleasePlugins();
131 BlamStrings::Logger::LogEvent(
"finished.");