diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 756cebe6d..3ef0187d8 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -168,7 +168,7 @@ static void ClearExampleResources(char **resPaths); // Add/remove VS project (.vcxproj) tofrom existing VS solution (.sln) static int AddVSProjectToSolution(const char *projFile, const char *slnFile, const char *category); -//static int RemoveVSProjectFromSolution(const char *projFile, const char *slnFile, const char *category); +static int RemoveVSProjectFromSolution(const char *projFile, const char *slnFile, const char *category); // Generate unique UUID v4 string // Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1} @@ -770,11 +770,8 @@ int main(int argc, char *argv[]) FileRemove(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); // Edit: raylib/projects/VS2022/raylib.sln --> Remove example project - //--------------------------------------------------------------------------- - // TODO: Remove project from solution - //RemoveVSProjectFromSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), - // TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath)); - //--------------------------------------------------------------------------- + RemoveVSProjectFromSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), + TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exCategory); // Remove: raylib.com/examples//_example_name.html // Remove: raylib.com/examples//_example_name.data @@ -819,6 +816,22 @@ int main(int argc, char *argv[]) int exListLen = (int)strlen(exList); strcpy(exListUpdated, exList); + // Copy examples list into an update list + // NOTE: Checking and removing duplicate entries + int lineCount = 0; + char **exListLines = LoadTextLines(exList, &lineCount); + int exListUpdatedOffset = 0; + exListUpdatedOffset = sprintf(exListUpdated, "%s\n", exListLines[0]); + + for (int i = 1; i < lineCount; i++) + { + if ((TextFindIndex(exListUpdated, exListLines[i]) == -1) || (exListLines[i][0] == '#')) + exListUpdatedOffset += sprintf(exListUpdated + exListUpdatedOffset, "%s\n", exListLines[i]); + else listUpdated = true; + } + + UnloadTextLines(exListLines); + for (unsigned int i = 0; i < list.count; i++) { if ((strcmp("examples_template", GetFileNameWithoutExt(list.paths[i])) != 0) && // HACK: Skip "examples_template" @@ -859,8 +872,6 @@ int main(int argc, char *argv[]) int exCollectionCount = 0; rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, "ALL", false, &exCollectionCount); - // TODO: Validate: Check duplicate entries in collection list? - // Set status information for all examples, using "status" field in the struct for (int i = 0; i < exCollectionCount; i++) { @@ -2149,6 +2160,16 @@ static int AddVSProjectToSolution(const char *projFile, const char *slnFile, con return result; } +// Remove VS project (.vcxproj) to existing VS solution (.sln) +static int RemoveVSProjectFromSolution(const char *projFile, const char *slnFile, const char *category) +{ + int result = 0; + + // TODO: Remove project from solution file + + return result; +} + // Generate unique UUID v4 string // Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1} static const char *GenerateUUIDv4(void) @@ -2188,6 +2209,8 @@ static void UpdateSourceMetadata(const char *exSrcPath, const rlExampleInfo *inf char exDescription[256] = { 0 }; // Example description: example text line #3 char exTitle[64] = { 0 }; // Example title: fileName without extension, replacing underscores by spaces + // TODO: Update source code metadata + // Update example header title (line #3 - ALWAYS) // String: "* raylib [shaders] example - texture drawing" @@ -2305,12 +2328,11 @@ static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath) } } - // Get text between two strings // NOTE: Using static string to return result, MAX: 1024 bytes static char *GetTextBetween(const char *text, const char *begin, const char *end) { -#define MAX_TEXT_BETWEEN_SIZE 1024 + #define MAX_TEXT_BETWEEN_SIZE 1024 static char between[MAX_TEXT_BETWEEN_SIZE] = { 0 }; memset(between, 0, MAX_TEXT_BETWEEN_SIZE);