R/unveil_project_log.R

Defines functions unveil_project_log

Documented in unveil_project_log

#' Creating a PROJECT_LOG when a new project is started
#' @import somersaulteR
#' @import dplyr
#' @import mirroR
#' @export

unveil_project_log <-
        function() {
        if (!(file.exists("project_log_00.R"))) {
                if (!(file.exists("PROJECT_LOG.RData"))) {
                        unbox_project_log()
                }
        }
        else {
                typewriteR::tell_me("Ready to source project_log_00?")
                typewriteR::stop_and_enter()
                source("project_log_00.R", local = TRUE)
                PROJECT_LOG_ID <<- "00"
                df_skeleton <- create_log_dataframe()
                df_skeleton <- somersaulteR::mutate_new_cols_if_not_exist_by_robj_name(df_skeleton,
                                                                                       "^PROJECT_LOG_")

                robj_names <- colnames(df_skeleton)
                for (i in 1:length(robj_names)) {
                        robj_name <- robj_names[i]
                        if (exists(robj_name)) {
                                column_name <- robj_name
                                df_skeleton[1, column_name] <- get(robj_name)
                        }
                }
                new_log_df <- df_skeleton %>% dplyr::mutate(PROJECT_LOG_TIMESTAMP = mirroR::get_timestamp()) %>%
                        somersaulteR::call_mr_clean()

                plant_directory_tree(input_dir_names = INPUT_DIR_NAMES,
                                     output_dir_names = OUTPUT_DIR_NAMES)


                dirs_to_log <- c(INPUT_DIR_NAMES, OUTPUT_DIR_NAMES)
                new_log_df2 <- list()
                for (i in 1:length(dirs_to_log)) {
                        new_log_df2[[i]] <-
                                new_log_df %>%
                                dplyr::mutate(PROJECT_LOG_DIR = dirs_to_log[i])
                }
                new_log_df2 <- dplyr::bind_rows(new_log_df2)

                PROJECT_LOG <- list(CURRENT = list(),
                                    HISTORY = list())
                for (i in 1:length(dirs_to_log)) {
                        dir_to_log <- dirs_to_log[i]
                        PROJECT_LOG[["HISTORY"]][[i]] <- list()
                        names(PROJECT_LOG[["HISTORY"]])[i] <- dirs_to_log[[i]]

                        PROJECT_LOG[["HISTORY"]][[i]][[1]] <- new_log_df2 %>%
                                                                        dplyr::filter(row_number() == i)
                        names(PROJECT_LOG[["HISTORY"]][[i]])[1] <- mirroR::get_timestamp()
                }
                refresh_current_project_log()
                assign("PROJECT_LOG", PROJECT_LOG, envir = globalenv())
                saveRDS(PROJECT_LOG, "PROJECT_LOG.RData")


                if (!(file.exists("PROJECT_LOG.csv"))) {
                        readr::write_csv(new_log_df2, "PROJECT_LOG.csv")
                }

                garbage_can <- c("PROJECT_LOG_ID", "INPUT_DIR_NAMES", "OUTPUT_DIR_NAMES")
                for (i in 1:length(garbage_can)) {
                        if (exists(garbage_can[i], envir = globalenv())) {
                                rm(list = garbage_can[i], envir = globalenv())
                        }
                }
                file.remove("project_log_00.R")
        }
}
patelm9/projectloggeR documentation built on Nov. 4, 2019, 11:21 p.m.