#' Solve app dependencies
#'
#' @export
#' @note Updated 2023-10-17.
#'
#' @param appName `character(1)`.
#' Application name.
#'
#' @return `character`.
#' Application names.
#'
#' @examples
#' x <- appDependencies("python3.11")
#' print(x)
appDependencies <- function(appName) {
json <- .importAppJson()
sysDict <- .sysDict()
assert(
isString(appName),
isSubset(appName, names(json))
)
deps <- .getAppDeps(
name = appName,
json = json[[appName]],
sysDict = sysDict
)
if (is.null(deps)) {
return(character())
}
i <- 1L
lst <- list()
lst[[i]] <- deps
while (i <= length(deps)) {
deps <- Map(
name = lst[[i]],
json[lst[[i]]],
MoreArgs = list("sysDict" = sysDict),
f = .getAppDeps
)
deps <- unlist(deps, recursive = TRUE, use.names = FALSE)
if (is.null(deps)) {
break
}
i <- i + 1L
lst[[i]] <- deps
}
lst <- rev(lst)
deps <- unlist(lst, recursive = TRUE, use.names = FALSE)
deps <- unique(deps)
sysDict <- .sysDict()
lgl <- unlist(Map(
name = deps,
json = json[deps],
MoreArgs = list(sysDict = sysDict),
f = .isAppSupported
))
if (!any(lgl)) {
return(character())
}
out <- deps[lgl]
out
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.