diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 35f25bc54..36ed414a1 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -862,6 +862,86 @@ int main(int argc, char *argv[]) UnloadExampleInfo(exInfoHeader); } + if (opCode == OP_UPDATE) + { + // Actions to fix/review anything possible from validation results + //------------------------------------------------------------------------------------------------ + // Check examples "status" information + for (int i = 0; i < exCollectionCount; i++) + { + rlExampleInfo *exInfo = &exCollection[i]; + + if (exInfo->status & VALID_MISSING_C) LOG("WARNING: [%s] Missing code file\n", exInfo->name); + else + { + // NOTE: Some issues can not be automatically fixed, only logged + //if (exInfo->status & VALID_MISSING_PNG) LOG("WARNING: [%s] Missing screenshot file\n", exInfo->name); + //if (exInfo->status & VALID_INVALID_PNG) LOG("WARNING: [%s] Invalid screenshot file (using template)\n", exInfo->name); + //if (exInfo->status & VALID_MISSING_RESOURCES) LOG("WARNING: [%s] Missing resources detected\n", exInfo->name); + //if (exInfo->status & VALID_INCONSISTENT_INFO) LOG("WARNING: [%s] Inconsistent example header info\n", exInfo->name); + //if (exInfo->status & VALID_INVALID_CATEGORY) LOG("WARNING: [%s] Invalid example category\n", exInfo->name); + + // Review: Add: raylib/projects/VS2022/examples/_example_name.vcxproj + // Review: Add: raylib/projects/VS2022/raylib.sln + // Solves: VALID_MISSING_VCXPROJ, VALID_NOT_IN_VCXSOL + if (exInfo->status & VALID_MISSING_VCXPROJ) + { + FileCopy(TextFormat("%s/../projects/VS2022/examples/core_basic_window.vcxproj", exBasePath), + TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name)); + FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), + "core_basic_window", exInfo->name); + FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), + "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exInfo->category)); + + exInfo->status |= VALID_MISSING_VCXPROJ; + } + + // Add project (.vcxproj) to raylib solution (.sln) + if (exInfo->status & VALID_NOT_IN_VCXSOL) + { + AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), + exVSProjectSolutionFile, exInfo->category); + + exInfo->status |= VALID_NOT_IN_VCXSOL; + } + + // Review: Add/Remove: raylib.com/examples//_example_name.html + // Review: Add/Remove: raylib.com/examples//_example_name.data + // Review: Add/Remove: raylib.com/examples//_example_name.wasm + // Review: Add/Remove: raylib.com/examples//_example_name.js + // Solves: VALID_MISSING_WEB_OUTPUT + if (exInfo->status & VALID_MISSING_WEB_OUTPUT) + { + system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); + + // Copy results to web side + FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)); + FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.data", exWebPath, exInfo->category, exInfo->name)); + FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.wasm", exWebPath, exInfo->category, exInfo->name)); + FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.js", exWebPath, exInfo->category, exInfo->name)); + + exInfo->status |= VALID_MISSING_WEB_OUTPUT; + } + } + } + + // Update files: Makefile, Makefile.Web, README.md, examples.js + // Solves: VALID_NOT_IN_MAKEFILE, VALID_NOT_IN_MAKEFILE_WEB, VALID_NOT_IN_README, VALID_NOT_IN_JS + UpdateRequiredFiles(); + for (int i = 0; i < exCollectionCount; i++) + { + exCollection[i].status |= VALID_NOT_IN_MAKEFILE; + exCollection[i].status |= VALID_NOT_IN_MAKEFILE_WEB; + exCollection[i].status |= VALID_NOT_IN_README; + exCollection[i].status |= VALID_NOT_IN_JS; + } + //------------------------------------------------------------------------------------------------ + } + // Generate validation report/table with results (.md) /* Columns: @@ -931,75 +1011,6 @@ int main(int argc, char *argv[]) SaveFileText(TextFormat("%s/../tools/rexm/%s", exBasePath, "examples_report.md"), report); RL_FREE(report); - //UnloadExamplesData(exCollection); // Done at the end, it can be required for fixing - - if (opCode == OP_UPDATE) - { - // Actions to fix/review anything possible from validation results - //------------------------------------------------------------------------------------------------ - // Check examples "status" information - for (int i = 0; i < exCollectionCount; i++) - { - rlExampleInfo *exInfo = &exCollection[i]; - - if (exInfo->status & VALID_MISSING_C) LOG("WARNING: [%s] Missing code file\n", exInfo->name); - else - { - // NOTE: Some issues can not be automatically fixed, only logged - //if (exInfo->status & VALID_MISSING_PNG) LOG("WARNING: [%s] Missing screenshot file\n", exInfo->name); - //if (exInfo->status & VALID_INVALID_PNG) LOG("WARNING: [%s] Invalid screenshot file (using template)\n", exInfo->name); - //if (exInfo->status & VALID_MISSING_RESOURCES) LOG("WARNING: [%s] Missing resources detected\n", exInfo->name); - //if (exInfo->status & VALID_INCONSISTENT_INFO) LOG("WARNING: [%s] Inconsistent example header info\n", exInfo->name); - //if (exInfo->status & VALID_INVALID_CATEGORY) LOG("WARNING: [%s] Invalid example category\n", exInfo->name); - - // Review: Add: raylib/projects/VS2022/examples/_example_name.vcxproj - // Review: Add: raylib/projects/VS2022/raylib.sln - // Solves: VALID_MISSING_VCXPROJ, VALID_NOT_IN_VCXSOL - if (exInfo->status & VALID_MISSING_VCXPROJ) - { - FileCopy(TextFormat("%s/../projects/VS2022/examples/core_basic_window.vcxproj", exBasePath), - TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name)); - FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), - "core_basic_window", exInfo->name); - FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), - "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exInfo->category)); - } - - // Add project (.vcxproj) to raylib solution (.sln) - if (exInfo->status & VALID_NOT_IN_VCXSOL) - { - AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), - exVSProjectSolutionFile, exInfo->category); - } - - // Review: Add/Remove: raylib.com/examples//_example_name.html - // Review: Add/Remove: raylib.com/examples//_example_name.data - // Review: Add/Remove: raylib.com/examples//_example_name.wasm - // Review: Add/Remove: raylib.com/examples//_example_name.js - // Solves: VALID_MISSING_WEB_OUTPUT - if (exInfo->status & VALID_MISSING_WEB_OUTPUT) - { - system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); - - // Copy results to web side - FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exInfo->category, exInfo->name), - TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)); - FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exInfo->category, exInfo->name), - TextFormat("%s/%s/%s.data", exWebPath, exInfo->category, exInfo->name)); - FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exInfo->category, exInfo->name), - TextFormat("%s/%s/%s.wasm", exWebPath, exInfo->category, exInfo->name)); - FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exInfo->category, exInfo->name), - TextFormat("%s/%s/%s.js", exWebPath, exInfo->category, exInfo->name)); - } - } - } - - // Update files: Makefile, Makefile.Web, README.md, examples.js - // Solves: VALID_NOT_IN_MAKEFILE, VALID_NOT_IN_MAKEFILE_WEB, VALID_NOT_IN_README, VALID_NOT_IN_JS - UpdateRequiredFiles(); - //------------------------------------------------------------------------------------------------ - } - UnloadExamplesData(exCollection); //------------------------------------------------------------------------------------------------