File: README.md

package info (click to toggle)
r-cran-optparse 1.7.5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 324 kB
  • sloc: sh: 9; makefile: 2
file content (155 lines) | stat: -rw-r--r-- 4,793 bytes parent folder | download | duplicates (2)
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

[![CRAN Status Badge](https://www.r-pkg.org/badges/version/optparse)](https://cran.r-project.org/package=optparse)

[![R-CMD-check](https://github.com/trevorld/r-optparse/workflows/R-CMD-check/badge.svg)](https://github.com/trevorld/r-optparse/actions)

[![Coverage Status](https://codecov.io/github/trevorld/r-optparse/branch/master/graph/badge.svg)](https://app.codecov.io/github/trevorld/r-optparse?branch=master)

[![RStudio CRAN mirror downloads](https://cranlogs.r-pkg.org/badges/optparse)](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"