forked from o2r-project/containerit
/
package-expressions.R
60 lines (52 loc) · 2.18 KB
/
package-expressions.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
## GUI - package_expressions
fromExpressions <- function(){
ui <- miniUI::miniPage(
miniUI::gadgetTitleBar("Dockerfile creation"),
miniUI::miniContentPanel(
shiny::p(shiny::strong("Create a Dockerfile from a list of expressions")),
shiny::p("Input a vector of expressions. For example;"),
shiny::p(shiny::code(
"c( expression(library(sp)),
expression(data(meuse)),
expression(mean(meuse[[\"zinc\"]])) )")),
shiny::p("For more information see documentation at https://o2r.info/containerit/articles/containerit.html."),
shiny::textAreaInput(inputId = "expressions",
label = "List of Expressions",
value = "",
height = "240px",
width = "500px"),
shiny::fillRow(
shiny::textInput(inputId = "text",
label = NULL,
value = file.path(getwd(), "Dockerfile")),
save_button(),
height = "50px"
)
)
)
server <- function(input, output, session){
shiny::observeEvent(input$save,{
shinyFiles::shinyFileSave(input, "save",
roots = file_dialog_volumes,
session = session)
fileinfo <- shinyFiles::parseSavePath(roots = file_dialog_volumes,
selection = input$save)
if (length(fileinfo$datapath) != 0) {
shiny::updateTextInput(session, "text", value = fileinfo$datapath)
}
})
shiny::observeEvent(input$done, {
# Exit app to ensure that the gadget is closed after 'done' is clicked.
shiny::stopApp()
# Create the session object
session <- containerit::clean_session(input$expressions, echo = TRUE)
# Create docker file and write to desired path
dockerfile_object <- containerit::dockerfile(from = session)
containerit::write(dockerfile_object, file = input$text)
print_docker_instructions(input$text)
})
}
viewer <- shiny::dialogViewer(dialogName = "containerit")
shiny::runGadget(app = ui, server = server, viewer = viewer)
}
fromExpressions()