#' Handle error or printing message on successful DREME run
#'
#' @param processx_out processx ouput
#' @param silent whether or not to suppress printing all of stdout
#'
#' @return
#'
#' @noRd
print_process_stdout <- function(processx_out, silent = TRUE){
process_check_error(processx_out)
# leaving here incase needed for debugging
#nmotifs_line <- dreme_nmotifs_line(processx_out$stdout)
#if (!silent) message(nmotifs_line)
if (!silent) message(processx_out$stdout)
}
#' Print stderr from processx output
#'
#' @param processx_out output from processx::run(error_on_status = FALSE)
#' @param silent whether to suppress stderr printing or not
#'
#' @return
#'
#' @noRd
print_process_stderr <- function(processx_out, silent = TRUE){
process_check_error(processx_out)
if (!silent) message(processx_out$stderr)
}
#' Check if processx process completed successfully
#'
#' @param processx_out output of processx::run(error_on_status = F)
#' @param help_fun function to produce --help lines (processx call, for example). Can be rlang formula like ~{.x}.
#' @param user_flags flags from cmd_list_interp %>% cmd_list_to_flags
#' @param flags_fun passed to cmdfun::cmd_help_flags_similar(.fun)
#' @param default_help_fun `logical(1)` whether to use default
#' cmd_help_parse_flags behavior, or simply evaluate help_fun fully to suggest
#' names. Set to TRUE when help_fun returns vector of flag names to suggest against.
#'
#' @return NULL if exit status 0, otherwise print all stdout + stderr
#'
#' @examples
#'
#' @noRd
process_check_error <- function(processx_out, help_fun = NULL, user_flags = NULL, flags_fun = NULL, default_help_fun = FALSE){
if (processx_out$status != 0 & (is.null(help_fun) | is.null(user_flags))){
cat(processx_out$stdout)
stop(processx_out$stderr)
} else if (processx_out$status != 0) {
stopifnot(is.function(help_fun) | is(help_fun, "formula"))
stopifnot(is.function(flags_fun) | is.null(flags_fun) | is(flags_fun, "formula"))
# Allows lambda
help_fun <- rlang::as_function(help_fun)
cat(processx_out$stdout)
message(processx_out$stderr)
#usethis::ui_warn(c("\n", processx_out$stderr))
if (default_help_fun){
help_fun() %>%
cmdfun::cmd_help_parse_flags(split_newline = TRUE) %>%
cmdfun::cmd_help_flags_similar(user_flags, .fun = flags_fun) %>%
cmdfun::cmd_help_flags_suggest()
} else {
help_fun() %>%
cmdfun::cmd_help_flags_similar(user_flags, .fun = flags_fun) %>%
cmdfun::cmd_help_flags_suggest()
}
usethis::ui_stop("Shell process had non-zero exit status.")
}
return(NULL)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.