|
|
|
@ -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); |
|
|
|
//------------------------------------------------------------------------------------------------ |
|
|
|
|
|
|
|
|