[R-pkg-devel] CRAN write to home policy

Huw Campbell huw.campbell at gmail.com
Tue Mar 27 01:51:01 CEST 2018


Probably don't attempt to overwrite or change a user's chosen filenames.

I would probably still use tempfile(), but set either the pattern (which
gives a prefix)
or fileext for a chosen extension.



On Tue, Mar 27, 2018 at 10:07 AM, Ogan Mancarci <ogan.mancarci at gmail.com>
wrote:

> Corrected antiSocialSkip6Lines
>
> antiSocialSkip6Lines = function(filename, output = paste0(filename,
> '_skipped')){
>     lines = readLines(filename)
>     lines = lines[-(1:6)]
>     writeLines(lines, output)
> }
>
> On 26 March 2018 at 16:06, Ogan Mancarci <ogan.mancarci at gmail.com> wrote:
>
> > Thanks for the clarification.
> >
> > What about a scenario where the user has enter a filename which is used
> as
> > a seed for the output file. For instance
> >
> > antiSocialSkip6Lines = function(filename, output = paste0(filename,
> > '_skipped')){
> >     lines = readLines(filename)
> >     lines = lines[-(1:6)]
> > }
> >
> > Here, there is an input from the user which determines what the output is
> > and it is clearly spelled out in the argument list. Yet the user input is
> > not the name of the resulting file unless the user wants it to be.
> >
> > Cheers,
> > Ogan
> >
> > On 26 March 2018 at 15:29, Uwe Ligges <ligges at statistik.tu-dortmund.de>
> > wrote:
> >
> >>
> >>
> >> On 26.03.2018 23:48, Ogan Mancarci wrote:
> >>
> >>> This is from  CRAN repository policy:
> >>>
> >>> "Packages should not write in the user’s home filespace (including
> >>> clipboards), nor anywhere else on the file system apart from the R
> >>> session’s temporary directory (or during installation in the location
> >>> pointed to by TMPDIR: and such usage should be cleaned up). (…) Limited
> >>> exceptions may be allowed in interactive sessions if the package
> obtains
> >>> confirmation from the user."
> >>>
> >>> I am unclear about the scope of this rule. For instance if I had this
> >>> function:
> >>>
> >>> antiSocialWriteLines = function(text, file = 'defaultFile', ...){
> >>>      writeLines(text , file, ...)
> >>> }
> >>>
> >>>
> >>
> >> Simply use file=tempfile() as the default so you do not overwrite stuff
> >> in the user filespace and the user can insert another filename which is
> the
> >> confirmation.
> >>
> >> Best,
> >> Uwe Ligges
> >>
> >>
> >>
> >> would I be allowed to add it to a package since it writes to a file by
> >>> default without asking for confirmation?
> >>>
> >>> Frankly reading this text, I feel like even writeLines itself violates
> it
> >>> as it writes without "confirmation" once you give it a file path.
> >>>
> >>>         [[alternative HTML version deleted]]
> >>>
> >>> ______________________________________________
> >>> R-package-devel at r-project.org mailing list
> >>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
> >>>
> >>>
> >
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-package-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>

	[[alternative HTML version deleted]]



More information about the R-package-devel mailing list