#include #include #include #include "cms_util.h" #include "cms_err.h" #include "cms_files.h" #include "cms_page.h" #include "cms_build.h" //Temporary, for testing purposes static void print_page_tree(cms_page* page) { if (page->title) printf("Page: %s\n", page->title); //Loop over posts size_t i; for (i = 0; i < page->numposts; ++i) { printf("printing post\n"); printf("\tPost: %s\n", (page->posts[i]).title); } //Loop over subs for (i = 0; i < page->numsubs; ++i) { print_page_tree(&page->subs[i]); } printf("---------\n"); } int main(int argc, char** argv) { if (argc < 2) { fprintf(stderr, "Usage: %s \n", argv[0]); return 1; } //Initiate if (strcmp(argv[1], "init") == 0) { if (argc != 3) { fprintf(stderr, "Usage: %s init \n", argv[0]); return 1; } char* dirname = argv[2]; //Get the path of .cmsinited, which tells us //whether or not the directory is already inited char* initedPath = cms_util_path_join(dirname, CMS_FILE_INITED); if (initedPath == NULL) cms_err_panic(cms_err_create(CMS_ERR_ALLOC, NULL)); //Panic if the directory is already initiated if (cms_util_file_exists(initedPath)) cms_err_panic(cms_err_create(CMS_ERR_INITED, NULL)); //Copy files from resources cms_err* err; err = cms_util_dir_copy_recursive(CMS_FILE_RESOURCES, dirname); if (err) cms_err_panic(err); //Create .cmsinited file err = cms_util_file_create(initedPath); if (err) cms_err_panic(err); } //Build else if (strcmp(argv[1], "build") == 0) { if (argc != 3) { fprintf(stderr, "Usage: %s build \n", argv[0]); return 1; } char* dirname = argv[2]; //Get the path of .cmsinited, which tells us //whether or not the directory is already inited char* initedPath = cms_util_path_join(dirname, CMS_FILE_INITED); //Panic if the directory isn't initiated if (!cms_util_file_exists(initedPath)) cms_err_panic(cms_err_create(CMS_ERR_NOTINITED, NULL)); cms_page* root = cms_page_create(); if (root == NULL) cms_err_panic(cms_err_create(CMS_ERR_ALLOC, NULL)); char* path = cms_util_path_join(dirname, CMS_FILE_ROOT); if (path == NULL) cms_err_panic(cms_err_create(CMS_ERR_ALLOC, NULL)); //Build tree of pages and posts cms_err* err; err = cms_build_make_tree(root, path, NULL); free(path); if (err) cms_err_panic(err); char* outpath = cms_util_path_join(dirname, CMS_FILE_OUT); if (outpath == NULL) cms_err_panic(cms_err_create(CMS_ERR_ALLOC, NULL)); cms_build_write_files(root, outpath); print_page_tree(root); } //Nothing, print usage else { fprintf(stderr, "Usage: %s \n", argv[0]); return 1; } }