Counter and Progress bar

This commit is contained in:
Alexey Norets 2025-09-21 19:03:01 +03:00
commit b5e1ee0326
3 changed files with 2540 additions and 0 deletions

40
nob.c Normal file
View File

@ -0,0 +1,40 @@
#define NOB_IMPLEMENTATION
#define NOB_STRIP_PREFIX
#include "nob.h"
#define BUILD_FOLDER "build/"
#define SRC_FOLDER "src/"
#define SRC_FILE "src/main.c"
int main(int argc, char **argv)
{
NOB_GO_REBUILD_URSELF(argc, argv);
Nob_Cmd cmd = {0};
if (!nob_mkdir_if_not_exists(BUILD_FOLDER)) return 1;
if (!nob_mkdir_if_not_exists(SRC_FOLDER)) return 1;
if(!file_exists(SRC_FILE)) {
String_Builder sb = {0};
sb_append_cstr(&sb, "#include <stdio.h>\n");
sb_append_cstr(&sb, "#define NOB_IMPLEMENTATION\n");
sb_append_cstr(&sb, "#define NOB_STRIP_PREFIX\n");
sb_append_cstr(&sb, "#include \"../nob.h\"\n");
sb_append_cstr(&sb, "\nint main()\n");
sb_append_cstr(&sb, "{\n printf(\"Hello, world\\n\");\n");
sb_append_cstr(&sb, " return 0;\n}\n");
/* const char *data = "#include <stdio.h>\n\nint main(){\n printf(\"Hello, world\\n\");\n return 0;\n}\n"; */
write_entire_file(SRC_FILE, sb.items, sb.count);
}
nob_cmd_append(&cmd, "cc");
nob_cmd_append(&cmd, "-Wall", "-Wextra");
nob_cmd_append(&cmd, "-o", BUILD_FOLDER"main", SRC_FOLDER"main.c");
if(!nob_cmd_run(&cmd)) return 1;
nob_cmd_append(&cmd, BUILD_FOLDER"main");
if(!nob_cmd_run(&cmd)) return 1;
return 0;
}

2468
nob.h Normal file

File diff suppressed because it is too large Load Diff

32
src/main.c Normal file
View File

@ -0,0 +1,32 @@
/* some comment */
#include <stdio.h>
#define NOB_IMPLEMENTATION
#define NOB_STRIP_PREFIX
#include "../nob.h"
int main()
{
size_t counter = 100;
for(size_t i = 0; i < counter; i++){
printf("\rProgress count: %zu/%zu", i, counter);
fflush(stdout);
}
printf("\n");
printf("\n");
for(size_t i = 0; i <= counter; i++){
size_t bar_max = 40;
size_t bar_current = bar_max*i/counter;
/* const char *spinner1 = "-\\|/"; */
const char *spinner[] = {"", "", "", "", "", "", "", "", "", ""};
printf("\rProgress bar: ");
for (size_t j = 0; j < bar_current; ++j) printf("#");
for (size_t j = bar_current; j < bar_max; ++j) printf(".");
/* printf(" %c", spinner1[i%strlen(spinner)]); */
printf(" %s", spinner[i%ARRAY_LEN(spinner)]);
fflush(stdout);
sleep(1);
}
printf("\n");
return 0;
}