forked from neurogenomics/MAGMA_Celltyping
-
Notifications
You must be signed in to change notification settings - Fork 0
/
set_permissions.R
34 lines (34 loc) · 1.19 KB
/
set_permissions.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#' Set permissions
#'
#' Robust methods for setting file/folder permissions across multiple OS.
#'
#' @param path Path to file/folder.
#' @param is_folder Whether \code{path} is a folder.
#' If so, permissions will be set recursively for all files/subfolders.
#' @param verbose Print messages.
#'
#' @keywords internal
set_permissions <- function(path,
is_folder = FALSE,
verbose = TRUE){
messager("Setting permissions for",
paste0(if(is_folder)"folder"else"file","."),
v=verbose)
#### OS-specific commands ####
if(get_os()=="Windows"){
try({system(paste("icacls",
path,
if(is_folder) "/t" else NULL,
if(verbose) NULL else "/q",
"/grant:r Everyone:(OI)(CI)RX"))})
} else {
try({system(paste("chmod",
if(is_folder) "-R" else NULL,
"u=rx,go=rx",
path))})
}
#### Should work on all OS (maybe?) ####
try({Sys.chmod(paths = path,
mode = "777",
use_umask = FALSE)})
}