Created
December 15, 2021 01:19
-
-
Save abmathewks/70d274d4555734ef1e8251f4a120719a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CreateProjectFiles <- function(PROJECT_PATH = rstudioapi::getActiveProject(), | |
FOLDERS_TO_CREATE = c("data", "docs", "figs", "logs", | |
"output", "queries", "R", "tests"), | |
OPEN_NEW_SESSION = TRUE, | |
DEBUG = TRUE){ | |
if(DEBUG) message("CreateProjectFiles: Function initialized \n") | |
if(!dir.exists(PROJECT_PATH)){ | |
stop("CreateProjectFiles: Project path does not exist \n") | |
} | |
if(!getwd() == PROJECT_PATH){ | |
stop("CreateProjectFiles: Project path argument is different from the current working directory \n") | |
} | |
FUNCTION_OUTPUT <- list() | |
FUNCTION_OUTPUT[["CURRENT_DIRECTORY"]] <- getwd() | |
FUNCTION_OUTPUT[["PROJECT_PATH"]] <- PROJECT_PATH | |
FUNCTION_OUTPUT[["DIRECTORY_EXISTS"]] <- dir.exists(PROJECT_PATH) | |
FUNCTION_OUTPUT[["RPROJ_FILE_PRESENT"]] <- any(grepl("Rproj", list.files())) | |
FUNCTION_OUTPUT[["FOLDERS_PRESENT_ORIG"]] <- all(FOLDERS_TO_CREATE %in% list.files(PROJECT_PATH)) | |
if(!any(grepl("Rproj", list.files()))){ | |
if(DEBUG) message("CreateProjectFiles: Project is not present \n") | |
usethis::create_project(PROJECT_PATH, open = OPEN_NEW_SESSION) | |
} | |
if(!all(FOLDERS_TO_CREATE %in% list.files(PROJECT_PATH))){ | |
if(DEBUG) message("CreateProjectFiles: Creating files \n") | |
for(each_folder in FOLDERS_TO_CREATE){ | |
dir.create(file.path(PROJECT_PATH, each_folder), showWarnings = FALSE) | |
if(each_folder == "data"){ | |
dir.create(file.path(PROJECT_PATH, each_folder, "raw"), showWarnings = FALSE) | |
dir.create(file.path(PROJECT_PATH, each_folder, "processed"), showWarnings = FALSE) | |
} | |
} | |
} else { | |
if(DEBUG) message("CreateProjectFiles: FOLDERS_TO_CREATE already present in the PROJECT_PATH \n") | |
} | |
FUNCTION_OUTPUT[["FOLDERS_PRESENT_NEW"]] <- all(FOLDERS_TO_CREATE %in% list.files(PROJECT_PATH)) | |
FUNCTION_OUTPUT[["OPEN_NEW_SESSION"]] <- OPEN_NEW_SESSION | |
if(all(FOLDERS_TO_CREATE %in% list.files(PROJECT_PATH))){ | |
if(DEBUG) message("CreateProjectFiles: Function run completed \n") | |
return(FUNCTION_OUTPUT) | |
} else { | |
stop("CreateProjectFiles: Folders not created \n") | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment