# Input Parameters
csvpath <- input[[1]]
jsonpath <- input[[2]] #output path where the file be written. Clear it after process is complete, even if there is exception
varName <- input[[3]]
libPath <- input[[4]]
if(libPath == "MAC") {
  libPath <- NULL
  Sys.setlocale(category = "LC_ALL", locale = "UTF-8")
}

if (is.null(libPath) || libPath == '') {
  library(haven)
  library(jsonlite)
  library(readr)
  
} else {
  .libPaths(libPath)
  library(haven, lib.loc=libPath)
  library(jsonlite, lib.loc=libPath)
  library(readr, lib.loc=libPath)
}

if (is.null(libPath) || libPath == '') {
  library(haven, jsonlite)
} else {
  if (isNamespaceLoaded("haven")) {
    unloadNamespace("haven")
  }
  library(haven, lib.loc=libPath)

  if (isNamespaceLoaded("jsonlite")) {
    unloadNamespace("jsonlite")
  }
  library(jsonlite, lib.loc=libPath)
}


# Read CSV
csvData <- read_csv(csvpath, col_names = TRUE, col_types =cols(.default = "c"), na = c("", "*"), quoted_na = TRUE)
DF_DATA <- data.frame(csvData)

if(!is.null(DF_DATA[[varName]])){
  DF_DATA[[varName]] <- NA
  freqTable <- count(DF_DATA, varName)
  colnames(freqTable) <- c("Value","freq")
  varJson <- toJSON(freqTable,pretty=TRUE,force=TRUE)
  write(iconv(varJson, to="UTF-8"), jsonpath)
}
