1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
# optparse: Command line optional argument parser
[](https://cran.r-project.org/package=optparse)
[](https://github.com/trevorld/r-optparse/actions)
[](https://app.codecov.io/github/trevorld/r-optparse?branch=master)
[](https://cran.r-project.org/package=optparse)
<img src="man/figures/logo.png" align="right" width="200px" alt="optparse hex sticker">
A pure R language command line parser inspired by Python's 'optparse'
library to be used with Rscript to write "\#!" shebang scripts that
accept short and long flag/options.
To install the last version released on CRAN use the following command:
install.packages("optparse")
To install the development version use the following command:
install.packages("remotes")
remotes::install_github("trevorld/r-optparse")
## dependencies
This package depends on the R package `getopt`.
To run the unit tests you will need the suggested R package `testthat`
and in order to build the vignette you will need the suggested R package
`knitr` which in turn probably requires the system tool `pandoc`:
sudo apt install pandoc
## examples
A simple example:
library("optparse")
parser <- OptionParser()
parser <- add_option(parser, c("-v", "--verbose"), action="store_true",
default=TRUE, help="Print extra output [default]")
parser <- add_option(parser, c("-q", "--quietly"), action="store_false",
dest="verbose", help="Print little output")
parser <- add_option(parser, c("-c", "--count"), type="integer", default=5,
help="Number of random normals to generate [default %default]",
metavar="number")
parse_args(parser, args = c("--quietly", "--count=15"))
## $help
## [1] FALSE
##
## $verbose
## [1] FALSE
##
## $count
## [1] 15
Note that the `args` argument of `parse_args` default is
`commandArgs(trailing=TRUE)` so it typically doesn't need to be
explicitly set if writing an Rscript.
One can also equivalently make options in a list:
library("optparse")
option_list <- list(
make_option(c("-v", "--verbose"), action="store_true", default=TRUE,
help="Print extra output [default]"),
make_option(c("-q", "--quietly"), action="store_false",
dest="verbose", help="Print little output"),
make_option(c("-c", "--count"), type="integer", default=5,
help="Number of random normals to generate [default %default]",
metavar="number")
)
parse_args(OptionParser(option_list=option_list), args = c("--verbose", "--count=11"))
## $verbose
## [1] TRUE
##
## $count
## [1] 11
##
## $help
## [1] FALSE
`optparse` automatically creates a help option:
parse_args(parser, args = c("--help"))
Usage: %prog [options]
Options:
-h, --help
Show this help message and exit
-v, --verbose
Print extra output [default]
-q, --quietly
Print little output
-c NUMBER, --count=NUMBER
Number of random normals to generate [default 5]
Error in parse_args(parser, args = c("--help")) : help requested
Note by default when `optparse::parse_args` sees a `--help` flag it will
first print out a usage message and then either throw an error in
interactive use or call `quit` in non-interactive use (i.e. when used
within an Rscript called by a shell). To disable the error/quit set the
argument `print_help_and_exit` to `FALSE` in `parse_args` and to simply
print out the usage string one can also use the function `print_usage`.
`optparse` has limited positional argument support, other command-line
parsers for R such as `argparse` have richer positional argument
support:
parse_args(parser, args = c("-vc", "25", "75", "22"), positional_arguments = TRUE)
## $options
## $options$help
## [1] FALSE
##
## $options$verbose
## [1] TRUE
##
## $options$count
## [1] 25
##
##
## $args
## [1] "75" "22"
The function `parse_args2` wraps `parse_args` while setting
`positional_arguments=TRUE` and `convert_hyphens_to_underscores=TRUE`:
parse_args2(parser, args = c("-vc", "25", "75", "22"))
## $options
## $options$help
## [1] FALSE
##
## $options$verbose
## [1] TRUE
##
## $options$count
## [1] 25
##
##
## $args
## [1] "75" "22"
|