2af3302f8437cb8f50a29f526d0abdb37e8c5a0a
[pkgdev.git] / R / wrappers.R
1 # Main wrapped entry point: call package function 'func'
2 .execMethod = function(func, ...) {
3
4 # check for R_HOME_USER variable, and for R_HOME_USER/pkgdev folder
5 .pkgdev.setup()
6
7 # get appropriate core function and call it
8 func = match.fun(func)
9 func(...)
10 }
11
12 #' Reset pkgdev folder under R_HOME_USER
13 #' WARNING: all loaded packages will have to be rebuilt
14 pkgdev.wipeAll = function() {
15 .pkgdev.setup(reset=TRUE)
16 }
17
18 #' Load a package containing arbitrary file structures under R/ and src/{adapters,sources}
19 #'
20 #' @param path Location of the package to load
21 #' @param cc Compilator to be used (e.g. 'gcc -std=gnu99' [default])
22 pkgdev.load = function(path, cc="gcc -std=gnu99") {
23 path = normalizePath(path) #allow to give only pkg name (in pkg/.. folder)
24 .execMethod(".pkgdev.load", path, cc)
25 }
26
27 #' Unload a package containing arbitrary file structures under R/ and src/{adapters,sources}
28 #'
29 #' @param path Location or name of the package to unload
30 pkgdev.unload = function(path) {
31 path = normalizePath(path) #allow to give only pkg name (in pkg/.. folder)
32 .execMethod(".pkgdev.unload", path)
33 }
34
35 #' Wipe a specific package under R_HOME_USER/pkgdev/pkgs/
36 #' NOTE: when this package will be loaded again, it will be completely rebuilt
37 #'
38 #' @param pkgName Name of the package to be removed
39 pkgdev.clean = function(pkgName) {
40 unlink(file.path(Sys.getenv("R_HOME_USER"),"pkgdev","pkgs",pkgName), recursive=TRUE)
41 unlink(file.path(Sys.getenv("R_HOME_USER"),"pkgdev","pkgs",pkgName), recursive=TRUE) #bug?
42 }
43
44 #' Launch R unit tests (arbitrary file structure under R/tests), or display the list of test functions
45 #'
46 #' @param path Location of the package containing tests (under /R/tests)
47 #' @param prefix Prefix for names of the functions to be tested; leave empty to test all (default)
48 #' @param show Logical, TRUE to display the list of unit tests (default: FALSE)
49 pkgdev.rtest = function(path, prefix="", show=FALSE, cc="gcc -std=gnu99") {
50 path = normalizePath(path) #allow to give only pkg name (in pkg/.. folder)
51 .execMethod(".pkgdev.rtest", path, prefix, show, cc)
52 }
53
54 #' Launch C unit tests (arbitrary file structure under src/tests), or display the list of test functions
55 #'
56 #' @param path Location of the package containing tests (under /src/tests)
57 #' @param prefix Prefix for names of the functions to be tested; leave empty to test all (default)
58 #' @param show Logical, TRUE to display the list of unit tests (default: FALSE)
59 pkgdev.ctest = function(path, prefix="", show=FALSE, cc="gcc -std=gnu99") {
60 .execMethod(".pkgdev.ctest", path, prefix, show, cc)
61 }
62
63 #' "Flatten" a package: gather all sources under R/ and src/ without hierarchical file structure
64 #'
65 #' @param inPath Input path: location of the package to flatten
66 #' @param outPath Output path: location of the package to create [default: inPath_cran]
67 pkgdev.tocran = function(inPath, outPath=NULL) {
68 inPath = normalizePath(inPath) #allow to give only pkg name (in pkg/.. folder)
69 if (is.null(outPath)) outPath = paste(inPath, "_cran", sep='')
70 .execMethod(".pkgdev.tocran", inPath, outPath)
71 }
72
73 #' Invoke R CMD check on a flat package (maybe with optional arguments, like --as-cran)
74 #'
75 #' @param opts Vector of strings arguments to pass to R CMD CHECK
76 pkgdev.check = function(path, opts) {
77 path = normalizePath(path) #allow to give only pkg name (in pkg/.. folder)
78 system( paste("R CMD check", opts, path, sep=' ') )
79 }