|
@@ -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/<category>_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/<category>/<category>_example_name.html
|
|
|
+ // Review: Add/Remove: raylib.com/examples/<category>/<category>_example_name.data
|
|
|
+ // Review: Add/Remove: raylib.com/examples/<category>/<category>_example_name.wasm
|
|
|
+ // Review: Add/Remove: raylib.com/examples/<category>/<category>_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/<category>_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/<category>/<category>_example_name.html
|
|
|
- // Review: Add/Remove: raylib.com/examples/<category>/<category>_example_name.data
|
|
|
- // Review: Add/Remove: raylib.com/examples/<category>/<category>_example_name.wasm
|
|
|
- // Review: Add/Remove: raylib.com/examples/<category>/<category>_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);
|
|
|
//------------------------------------------------------------------------------------------------
|
|
|
|