R/cli.R

Defines functions cliUpdatePackages cliSnakeCase cliPruneApps cliPruneAppBinaries cliKebabCase cliFindAndMoveInSequence cliDockerBuildAllTags cliCheckSystem cliCamelCase .cliSyntacticRename

Documented in cliCamelCase cliCheckSystem cliDockerBuildAllTags cliFindAndMoveInSequence cliKebabCase cliPruneAppBinaries cliPruneApps cliSnakeCase cliUpdatePackages

#' Command line interface argument parsing functions
#'
#' @name cli
#' @keywords internal
#'
#' @note Updated 2023-01-27.
NULL



## Updated 2023-02-13.
.cliSyntacticRename <- function(fun) {
    assert(requireNamespaces("syntactic"))
    parse <- parseArgs(
        flags = c(
            "dry-run",
            "quiet",
            "recursive"
        ),
        positional = TRUE
    )
    positional <- parse[["positional"]]
    flags <- parse[["flags"]]
    args <- list(
        "path" = .unescapePos(positional),
        "recursive" = isSubset("recursive", flags),
        "fun" = fun,
        "quiet" = isSubset("quiet", flags),
        "dryRun" = isSubset("dry-run", flags)
    )
    do.call(what = syntactic::syntacticRename, args = args)
}



#' @rdname cli
#' @export
cliCamelCase <- function() {
    .cliSyntacticRename(fun = "camelCase")
}



#' @rdname cli
#' @export
cliCheckSystem <- function() {
    assert(!hasPositionalArgs())
    checkSystem()
}



#' @rdname cli
#' @export
cliDockerBuildAllTags <- function() {
    parse <- parseArgs(
        required = c("local", "remote"),
        optional = "days",
        flags = "force",
        positional = FALSE
    )
    args <- list(
        "local" = parse[["required"]][["local"]],
        "remote" = parse[["required"]][["remote"]],
        "force" = "force" %in% parse[["flags"]]
    )
    optional <- parse[["optional"]]
    if (!is.null(optional)) {
        if (isSubset("days", names(optional))) {
            args[["days"]] <- as.numeric(optional[["days"]])
        }
    }
    do.call(what = dockerBuildAllTags, args = args)
}



#' @rdname cli
#' @export
cliFindAndMoveInSequence <- function() {
    pos <- positionalArgs()
    args <- list(
        "sourceDir" = realpath(pos[[1L]]),
        "targetDir" = realpath(pos[[2L]])
    )
    do.call(what = findAndMoveInSequence, args = args)
}



#' @rdname cli
#' @export
cliKebabCase <- function() {
    .cliSyntacticRename(fun = "kebabCase")
}



#' @rdname cli
#' @export
cliPruneAppBinaries <- function() {
    assert(!hasPositionalArgs())
    pruneAppBinaries()
}



#' @rdname cli
#' @export
cliPruneApps <- function() {
    assert(!hasPositionalArgs())
    pruneApps()
}



#' @rdname cli
#' @export
cliSnakeCase <- function() {
    .cliSyntacticRename(fun = "snakeCase")
}



#' @rdname cli
#' @export
cliUpdatePackages <- function() {
    assert(!hasPositionalArgs())
    requireNamespaces("AcidDevTools")
    AcidDevTools::updatePackages()
}
acidgenomics/r-koopa documentation built on Oct. 31, 2023, 9:21 a.m.