mirror of
https://github.com/raysan5/raylib.git
synced 2025-12-25 10:22:33 -05:00
REXM: ADDED: More detailed log info
This commit is contained in:
@ -464,12 +464,14 @@ int main(int argc, char *argv[])
|
||||
// Create: raylib/examples/<category>/<category>_example_name.png
|
||||
if (FileExists(TextFormat("%s/%s.png", GetDirectoryPath(inFileName), exName)))
|
||||
{
|
||||
LOG("INFO: [%s] Copying file screenshot...\n", GetFileName(inFileName));
|
||||
FileCopy(TextFormat("%s/%s.png", GetDirectoryPath(inFileName), exName),
|
||||
TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName));
|
||||
}
|
||||
else // No screenshot available next to source file
|
||||
{
|
||||
// Copy screenshot template
|
||||
LOG("WARNING: [%s] No screenshot found, using placeholder screenshot\n", GetFileName(inFileName));
|
||||
FileCopy(exTemplateScreenshot, TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName));
|
||||
}
|
||||
|
||||
@ -478,10 +480,13 @@ int main(int argc, char *argv[])
|
||||
// Scan resources used in example to copy
|
||||
// NOTE: resources path will be relative to example source file directory
|
||||
int resPathCount = 0;
|
||||
LOG("INFO: [%s] Scanning file for resources...\n", GetFileName(inFileName));
|
||||
char **resPaths = ScanExampleResources(TextFormat("%s/%s.c", GetDirectoryPath(inFileName), exName), &resPathCount);
|
||||
|
||||
if (resPathCount > 0)
|
||||
{
|
||||
LOG("INFO: [%s] Required resources found: %i\n", GetFileName(inFileName), resPathCount);
|
||||
|
||||
for (int r = 0; r < resPathCount; r++)
|
||||
{
|
||||
// WARNING: Special case to consider: shaders, resource paths could use conditions: "glsl%i"
|
||||
@ -494,7 +499,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
char *resPathUpdated = TextReplace(resPaths[r], "glsl%i", TextFormat("glsl%i", glslVer[v]));
|
||||
|
||||
LOG("INFO: Example resource required: %s\n", resPathUpdated);
|
||||
LOG("INFO: [%s] Resource required [%i/%i]: %s\n", GetFileName(inFileName), r, resPathCount, resPathUpdated);
|
||||
|
||||
if (FileExists(TextFormat("%s/%s", GetDirectoryPath(inFileName), resPathUpdated)))
|
||||
{
|
||||
@ -515,7 +520,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG("INFO: Example resource required: %s\n", resPaths[r]);
|
||||
LOG("INFO: [%s] Resource required [%i/%i]: %s\n", GetFileName(inFileName), r, resPathCount, resPaths[r]);
|
||||
|
||||
if (FileExists(TextFormat("%s/%s", GetDirectoryPath(inFileName), resPaths[r])))
|
||||
{
|
||||
@ -543,6 +548,8 @@ int main(int argc, char *argv[])
|
||||
char *exCollectionList = LoadFileText(exCollectionFilePath);
|
||||
if (TextFindIndex(exCollectionList, exName) == -1) // Example not found
|
||||
{
|
||||
LOG("INFO: [%s] Adding example to collection list (%s)\n", GetFileName(inFileName), exCategory);
|
||||
|
||||
char *exCollectionListUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); // Updated list copy, 2MB
|
||||
|
||||
// Add example to the main list, by category
|
||||
@ -560,9 +567,15 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Get required example info from example file header (if provided)
|
||||
|
||||
// NOTE: If no example info is provided (other than category/name), just using some default values
|
||||
// NOTE: Load example info from provided example header
|
||||
rlExampleInfo *exInfo = LoadExampleInfo(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName));
|
||||
|
||||
LOG("INFO: [%s] Example info: \n", GetFileName(inFileName));
|
||||
LOG(" > Author: %s (@%s)\n", exInfo->author, exInfo->authorGitHub);
|
||||
LOG(" > Stars: %i\n", exInfo->stars);
|
||||
LOG(" > Version-Update: %s-%s\n", exInfo->verCreated, exInfo->verUpdated);
|
||||
LOG(" > Created-Reviewed: %i-%i\n", exInfo->yearCreated, exInfo->yearReviewed);
|
||||
|
||||
// Get example difficulty stars text
|
||||
char starsText[16] = { 0 };
|
||||
for (int i = 0; i < 4; i++)
|
||||
@ -599,13 +612,14 @@ int main(int argc, char *argv[])
|
||||
UnloadFileText(exCollectionList);
|
||||
//------------------------------------------------------------------------------------------------
|
||||
|
||||
// Update: Makefile, Makefile.Web, README.md, examples.js
|
||||
// Update: Metadata, Makefile, Makefile.Web, README.md, examples.js
|
||||
//------------------------------------------------------------------------------------------------
|
||||
UpdateRequiredFiles();
|
||||
//------------------------------------------------------------------------------------------------
|
||||
|
||||
// Create: raylib/projects/VS2022/examples/<category>_example_name.vcxproj
|
||||
//------------------------------------------------------------------------------------------------
|
||||
LOG("INFO: [%s] Creating example project\n", TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName));
|
||||
// WARNING: When adding new project a unique UUID should be assigned!
|
||||
FileCopy(TextFormat("%s/../projects/VS2022/examples/core_basic_window.vcxproj", exBasePath),
|
||||
TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName));
|
||||
@ -619,6 +633,7 @@ int main(int argc, char *argv[])
|
||||
// we must store provided file paths because pointers will be overwriten
|
||||
// TODO: It seems projects are added to solution BUT not to required solution folder,
|
||||
// that process still requires to be done manually
|
||||
LOG("INFO: [%s] Adding project to raylib solution (.sln)\n", TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName));
|
||||
AddVSProjectToSolution(exVSProjectSolutionFile,
|
||||
TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), exCategory);
|
||||
//------------------------------------------------------------------------------------------------
|
||||
@ -633,17 +648,21 @@ int main(int argc, char *argv[])
|
||||
// WARNING 1: EMSDK_PATH must be set to proper location when calling from GitHub Actions
|
||||
// WARNING 2: raylib.a and raylib.web.a must be available when compiling locally
|
||||
#if defined(_WIN32)
|
||||
LOG("INFO: [%s] Building example for PLATFORM_WEB (Host: Win32)\n", GetFileNameWithoutExt(inFileName));
|
||||
//putenv("RAYLIB_DIR=C:\\GitHub\\raylib");
|
||||
putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
|
||||
_putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
|
||||
system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName));
|
||||
#else
|
||||
LOG("INFO: [%s] Building example for PLATFORM_WEB (Host: POSIX)\n", GetFileNameWithoutExt(inFileName));
|
||||
system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName));
|
||||
#endif
|
||||
// Update generated .html metadata
|
||||
LOG("INFO: [%s] Updating HTML Metadata...\n", TextFormat("%s.html", exName));
|
||||
UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName),
|
||||
TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName));
|
||||
|
||||
// Copy results to web side
|
||||
LOG("INFO: [%s] Copy example build to raylib.com\n", exName);
|
||||
FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName),
|
||||
TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName));
|
||||
FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exCategory, exName),
|
||||
@ -732,7 +751,7 @@ int main(int argc, char *argv[])
|
||||
// Recompile example (on raylib side)
|
||||
// WARNING: EMSDK_PATH must be set to proper location when calling from GitHub Actions
|
||||
#if defined(_WIN32)
|
||||
putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
|
||||
_putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
|
||||
system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename));
|
||||
#else
|
||||
system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename));
|
||||
@ -776,6 +795,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Remove example from collection for files update
|
||||
//------------------------------------------------------------------------------------------------
|
||||
LOG("INFO: [%s] Removing example from collection\n", exName);
|
||||
char *exCollectionList = LoadFileText(exCollectionFilePath);
|
||||
int exIndex = TextFindIndex(exCollectionList, TextFormat("%s;%s", exCategory, exName));
|
||||
if (exIndex > 0) // Example found
|
||||
@ -831,22 +851,33 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Remove: raylib/examples/<category>/<category>_example_name.c
|
||||
// Remove: raylib/examples/<category>/<category>_example_name.png
|
||||
LOG("INFO: [%s] Removing example code file\n", TextFormat("%s.c", exName));
|
||||
FileRemove(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName));
|
||||
LOG("INFO: [%s] Removing example screenshot file\n", TextFormat("%s.png", exName));
|
||||
FileRemove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName));
|
||||
|
||||
// Edit: Update required files: Makefile, Makefile.Web, README.md, examples.js
|
||||
UpdateRequiredFiles();
|
||||
|
||||
// Remove: raylib/projects/VS2022/examples/<category>_example_name.vcxproj
|
||||
LOG("INFO: [%s] Removing example project file\n", TextFormat("%s.vcxproj", exName));
|
||||
FileRemove(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName));
|
||||
|
||||
// Edit: raylib/projects/VS2022/raylib.sln --> Remove example project
|
||||
LOG("INFO: [%s] Removing example from raylib solution (.sln)\n", exName);
|
||||
RemoveVSProjectFromSolution(TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exName);
|
||||
|
||||
// Remove: Delete example build from local copy (if exists)
|
||||
FileRemove(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName));
|
||||
FileRemove(TextFormat("%s/%s/%s.data", exBasePath, exCategory, exName));
|
||||
FileRemove(TextFormat("%s/%s/%s.wasm", exBasePath, exCategory, exName));
|
||||
FileRemove(TextFormat("%s/%s/%s.js", exBasePath, exCategory, exName));
|
||||
|
||||
// Remove: raylib.com/examples/<category>/<category>_example_name.html
|
||||
// Remove: raylib.com/examples/<category>/<category>_example_name.data
|
||||
// Remove: raylib.com/examples/<category>/<category>_example_name.wasm
|
||||
// Remove: raylib.com/examples/<category>/<category>_example_name.js
|
||||
LOG("INFO: [%s] Deleting example from raylib.com\n", exName);
|
||||
FileRemove(TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName));
|
||||
FileRemove(TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName));
|
||||
FileRemove(TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName));
|
||||
@ -868,11 +899,10 @@ int main(int argc, char *argv[])
|
||||
// Build: raylib.com/examples/<category>/<category>_example_name.data
|
||||
// Build: raylib.com/examples/<category>/<category>_example_name.wasm
|
||||
// Build: raylib.com/examples/<category>/<category>_example_name.js
|
||||
|
||||
#if defined(_WIN32)
|
||||
// Set required environment variables
|
||||
//putenv(TextFormat("RAYLIB_DIR=%s\\..", exBasePath));
|
||||
putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
|
||||
_putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
|
||||
//putenv("MAKE=mingw32-make");
|
||||
//ChangeDirectory(exBasePath);
|
||||
#endif
|
||||
@ -880,22 +910,28 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
// Build example for PLATFORM_DESKTOP
|
||||
#if defined(_WIN32)
|
||||
LOG("INFO: [%s] Building example for PLATFORM_DESKTOP (Host: Win32)\n", exName);
|
||||
system(TextFormat("mingw32-make -C %s %s/%s PLATFORM=PLATFORM_DESKTOP -B", exBasePath, exRebuildList[i].category, exRebuildList[i].name));
|
||||
#else
|
||||
LOG("INFO: [%s] Building example for PLATFORM_DESKTOP (Host: POSIX)\n", exName);
|
||||
system(TextFormat("make -C %s %s/%s PLATFORM=PLATFORM_DESKTOP -B", exBasePath, exRebuildList[i].category, exRebuildList[i].name));
|
||||
#endif
|
||||
|
||||
// Build example for PLATFORM_WEB
|
||||
#if defined(_WIN32)
|
||||
LOG("INFO: [%s] Building example for PLATFORM_WEB (Host: Win32)\n", exName);
|
||||
system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRebuildList[i].category, exRebuildList[i].name));
|
||||
#else
|
||||
LOG("INFO: [%s] Building example for PLATFORM_WEB (Host: POSIX)\n", exName);
|
||||
system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRebuildList[i].category, exRebuildList[i].name));
|
||||
#endif
|
||||
// Update generated .html metadata
|
||||
LOG("INFO: [%s] Updating HTML Metadata...\n", TextFormat("%s.html", exRebuildList[i].name)),
|
||||
UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exRebuildList[i].category, exRebuildList[i].name),
|
||||
TextFormat("%s/%s/%s.c", exBasePath, exRebuildList[i].category, exRebuildList[i].name));
|
||||
|
||||
// Copy results to web side
|
||||
LOG("INFO: [%s] Copy example build to raylib.com\n", exRebuildList[i].name),
|
||||
FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exRebuildList[i].category, exRebuildList[i].name),
|
||||
TextFormat("%s/%s/%s.html", exWebPath, exRebuildList[i].category, exRebuildList[i].name));
|
||||
FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exRebuildList[i].category, exRebuildList[i].name),
|
||||
@ -933,10 +969,9 @@ int main(int argc, char *argv[])
|
||||
VALID_INVALID_CATEGORY
|
||||
*/
|
||||
|
||||
// TODO: Log more details about the validation process
|
||||
|
||||
// Scan available example .c files and add to collection missing ones
|
||||
// NOTE: Source of truth is what we have in the examples directories (on validation/update)
|
||||
LOG("INFO: Scanning available example (.c) files to be added to collection...\n");
|
||||
FilePathList clist = LoadDirectoryFilesEx(exBasePath, ".c", true);
|
||||
|
||||
char *exList = LoadFileText(exCollectionFilePath);
|
||||
@ -1007,6 +1042,7 @@ int main(int argc, char *argv[])
|
||||
UnloadDirectoryFiles(clist);
|
||||
|
||||
// Check all examples in collection [examples_list.txt] -> Source of truth!
|
||||
LOG("INFO: Validating examples in collection...\n");
|
||||
int exCollectionCount = 0;
|
||||
rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, "ALL", false, &exCollectionCount);
|
||||
|
||||
@ -1016,6 +1052,8 @@ int main(int argc, char *argv[])
|
||||
rlExampleInfo *exInfo = &exCollection[i];
|
||||
exInfo->status = 0;
|
||||
|
||||
LOG("INFO: [%s] Validating example...\n", exInfo->name);
|
||||
|
||||
// Validate: raylib/examples/<category>/<category>_example_name.c -> File exists?
|
||||
if (!FileExists(TextFormat("%s/%s/%s.c", exBasePath, exInfo->category, exInfo->name))) exInfo->status |= VALID_MISSING_C;
|
||||
|
||||
@ -1138,11 +1176,16 @@ int main(int argc, char *argv[])
|
||||
exInfo->status |= VALID_INCONSISTENT_INFO;
|
||||
}
|
||||
|
||||
if (exInfo->status == 0) LOG("INFO: [%s] Validation result: OK", exInfo->name);
|
||||
else LOG("WARNING: [%s] Validation result: ISSUES FOUND", exInfo->name);
|
||||
|
||||
UnloadExampleInfo(exInfoHeader);
|
||||
}
|
||||
|
||||
if (opCode == OP_UPDATE)
|
||||
{
|
||||
LOG("INFO: Updating examples with issues in collection...\n");
|
||||
|
||||
// Actions to fix/review anything possible from validation results
|
||||
//------------------------------------------------------------------------------------------------
|
||||
// Check examples "status" information
|
||||
@ -1162,16 +1205,16 @@ int main(int argc, char *argv[])
|
||||
|
||||
// NOTE: Some examples should be excluded from VS2022 solution because
|
||||
// they have specific platform/linkage requirements:
|
||||
if ((strcmp(exInfo->name, "core_basic_window_web") == 0) ||
|
||||
(strcmp(exInfo->name, "core_input_gestures_web") == 0) ||
|
||||
(strcmp(exInfo->name, "raylib_opengl_interop") == 0) ||
|
||||
(strcmp(exInfo->name, "raymath_vector_angle") == 0)) continue;
|
||||
if ((strcmp(exInfo->name, "web_basic_window") == 0) ||
|
||||
(strcmp(exInfo->name, "raylib_opengl_interop") == 0)) continue;
|
||||
|
||||
// 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)
|
||||
{
|
||||
LOG("WARNING: [%s] Missing VS2022 project file\n", exInfo->name);
|
||||
LOG("INFO: [%s.vcxproj] Creating VS2022 project file\n", exInfo->name);
|
||||
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),
|
||||
@ -1185,6 +1228,8 @@ int main(int argc, char *argv[])
|
||||
// Add project (.vcxproj) to raylib solution (.sln)
|
||||
if (exInfo->status & VALID_NOT_IN_VCXSOL)
|
||||
{
|
||||
LOG("WARNING: [%s.vcxproj] Project not included in raylib solution (.sln)\n", exInfo->name);
|
||||
LOG("INFO: [%s.vcxproj] Adding project to raylib solution (.sln)\n", exInfo->name);
|
||||
AddVSProjectToSolution(exVSProjectSolutionFile,
|
||||
TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), exInfo->category);
|
||||
|
||||
@ -1199,19 +1244,25 @@ int main(int argc, char *argv[])
|
||||
if ((strcmp(exInfo->category, "others") != 0) && // Skipping "others" category
|
||||
((exInfo->status & VALID_MISSING_WEB_OUTPUT) || (exInfo->status & VALID_MISSING_WEB_METADATA)))
|
||||
{
|
||||
LOG("WARNING: [%s] Example not available on raylib web\n", exInfo->name);
|
||||
|
||||
// Build example for PLATFORM_WEB
|
||||
#if defined(_WIN32)
|
||||
putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
|
||||
LOG("INFO: [%s] Building example for PLATFORM_WEB (Host: Win32)\n", exInfo->name);
|
||||
_putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin");
|
||||
system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name));
|
||||
#else
|
||||
LOG("INFO: [%s] Building example for PLATFORM_WEB (Host: POSIX)\n", exInfo->name);
|
||||
system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name));
|
||||
#endif
|
||||
|
||||
// Update generated .html metadata
|
||||
LOG("INFO: [%s.html] Updating HTML Metadata...\n", exInfo->name);
|
||||
UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exInfo->category, exInfo->name),
|
||||
TextFormat("%s/%s/%s.c", exBasePath, exInfo->category, exInfo->name));
|
||||
|
||||
// Copy results to web side
|
||||
LOG("INFO: [%s] Copy example build to raylib.com\n", exInfo->name);
|
||||
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),
|
||||
@ -1228,6 +1279,8 @@ int main(int argc, char *argv[])
|
||||
if (exInfo->status & VALID_INCONSISTENT_INFO)
|
||||
{
|
||||
// Update source code header info
|
||||
LOG("WARNING: [%s.c] Inconsistent source code metadata\n", exInfo->name);
|
||||
LOG("INFO: [%s.c] Updating source code metadata...\n", exInfo->name);
|
||||
UpdateSourceMetadata(TextFormat("%s/%s/%s.c", exBasePath, exInfo->category, exInfo->name), exInfo);
|
||||
|
||||
exInfo->status &= ~VALID_INCONSISTENT_INFO;
|
||||
@ -1273,6 +1326,7 @@ int main(int argc, char *argv[])
|
||||
| shapes_colors_palette | ✘ | ✔ | ✘ | ✔ | ✘ | ✔ | ✔ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
|
||||
| text_format_text | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ | ✘ | ✔ | ✔ | ✔ | ✔ |
|
||||
*/
|
||||
LOG("INFO: [examples_report.md] Generating examples validation report...\n");
|
||||
|
||||
char *report = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1);
|
||||
|
||||
@ -1324,6 +1378,8 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Generate a report with only the examples missing some elements
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
LOG("INFO: [examples_report_issues.md] Generating examples issues report...\n");
|
||||
|
||||
char *reportIssues = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1);
|
||||
|
||||
repIndex = 0;
|
||||
@ -1437,6 +1493,7 @@ static int UpdateRequiredFiles(void)
|
||||
|
||||
// Edit: Example source code metadata for consistency
|
||||
//------------------------------------------------------------------------------------------------
|
||||
LOG("INFO: Updating all examples metadata...\n");
|
||||
int exListCount = 0;
|
||||
rlExampleInfo *exList = LoadExamplesData(exCollectionFilePath, "ALL", true, &exListCount);
|
||||
for (int i = 0; i < exListCount; i++)
|
||||
@ -1449,6 +1506,7 @@ static int UpdateRequiredFiles(void)
|
||||
|
||||
// Edit: raylib/examples/Makefile --> Update from collection
|
||||
//------------------------------------------------------------------------------------------------
|
||||
LOG("INFO: Updating raylib/examples/Makefile\n");
|
||||
char *mkText = LoadFileText(TextFormat("%s/Makefile", exBasePath));
|
||||
char *mkTextUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); // Updated Makefile copy, 2MB
|
||||
|
||||
@ -1484,6 +1542,7 @@ static int UpdateRequiredFiles(void)
|
||||
// Edit: raylib/examples/Makefile.Web --> Update from collection
|
||||
// NOTE: We avoid the "others" category on web building
|
||||
//------------------------------------------------------------------------------------------------
|
||||
LOG("INFO: Updating raylib/examples/Makefile.Web\n");
|
||||
char *mkwText = LoadFileText(TextFormat("%s/Makefile.Web", exBasePath));
|
||||
char *mkwTextUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); // Updated Makefile copy, 2MB
|
||||
|
||||
@ -1602,6 +1661,7 @@ static int UpdateRequiredFiles(void)
|
||||
|
||||
// Edit: raylib/examples/README.md --> Update from collection
|
||||
//------------------------------------------------------------------------------------------------
|
||||
LOG("INFO: Updating raylib/examples/README.md\n");
|
||||
// NOTE: Using [examples_list.txt] to update/regen README.md
|
||||
// Lines format: | 01 | [core_basic_window](core/core_basic_window.c) | <img src="core/core_basic_window.png" alt="core_basic_window" width="80"> | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) |
|
||||
char *mdText = LoadFileText(TextFormat("%s/README.md", exBasePath));
|
||||
@ -1710,6 +1770,7 @@ static int UpdateRequiredFiles(void)
|
||||
// Edit: raylib.com/common/examples.js --> Update from collection
|
||||
// NOTE: Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'),
|
||||
//------------------------------------------------------------------------------------------------
|
||||
LOG("INFO: Updating raylib.com/common/examples.js\n");
|
||||
char *jsText = LoadFileText(TextFormat("%s/../common/examples.js", exWebPath));
|
||||
if (!jsText)
|
||||
{
|
||||
@ -2233,7 +2294,7 @@ static int RemoveVSProjectFromSolution(const char *slnFile, const char *exName)
|
||||
char uuid[38] = { 0 };
|
||||
strcpy(uuid, "ABCDEF00-0123-4567-89AB-000000000012"); // Temp value
|
||||
int textUpdatedOfsset = 0;
|
||||
int exNameLen = strlen(exName);
|
||||
int exNameLen = (int)strlen(exName);
|
||||
|
||||
for (int i = 0, index = 0; i < lineCount; i++)
|
||||
{
|
||||
@ -2304,7 +2365,7 @@ static void UpdateSourceMetadata(const char *exSrcPath, const rlExampleInfo *inf
|
||||
char exNameFormated[256] = { 0 }; // Example name without category and using spaces
|
||||
int exNameIndex = TextFindIndex(info->name, "_");
|
||||
strcpy(exNameFormated, info->name + exNameIndex + 1);
|
||||
int exNameLen = strlen(exNameFormated);
|
||||
int exNameLen = (int)strlen(exNameFormated);
|
||||
for (int i = 0; i < exNameLen; i++) { if (exNameFormated[i] == '_') exNameFormated[i] = ' '; }
|
||||
|
||||
// Update example header title (line #3 - ALWAYS)
|
||||
|
||||
Reference in New Issue
Block a user