#pragma once #include #include #include #include #include #include #include int bundle_js(char* bundle_filename, char* js_source_folder_name, char* file_extension) { // char bundle_filename[64] = "../dist/js/bundle.js"; // char js_source_folder_name[64] = "../assets/js/"; // char file_extension[64] = ".js"; char source_filename[NAME_MAX]; FILE * bundle_file; FILE * source_file; bundle_file = fopen_mkdir(bundle_filename, "w"); if(bundle_file == NULL) { char bundle_folderpath[PATH_MAX]; strcpy(bundle_folderpath, bundle_filename); char *p = strchr(bundle_folderpath, '/'); if (!p) { } else { *p = '\0'; } mkdir_p(bundle_filename); } char copy_buffer; // DIR *dir; struct dirent **ent; int number_of_files; // printf ("[jsbundle.c] bundle_filename: %s\n", bundle_filename); number_of_files = scandir(js_source_folder_name, &ent, NULL, alphasort); if (number_of_files > -1) { /* print all the files and directories within directory */ for (int i = 0; i < number_of_files; i++) { if(strcmp(ent[i]->d_name, ".") != 0 && strcmp(ent[i]->d_name, "..") != 0) { char *dot = strrchr(ent[i]->d_name, '.'); if(dot && !strcmp(dot, file_extension)) { fprintf(stderr, "[jsbundle.c] bundling file %s\n", ent[i]->d_name); strcpy(source_filename, js_source_folder_name); strcat(source_filename, ent[i]->d_name); source_file = fopen(source_filename, "r"); // printf("[jsbundle.c] source_filename: %s\n", source_filename); fprintf(bundle_file, "\n/* %s */\n", source_filename); copy_buffer = fgetc(source_file); while (copy_buffer != EOF) { fputc(copy_buffer, bundle_file); copy_buffer = fgetc(source_file); } fclose(source_file); } } } // closedir (dir); fclose(bundle_file); } else { /* could not open directory */ return 1; } return 0; }