# Package

version       = "0.32.1"
author        = "Hidenobu Itsumura @dumblepytech1 as 'medy'"
description   = "A Nim query builder library inspired by Laravel/PHP and Orator/Python"
license       = "MIT"
srcDir        = "src"
# backend       = "c"
# bin           = @["allographer/cli/dbtool"]
# binDir        = "src/bin"
# installExt    = @["nim"]
# skipDirs      = @["allographer/cli"]

# Dependencies

requires "nim >= 2.0.0"
requires "db_connector >= 0.1.0"
requires "checksums >= 0.1.0"
requires "baradb >= 1.2.0"


import strformat, os

task test, "run testament test":
  exec &"testament p 'tests/sqlite/test_*.nim'"
  exec &"testament p 'tests/postgres/test_*.nim'"
  exec &"testament p 'tests/mariadb/test_*.nim'"
  exec &"testament p 'tests/mysql/test_*.nim'"
  exec &"testament p 'tests/surrealdb/test_*.nim'"
  exec &"testament p 'tests/utils/test_*.nim'"

  for kind, path in walkDir(getCurrentDir() / "tests"):
    if not path.contains(".") and path.fileExists():
      exec "rm -f " & path

task docs, "Generate API documents":
  let
    deployDir = &"docs/v{NimMajor}"
    pkgDir = srcDir / "allographer"
    srcFiles = @[
      "connection",
      "query_builder",
      "schema_builder",
    ]

  if dirExists(deployDir):
    rmDir deployDir
  for f in srcFiles:
    let srcFile = pkgDir / f & ".nim"
    exec &"nim doc --hints:off --project --out:{deployDir} --index:on {srcFile}"


let toolImage = "basolato:tool"

task setupTool, "Setup tool docker image":
  exec &"docker build -t {toolImage} -f tool_Dockerfile ."

proc generateToc(dir: string) =
  let cwd = getCurrentDir()
  for f in listFiles(dir):
    if 3 < f.len:
      let ext = f[^3..^1]
      if ext == ".md":
        exec &"docker run --rm -v {cwd}:/work -it {toolImage} --insert --no-backup {f}"

task toc, "Generate TOC":
  generateToc(".")
  generateToc("./documents/rdb")
  generateToc("./documents/surrealdb")
