Utility function for parsing the arguments provided by a user. Drop any specified key:value pairs with keyvals_to_drop or drop any specific values vals_to_drop. With normalise_paths as TRUE, all filepaths in the arglist will be converted to basenames.

arglist_parse(
  arglist,
  keyvals_to_drop = NULL,
  vals_to_drop = NULL,
  normalise_paths = TRUE
)

Arguments

arglist

Arguments as character vector

keyvals_to_drop

Argument keys to drop, e.g. -wd.

vals_to_drop

Specific values to drop, e.g. --verbose.

normalise_paths

Reduce paths to basenames? Default, TRUE.

Value

Character vector

Details

It is important the file paths are normalised, because they will not be available to the Docker container. The only files available will be those that have been transferred to the container as determined through the outsider_init. These files will be located in the same directory as where the function is called and require no absolute file path.

Examples

library(outsider.base) wd <- file.path(tempdir(), 'results') dir.create(wd) arglist <- c('-a', 10, '-b', 'model2', '-wd', wd, '--unwanted') # drop unwanted key:value pairs (arglist_parse(arglist = arglist, keyvals_to_drop = '-wd', normalise_paths = FALSE))
#> [1] "-a" "10" "-b" "model2" "--unwanted"
# drop unwanted argument values (arglist_parse(arglist = arglist, vals_to_drop = '--unwanted', normalise_paths = FALSE))
#> [1] "-a" "10" #> [3] "-b" "model2" #> [5] "-wd" "/tmp/Rtmpdqh5Q5/results"
# make paths relative, necessary for Docker: # paths must be relative to the working directory in the container (arglist_parse(arglist = arglist, normalise_paths = TRUE))
#> [1] "-a" "10" "-b" "model2" "-wd" #> [6] "results" "--unwanted"
# clean-up unlink(wd, recursive = TRUE)