#' Writes csv with overwrite/append options if file exists
#' @param csv_basename basename without file extension of the output file
#' @param timestamp TRUE if a "_YYYY-MM-DD HH:MM:SS" timestamp is desired in the output filename
#' @param path_folder destination folder name. If this folder does not exist, it will be created.
#' @importFrom readr write_csv
#' @export
#'
write_project_csv <-
function(dataframe, csv_basename, timestamp = TRUE, path_folder = "OUTPUT") {
##Getting essential data
dataframe_name <- deparse(substitute(dataframe))
mirroR::dir_create_if_not_exist(path_folder) ##Creating directory if doesn't exist
##Getting log csv full fn
dir_name <- dirname(path_folder) ##Log csv always in topmost directory
log_csv_full_fn <- paste0("./", dir_name, "/", tolower(dir_name), "_log.csv")
projectloggeR::write_log_csv(dir_name)
stopifnot(file.exists(log_csv_full_fn))
if (timestamp == FALSE) {
fn <- mirroR::create_path_to_file(path_folder = path_folder,
basename = csv_basename,
file_extension = "csv")
} else {
fn <- mirroR::create_path_to_file(path_folder = path_folder,
basename = paste0(csv_basename, "_", mirroR::get_timestamp()),
file_extension = "csv")
}
if (!(file.exists(fn))) {
readr::write_csv(dataframe, fn)
typewriteR::tell_me("Finished writing ", fn, ".")
append_csv(log_csv_full_fn,
data.frame(LOAD_TIMESTAMP = "",
LOAD_COMMENT = "",
PARENT_FN = "",
SOURCE_COMMENT = "",
FN = "",
FN_MD5SUM = "",
LOG_ID = "",
ROBJ_NAME = dataframe_name,
RDATA_FN = "",
RDATA_FN_MD5SUM = "",
LOG_TIMESTAMP = "",
LOG_COMMENT = "",
WRITE_TIMESTAMP = mirroR::get_timestamp(),
WRITE_COMMENT = "",
WRITE_FULL_FN = fn,
WRITE_FULL_FN_MD5SUM = tools::md5sum(fn),
TO_DB_TIMESTAMP = "",
TO_DB_COMMENT = "",
TO_DB_NAME = "",
TO_DB_SCHEMA = "",
TO_DB_TABLE = "",
FROM_DB_TIMESTAMP = "",
FROM_DB_COMMENT = "",
FROM_DB_NAME = "",
FROM_DB_SCHEMA = "",
FROM_DB_TABLE = "")
)
} else {
typewriteR::tell_me(fn, " already exists!")
df <- typewriteR::create_menu(data.frame(SELECT = c("overwrite", "append", "rename this file")))
ans <- typewriteR::pick_menu_item(df)
ans <- ans$SELECT[1]
if (ans == "overwrite") {
typewriteR::tell_me("WARNING:", fn, "will now be overwritten!")
typewriteR::stop_and_enter()
readr::write_csv(dataframe, fn)
append_csv(log_csv_full_fn,
data.frame(LOAD_TIMESTAMP = "",
LOAD_COMMENT = "",
PARENT_FN = "",
SOURCE_COMMENT = "",
FN = "",
FN_MD5SUM = "",
LOG_ID = "",
ROBJ_NAME = dataframe_name,
RDATA_FN = "",
RDATA_FN_MD5SUM = "",
LOG_TIMESTAMP = "",
LOG_COMMENT = "",
WRITE_TIMESTAMP = mirroR::get_timestamp(),
WRITE_COMMENT = "",
WRITE_FULL_FN = fn,
WRITE_FULL_FN_MD5SUM = tools::md5sum(fn),
TO_DB_TIMESTAMP = "",
TO_DB_COMMENT = "",
TO_DB_NAME = "",
TO_DB_SCHEMA = "",
TO_DB_TABLE = "",
FROM_DB_TIMESTAMP = "",
FROM_DB_COMMENT = "",
FROM_DB_NAME = "",
FROM_DB_SCHEMA = "",
FROM_DB_TABLE = "") %>%
dplyr::mutate_all(as.character) %>%
dplyr::mutate_all(trimws, "both"))
} else if (ans == "append") {
typewriteR::tell_me("WARNING:", fn, "will now be appended!")
typewriteR::stop_and_enter()
projektoR::append_csv(csv_fn = fn, dataframe = dataframe)
append_csv(log_csv_full_fn,
data.frame(LOAD_TIMESTAMP = "",
LOAD_COMMENT = "",
PARENT_FN = "",
SOURCE_COMMENT = "",
FN = "",
FN_MD5SUM = "",
LOG_ID = "",
ROBJ_NAME = dataframe_name,
RDATA_FN = "",
RDATA_FN_MD5SUM = "",
LOG_TIMESTAMP = "",
LOG_COMMENT = "",
WRITE_TIMESTAMP = mirroR::get_timestamp(),
WRITE_COMMENT = "",
WRITE_FULL_FN = fn,
WRITE_FULL_FN_MD5SUM = tools::md5sum(fn),
TO_DB_TIMESTAMP = "",
TO_DB_COMMENT = "",
TO_DB_NAME = "",
TO_DB_SCHEMA = "",
TO_DB_TABLE = "",
FROM_DB_TIMESTAMP = "",
FROM_DB_COMMENT = "",
FROM_DB_NAME = "",
FROM_DB_SCHEMA = "",
FROM_DB_TABLE = "") %>%
dplyr::mutate_all(as.character) %>%
dplyr::mutate_all(trimws, "both")
)
} else {
typewriteR::tell_me("Please enter another filename other than", fn, ".")
fn <- readline("New full_file_path: ")
if (!(file.exists(fn))) {
readr::write_csv(dataframe, fn)
append_csv(log_csv_full_fn,
data.frame(LOAD_TIMESTAMP = "",
LOAD_COMMENT = "",
PARENT_FN = "",
SOURCE_COMMENT = "",
FN = "",
FN_MD5SUM = "",
LOG_ID = "",
ROBJ_NAME = dataframe_name,
RDATA_FN = "",
RDATA_FN_MD5SUM = "",
LOG_TIMESTAMP = "",
LOG_COMMENT = "",
WRITE_TIMESTAMP = mirroR::get_timestamp(),
WRITE_COMMENT = "",
WRITE_FULL_FN = fn,
WRITE_FULL_FN_MD5SUM = tools::md5sum(fn),
TO_DB_TIMESTAMP = "",
TO_DB_COMMENT = "",
TO_DB_NAME = "",
TO_DB_SCHEMA = "",
TO_DB_TABLE = "",
FROM_DB_TIMESTAMP = "",
FROM_DB_COMMENT = "",
FROM_DB_NAME = "",
FROM_DB_SCHEMA = "",
FROM_DB_TABLE = "") %>%
dplyr::mutate_all(as.character) %>%
dplyr::mutate_all(trimws, "both")
)
}
}
}}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.