detect_foul <- function(path) {
  rcl <- path |> readr::read_lines()

  foul_actions <- c()

  count <- 1

  for (i in rcl) {
    str <- stringr::str_extract(i, "foul_\\w+_(l|r)")
    if (!is.na(str)) {
      foul_actions <- c(foul_actions, rcl[count - 1])
    }
    count <- count + 1
  }

  foul_actions <- foul_actions |>
    tibble::as_tibble() |>
    dplyr::mutate(
      step = value |> stringr::str_extract("\\d+") |> as.numeric(),
      agent = value |> stringr::str_extract("\\w+_([0-9]{1,2}|Coach)"),
      team = agent |> stringr::str_remove("_([0-9]{1,2}|Coach)"),
      unum = agent |> stringr::str_extract("([0-9]{1,2}|Coach)$"),
      commands = value |>
        stringr::str_extract("\\(.+\\)$") |>
        purrr::map(~ .x |>
          stringr::str_split("\\(|\\)", simplify = TRUE) |>
          stringr::str_trim() |>
          purrr::discard(~ .x == "")),
    ) |>
    tidyr::unnest(commands) |>
    dplyr::mutate(
      commands = commands |> stringr::str_split("\\ ", n = 2),
      command  = commands |> purrr::map_chr(1),
      args     = commands |> purrr::map(~ .x[-1]),
    ) |>
    dplyr::select(
      step,
      team,
      unum,
      command,
      args,
      # line = value,
    ) |>
    dplyr::filter(command == "tackle")

  return(foul_actions)
}
