3 #include <Strings/components/utils/io/io.h>
4 #include <Strings/components/utils/string/string.h>
5 #include <Strings/components/logger/logger.h>
6 #include <Strings/components/utils/list/list.h>
8 #include "../ToolCommand.hpp"
9 #include "../console.h"
11 #ifdef TOOL_LIB_EXPORTS
12 #define TOOL_LIB_API __declspec(dllexport)
14 #define TOOL_LIB_API __declspec(dllimport)
28 int successful_compiles = 0;
29 int warning_compiles = 0;
30 int failed_compiles = 0;
32 void attempt_shader_compile(std::string file_path, std::string output_file_path,
bool vertex_shader);
33 void compile_shaders(std::string base_directory);
35 std::string profile =
"";
42 syntax =
"compile-shaders <directory> <profile> [-bulk]";
43 description =
"compiles a collection of shaders from a directory. if -bulk is specified, scans through a given directory and compiles all shaders found within subdirectories.";
46 int execute(std::vector<std::string> args)
50 BlamStrings::Logger::LogEvent(
"no directory path was provided, cannot compile shaders", BlamLogLevel::Warning);
56 BlamStrings::Logger::LogEvent(
"no shader profile was provided, cannot compile shaders", BlamLogLevel::Warning);
60 if (!BlamStrings::Utils::IO::FileExists(args[0]))
62 BlamStrings::Logger::LogEvent(
"directory '" + args[0] +
"' does not exist, cannot compile shaders", BlamLogLevel::Warning);
66 if (!BlamStrings::Utils::IO::IsDirectory(args[0]))
68 BlamStrings::Logger::LogEvent(
"the path '" + args[0] +
"' refers to a file, not a directory, cannot compile shaders", BlamLogLevel::Warning);
74 bool bulk_compile =
false;
78 for (
int i = 2; i < args.size(); i++)
80 if (args.at(i) ==
"-bulk")
89 std::vector<std::string> directory_list = BlamStrings::Utils::IO::GetDirectoryList(args[0]);
91 for (
int i = 0; i < directory_list.size(); i++)
93 compile_shaders(directory_list.at(i));
98 compile_shaders(args[0]);
101 BlamStrings::Logger::LogEvent(
"shader compilation finished", TerminalColor::Cyan);
102 BlamStrings::Logger::LogEvent(
"results:");
103 BlamStrings::Logger::LogEvent(
"succeeded : " + std::to_string(successful_compiles), TerminalColor::BrightGreen);
104 BlamStrings::Logger::LogEvent(
"warnings : " + std::to_string(warning_compiles), TerminalColor::Yellow);
105 BlamStrings::Logger::LogEvent(
"failures : " + std::to_string(failed_compiles), TerminalColor::BrightRed);