1515from pre_commit .envcontext import UNSET
1616from pre_commit .prefix import Prefix
1717from pre_commit .util import cmd_output
18- from pre_commit .util import cmd_output_b
1918from pre_commit .util import win_exe
2019
2120ENVIRONMENT_DIR = 'renv'
22- RSCRIPT_OPTS = ('--no-save' , '--no-restore' , '--no-site-file' , '--no-environ' )
2321get_default_version = lang_base .basic_get_default_version
2422
23+ _RENV_ACTIVATED_OPTS = (
24+ '--no-save' , '--no-restore' , '--no-site-file' , '--no-environ' ,
25+ )
2526
26- def _execute_vanilla_r_code_as_script (
27+
28+ def _execute_r (
2729 code : str , * ,
2830 prefix : Prefix , version : str , args : Sequence [str ] = (), cwd : str ,
31+ cli_opts : Sequence [str ],
2932) -> str :
3033 with in_env (prefix , version ), _r_code_in_tempfile (code ) as f :
3134 _ , out , _ = cmd_output (
32- _rscript_exec (), * RSCRIPT_OPTS , f , * args , cwd = cwd ,
35+ _rscript_exec (), * cli_opts , f , * args , cwd = cwd ,
3336 )
3437 return out .rstrip ('\n ' )
3538
3639
40+ def _execute_r_in_renv (
41+ code : str , * ,
42+ prefix : Prefix , version : str , args : Sequence [str ] = (), cwd : str ,
43+ ) -> str :
44+ return _execute_r (
45+ code = code , prefix = prefix , version = version , args = args , cwd = cwd ,
46+ cli_opts = _RENV_ACTIVATED_OPTS ,
47+ )
48+
49+
50+ def _execute_vanilla_r (
51+ code : str , * ,
52+ prefix : Prefix , version : str , args : Sequence [str ] = (), cwd : str ,
53+ ) -> str :
54+ _R_VANILLA_OPTS = ('--vanilla' ,)
55+ return _execute_r (
56+ code = code , prefix = prefix , version = version , args = args , cwd = cwd ,
57+ cli_opts = _R_VANILLA_OPTS ,
58+ )
59+
60+
3761def _read_installed_version (envdir : str , prefix : Prefix , version : str ) -> str :
38- return _execute_vanilla_r_code_as_script (
62+ return _execute_r_in_renv (
3963 'cat(renv::settings$r.version())' ,
4064 prefix = prefix , version = version ,
4165 cwd = envdir ,
4266 )
4367
4468
4569def _read_executable_version (envdir : str , prefix : Prefix , version : str ) -> str :
46- return _execute_vanilla_r_code_as_script (
70+ return _execute_r_in_renv (
4771 'cat(as.character(getRversion()))' ,
4872 prefix = prefix , version = version ,
4973 cwd = envdir ,
@@ -53,7 +77,7 @@ def _read_executable_version(envdir: str, prefix: Prefix, version: str) -> str:
5377def _write_current_r_version (
5478 envdir : str , prefix : Prefix , version : str ,
5579) -> None :
56- _execute_vanilla_r_code_as_script (
80+ _execute_r_in_renv (
5781 'renv::settings$r.version(as.character(getRversion()))' ,
5882 prefix = prefix , version = version ,
5983 cwd = envdir ,
@@ -161,7 +185,7 @@ def _cmd_from_hook(
161185 _entry_validate (cmd )
162186
163187 cmd_part = _prefix_if_file_entry (cmd , prefix , is_local = is_local )
164- return (cmd [0 ], * RSCRIPT_OPTS , * cmd_part , * args )
188+ return (cmd [0 ], * _RENV_ACTIVATED_OPTS , * cmd_part , * args )
165189
166190
167191def install_environment (
@@ -204,14 +228,15 @@ def install_environment(
204228 renv::install(prefix_dir)
205229 }}
206230 """
207-
208- with _r_code_in_tempfile (r_code_inst_environment ) as f :
209- cmd_output_b (_rscript_exec (), '--vanilla' , f , cwd = env_dir )
231+ _execute_vanilla_r (
232+ r_code_inst_environment ,
233+ prefix = prefix , version = version , cwd = env_dir ,
234+ )
210235
211236 _write_current_r_version (envdir = env_dir , prefix = prefix , version = version )
212237 if additional_dependencies :
213238 r_code_inst_add = 'renv::install(commandArgs(trailingOnly = TRUE))'
214- _execute_vanilla_r_code_as_script (
239+ _execute_r_in_renv (
215240 code = r_code_inst_add , prefix = prefix , version = version ,
216241 args = additional_dependencies ,
217242 cwd = env_dir ,
0 commit comments