3
|
1 #!/usr/bin/env Rscript
|
|
2
|
|
3 ## begin warning handler
|
|
4 withCallingHandlers({
|
|
5
|
|
6 library(methods) # Because Rscript does not always do this
|
|
7
|
|
8 options('useFancyQuotes' = FALSE)
|
|
9
|
|
10 suppressPackageStartupMessages(library("optparse"))
|
|
11 suppressPackageStartupMessages(library("RGalaxy"))
|
|
12
|
|
13
|
|
14 option_list <- list()
|
|
15
|
|
16 option_list$number1 <- make_option('--number1', type='numeric')
|
|
17 option_list$number2 <- make_option('--number2', type='numeric')
|
|
18 option_list$sum <- make_option('--sum', type='character')
|
|
19
|
|
20
|
|
21 opt <- parse_args(OptionParser(option_list=option_list))
|
|
22
|
|
23 suppressPackageStartupMessages(library(RSclient))
|
|
24
|
|
25 ## function body not needed here, it is in package
|
|
26
|
|
27 params <- list()
|
|
28 for(param in names(opt))
|
|
29 {
|
|
30 if (!param == "help")
|
|
31 params[param] <- opt[param]
|
|
32 }
|
|
33
|
|
34 setClass("GalaxyRemoteError", contains="character")
|
|
35 wrappedFunction <- function(f)
|
|
36 {
|
|
37 tryCatch(do.call(f, params),
|
|
38 error=function(e) new("GalaxyRemoteError", conditionMessage(e)))
|
|
39 }
|
|
40
|
|
41
|
|
42 c <- RS.connect(host='localhost', port=6311)
|
|
43 RS.eval(c, options('useFancyQuotes' = FALSE))
|
|
44 RS.eval(c, suppressPackageStartupMessages(library(RGalaxy)))
|
|
45 RS.assign(c, 'params', params)
|
|
46 RS.assign(c, 'wrappedFunction', wrappedFunction)
|
|
47 RS.eval(c, setClass('GalaxyRemoteError', contains='character'))
|
|
48 res <- RS.eval(c, wrappedFunction(addTwoNumbers))
|
|
49 RS.close(c)
|
|
50 if(is(res, 'GalaxyRemoteError'))RGalaxy::gstop(res)
|
|
51
|
|
52 ## end warning handler
|
|
53 }, warning = function(w) {
|
|
54 cat(paste("Warning:", conditionMessage(w), "\n"))
|
|
55 invokeRestart("muffleWarning")
|
|
56 })
|