shFILER Documentation

Get 'FILE' Provided to R by a Shell

Description

Look through the command line arguments, extracting FILE from either of the following: -f FILE or --file=FILE

Usage

shFILE(original = FALSE, for.msg = FALSE, default, else.)

site.file(original = FALSE, for.msg = FALSE, default, else.)
init.file(original = FALSE, for.msg = FALSE, default, else.)

Arguments

original

TRUE, FALSE, or NA; should the original or the normalized path be returned? NA means the normalized path will be returned if it has already been forced, and the original path otherwise.

for.msg

TRUE or FALSE; do you want the path for the purpose of printing a diagnostic message / / warning / / error? for.msg = TRUE will ignore original = FALSE, and will use original = NA instead.

default

if FILE is not found, this value is returned.

else.

missing or a function to apply if FILE is found. See tryCatch2() for inspiration.

Value

character string, or default if FILE was not found.

Note

The original and the normalized path are saved; this makes them faster when called subsequent times.

On Windows, the normalized path will use / as the file separator.

See Also

this.path(), here()

Examples

FILE.R <- tempfile(fileext = ".R")
this.path:::.write.code({
    this.path:::.withAutoprint({
        shFILE(original = TRUE)
        shFILE()
        shFILE(default = {
            stop("since 'FILE.R' will be found, argument 'default'\n",
                " will not be evaluated, so this error will not be\n",
                " thrown! you can use this to your advantage in a\n",
                " similar manner, doing arbitrary things only if\n",
                " 'FILE.R' is not found")
        })
    }, spaced = TRUE, verbose = FALSE, width.cutoff = 60L)
}, FILE.R)
this.path:::.Rscript(
    c("--default-packages=this.path", "--vanilla", FILE.R)
)
unlink(FILE.R)


for (expr in c("shFILE(original = TRUE)",
               "shFILE(original = TRUE, default = NULL)",
               "shFILE()",
               "shFILE(default = NULL)"))
{
    cat("\n\n")
    this.path:::.Rscript(
        c("--default-packages=this.path", "--vanilla", "-e", expr)
    )
}