--- title: "scriptexec" author: "Sagie Gur-Ari" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{scriptexec} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Executing Scripts The purpose of the scriptexec package is to enable quick and easy way to execute native scripts. ```{r, warning = FALSE} library(scriptexec) library(testthat) # execute script text output <- scriptexec::execute("echo command1\necho command2") expect_equal(output$status, 0) expect_equal(grepl("command1", output$output), TRUE) expect_equal(grepl("command2", output$output), TRUE) if (.Platform$OS.type == "windows") { ls_command <- "dir" } else { ls_command <- "ls" } output <- scriptexec::execute(c("echo user home:", ls_command)) expect_equal(output$status, 0) # execute multiple commands as a script output <- scriptexec::execute(c("cd", "echo test")) expect_equal(output$status, 0) # pass arguments (later defined as ARG1, ARG2, ...) and env vars if (.Platform$OS.type == "windows") { command <- "echo %ARG1% %ARG2% %MYENV%" } else { command <- "echo $ARG1 $ARG2 $MYENV" } output <- scriptexec::execute(command, args = c("TEST1", "TEST2"), env = c("MYENV=TEST3")) expect_equal(output$status, 0) expect_equal(grepl("TEST1 TEST2 TEST3", output$output), TRUE) # non zero status code is returned in case of errors expect_warning(output <- scriptexec::execute("exit 1")) expect_equal(output$status, 1) # do not wait for command to finish output <- scriptexec::execute("echo my really long task", wait = FALSE) expect_equal(output$status, -1) ```