Credentials sent as command arguments ? Here is an example of how this can be done:
suppressPackageStartupMessages(library("argparse")) # create parser object parser <- ArgumentParser() # specify our desired options # by default ArgumentParser will add an help option parser$add_argument("-v", "--verbose", action="store_true", default=TRUE, help="Print extra output [default]") parser$add_argument("-q", "--quietly", action="store_false", dest="verbose", help="Print little output") parser$add_argument("-c", "--count", type="integer", default=5, help="Number of random normals to generate [default %(default)s]", metavar="number") parser$add_argument("--generator", default="rnorm", help = "Function to generate random deviates [default \"%(default)s\"]") parser$add_argument("--mean", default=0, type="double", help="Mean if generator == \"rnorm\" [default %(default)s]") parser$add_argument("--sd", default=1, type="double", metavar="standard deviation", help="Standard deviation if generator == \"rnorm\" [default %(default)s]") # get command line options, if help option encountered print help and exit, # otherwise if options not found on command line then set defaults, args <- parser$parse_args() # print some progress messages to stderr if "quietly" wasn't requested if ( args$verbose ) { write("writing some verbose output to standard error...\n", stderr()) } # do some operations based on user input if( args$generator == "rnorm") { cat(paste(rnorm(args$count, mean=args$mean, sd=args$sd), collapse="\n")) } else { cat(paste(do.call(args$generator, list(args$count)), collapse="\n")) } cat("\n")
Run example (without parameters):
usage: example.R [-h] [-v] [-q] [-c number] [--generator GENERATOR] [--mean MEAN] [--sd standard deviation] optional arguments: -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] --generator GENERATOR Function to generate random deviates [default "rnorm"] --mean MEAN Mean if generator == "rnorm" [default 0] --sd standard deviation Standard deviation if generator == "rnorm" [default 1]
The package was apparently inspired by the python package with the same name, so looking there might also be useful.
Looking at my code, I would probably rewrite it as follows:
library(RJDBC) library(argparse) args <- ArgumentParser() args$add_argument('--driver', dest='driver', default="com.vertica.jdbc.Driver") args$add_argument('--classPath', dest='classPath', default="/home/Drivers/vertica-jdbc-7.0.1-0.jar") args$add_argument('--url', dest='url', default="jdbc:vertica://servername:5433/db") args$add_argument('--user', dest='user', default='username') args$add_argument('--password', dest='password', default='password') parser <- args$parse_args vDriver <- JDBC(driverClass=parser$driver, parser$classPath) vertica <- dbConnect(vDriver, parser$url, parser$user , parser$password)