On 16/06/2016 9:56 AM, Michael Cysouw wrote:
I really like the possibility of projects like docopt <http://docopt.org>, providing 
a bash interface to R functionality. IMHO this is a great way to allow non-R-users to 
include R functionality in their workflows. There is a docopt package for R which is not 
yet perfect for my liking, but already goes a long way. 
<https://cran.r-project.org/web/packages/docopt/index.html>

I have been experimenting a bit with including docopt scripts into my R 
packages, and I would like to ask for some feedback how to handle the 
distribution of such bash-interfaces with R packages.

Ideally, such bash-interfaces like docopt should be distributed together with 
the R packages, and the “exec” folder seems destined for that goal. Simply 
adding the package docopt as a requirement in DESCRIPTION also assures that 
everything just works after installing the package!

The main remaining problem is the following: How do non-R-users actually find 
the bash-executable? The location is rather hidden away :-). Is there a way to 
link the path to the exec folder to PATH on installing a package? Or is there 
an easy way to allow people to make an alias in their .bashrc?

Just put a description of what to do into your vignette.

 From within R this is not that difficult, using something based on 
“find.package”:
`file.path(find.package(package_name), "exec", docopt_file_name)`

However, I am more thinking about an option for R CMD INSTALL to link an 
executable to PATH. Would that be sensible? How should that be done?

I don't think packages should be messing with users' PATHs. Document what is necessary, even provide functions in your package to do the work, but don't do it automatically. I think you were suggesting something optional, but I really see no point in that: it is no more work for you to write a function to do the work than it would be for you to handle a request from INSTALL to do the work, but it is a lot more work for us.

Duncan Murdoch

Further note that to prevent clogging the PATH with executable, I would propose 
that package developers only include a single bash-interface to a package, 
named identically to the package, with multiple functions available as 
(sub)commands, so a bash user could simply access a function “bla” from package 
“foo” as

$ foo bla -OPTIONS [ARGUMENTS]

thanks for any feedback
michael

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to