# add_primary_key_to_lookml.r

folder <- "~/development/looks"

add_primary_key_to_lookml <- function(folder) {
  files <- extractFilesFromFolder(folder, ext="lookml", full=TRUE)
  
  unProcessed <- c()

  pat.id <- "((\\s*)(- )(dimension: )(.*id))"
  for (nm in names(files)) {
    cat("~~ Processing '", nm, "' ~~\n")
    file <- files[[nm]]
    lines <- readLines(file)

    id_line <- grep(pat=pat.id, lines)
    if (length(id_line) == 1) {
      if (grepl("key", lines[[id_line+1]]))
        message("key already set for '", sub(pat.id, "\\5", lines[[id_line]]), "'")
      else {
        lines[[id_line]] <- sub(pat.id, "\\1\n\\2  primary_key: true", lines[[id_line]])
        write(lines, file=file)
        message ("OK")
      }
    } else if (length(id_line) > 1) {
      warning ("multiple id's found: ", pasteC("'", sub(pat.id, "\\5", lines[id_line]), "'", C=", ", sep=""))
      unProcessed <- c(unProcessed, nm)
    } else if (length(id_line) < 1) {
      message ("No id found")
      unProcessed <- c(unProcessed, nm)
    }
  }

  if (length(unProcessed)) {
    cat("\n\n --------------- \n")
    print(cbind(extract("^dim_", unProcessed)))
  }

}

if (FALSE)
add_primary_key_to_lookml(folder)
