|
1 | 1 | #' Read a Dockerfile from a file |
2 | 2 | #' |
3 | | -#' @param file Path to Dockerfile |
4 | | -#' @return A dockerfile object |
| 3 | +#' Parses a **Dockerfile** from disk into a `dockerfile` object that can be |
| 4 | +#' manipulated programmatically. |
| 5 | +#' |
| 6 | +#' @param file Path to **Dockerfile** |
| 7 | +#' |
| 8 | +#' @return |
| 9 | +#' A `dockerfile` object containing the parsed instructions and metadata |
| 10 | +#' |
| 11 | +#' @examples |
| 12 | +#' \dontrun{ |
| 13 | +#' # Read an existing Dockerfile |
| 14 | +#' df <- read_dockerfile("path/to/Dockerfile") |
| 15 | +#' |
| 16 | +#' # Modify it |
| 17 | +#' df <- dfi_run(df, "apt-get update") |
| 18 | +#' df |
| 19 | +#' } |
| 20 | +#' |
| 21 | +#' @details |
| 22 | +#' The function handles line continuations and extracts metadata like the |
| 23 | +#' base image, package manager, OS, and R version (if applicable). |
| 24 | +#' Comments and empty lines are skipped. |
| 25 | +#' |
| 26 | +#' @seealso |
| 27 | +#' [dockerfile()] for creating a new dockerfile object & |
| 28 | +#' [write_dockerfile()] for writing a dockerfile to disk |
| 29 | +#' |
| 30 | +#' @family dockerfile I/O functions |
5 | 31 | #' @export |
6 | 32 | read_dockerfile <- function(file) { |
7 | 33 | if (!file.exists(file)) { |
@@ -57,12 +83,41 @@ read_dockerfile <- function(file) { |
57 | 83 | df |
58 | 84 | } |
59 | 85 |
|
60 | | -#' Write a dockerfile to a file |
| 86 | +#' Write a `dockerfile` to a file |
61 | 87 | #' |
62 | | -#' @param dockerfile A dockerfile object |
| 88 | +#' Writes a `dockerfile` object to disk as a **Dockerfile**. |
| 89 | +#' |
| 90 | +#' @param dockerfile A `dockerfile` object |
63 | 91 | #' @param file Output file path (default: "Dockerfile") |
64 | 92 | #' @param multiline Logical indicating if long RUN commands should be split (default: TRUE) |
65 | | -#' @return Invisible dockerfile object |
| 93 | +#' |
| 94 | +#' @return |
| 95 | +#' Invisibly returns the `dockerfile` object |
| 96 | +#' |
| 97 | +#' @examples |
| 98 | +#' \dontrun{ |
| 99 | +#' # Create and write a simple Dockerfile |
| 100 | +#' dockerfile() |> |
| 101 | +#' dfi_from("rocker/r-ver:4.4.0") |> |
| 102 | +#' dfi_run("apt-get update") |> |
| 103 | +#' write_dockerfile() |
| 104 | +#' |
| 105 | +#' # Specify a different file name |
| 106 | +#' dockerfile() |> |
| 107 | +#' dfi_from("rocker/r-ver:4.4.0") |> |
| 108 | +#' write_dockerfile("Dockerfile.dev") |
| 109 | +#' } |
| 110 | +#' |
| 111 | +#' @details |
| 112 | +#' When `multiline = TRUE` (the default), long `RUN` commands with `&&` |
| 113 | +#' will be formatted with line continuations (`\`) for better readability. |
| 114 | +#' This makes the Dockerfile more maintainable without changing its functionality. |
| 115 | +#' |
| 116 | +#' @seealso |
| 117 | +#' [read_dockerfile()] for reading a Dockerfile from disk & |
| 118 | +#' [dockerfile()] for creating a new dockerfile object |
| 119 | +#' |
| 120 | +#' @family dockerfile I/O functions |
66 | 121 | #' @export |
67 | 122 | write_dockerfile <- function(dockerfile, file = "Dockerfile", multiline = TRUE) { |
68 | 123 | check_dockerfile(dockerfile) |
|
0 commit comments