## Test recipe parsing

import std/[options]
import ../src/nimpak/build/recipe_parser

proc testRecipe(recipePath: string): bool =
  echo "\nTesting recipe: ", recipePath

  let recipeOpt = parseRecipeFile(recipePath)
  if recipeOpt.isNone():
    echo "  ✗ Failed to parse recipe"
    return false

  let recipe = recipeOpt.get()
  echo "  ✓ Parsed successfully"
  echo "    Name: ", recipe.name
  echo "    Version: ", recipe.version
  echo "    Tool Type: ", recipe.toolType
  echo "    Platforms: ", recipe.platforms.len

  let (valid, errors) = validateRecipe(recipe)
  if not valid:
    echo "  ✗ Validation failed:"
    for error in errors:
      echo "    - ", error
    return false

  echo "  ✓ Validation passed"
  return true

proc main() =
  echo "Recipe Parser Tests"
  echo "==================="

  var allPassed = true

  if not testRecipe("../recipes/nix/minimal-nix.kdl"):
    allPassed = false

  if not testRecipe("../recipes/pkgsrc/minimal-pkgsrc.kdl"):
    allPassed = false

  if not testRecipe("../recipes/gentoo/minimal-gentoo.kdl"):
    allPassed = false

  echo ""
  if allPassed:
    echo "✓ All tests passed!"
    quit(0)
  else:
    echo "✗ Some tests failed"
    quit(1)

when isMainModule:
  main()
