# CI Configuration - Nickel Format
# Auto-generated by dev-system CI installer
#
# This file is managed by TypeDialog using nickel-roundtrip.
# Edit via: .typedialog/ci/configure.sh
# Or manually edit and validate with: nickel typecheck config.ncl
#
# Documentation: nickel doc config.ncl

{
  # CI namespace - all configuration lives under 'ci'
  ci = {
    # Project Information
    # Detected languages and primary language for this project
    project = {
      # Project name
      name = "",
      # Project description
      description = "",
      # Project website or documentation site URL
      site_url = "",
      # Project repository URL (GitHub, GitLab, etc.)
      repo_url = "",
      # Languages detected in codebase (auto-detected by installer)
      detected_languages = [
        "rust",
        "markdown",
        "nickel"
      ],
      # Primary language (determines default tooling)
      primary_language = "rust",
    },

    # CI Tools Configuration
    # Each tool can be enabled/disabled and configured here
    tools = {
      # Taplo - TOML formatter and linter
      taplo = {
        enabled = true,
        install_method = "cargo",
      },
      # YAMLlint - YAML formatter and linter
      yamllint = {
        enabled = true,
        install_method = "pip",
      },
      # Clippy - Rust linting tool
      clippy = {
        enabled = true,
        install_method = "cargo",
        deny_warnings = true,
      },
      # Cargo Audit - Security vulnerability scanner
      audit = {
        enabled = true,
        install_method = "cargo",
      },
      # Cargo Deny - Dependency checker
      deny = {
        enabled = true,
        install_method = "cargo",
      },
      # Cargo SBOM - Software Bill of Materials
      sbom = {
        enabled = true,
        install_method = "cargo",
      },
      # LLVM Coverage - Code coverage tool
      llvm-cov = {
        enabled = true,
        install_method = "cargo",
      },
      # Shellcheck - Bash/shell script linter
      shellcheck = {
        enabled = true,
        install_method = "brew",
      },
      # Shfmt - Shell script formatter
      shfmt = {
        enabled = true,
        install_method = "brew",
      },
      # Markdownlint - Markdown linter
      markdownlint = {
        enabled = true,
        install_method = "npm",
      },
      # Vale - Prose linter
      vale = {
        enabled = true,
        install_method = "brew",
      },
      # Nickel - Configuration language type checker
      nickel = {
        enabled = true,
        install_method = "brew",
        check_all = true,
      },
      # NuShell - Shell script validator
      nushell = {
        enabled = true,
        install_method = "builtin",
        check_all = true,
      },
      # Ruff - Fast Python linter
      ruff = {
        enabled = true,
        install_method = "pip",
      },
      # Black - Python code formatter
      black = {
        enabled = true,
        install_method = "pip",
      },
      # Mypy - Python static type checker
      mypy = {
        enabled = false,
        install_method = "pip",
      },
      # Pytest - Python testing framework
      pytest = {
        enabled = true,
        install_method = "pip",
      },
      # Golangci-lint - Go linter aggregator
      "golangci-lint" = {
        enabled = true,
        install_method = "brew",
      },
      # Gofmt - Go code formatter
      gofmt = {
        enabled = true,
        install_method = "builtin",
      },
      # Staticcheck - Go static analysis
      staticcheck = {
        enabled = true,
        install_method = "brew",
      },
      # Gosec - Go security checker
      gosec = {
        enabled = false,
        install_method = "brew",
      },
      # ESLint - JavaScript linter
      eslint = {
        enabled = true,
        install_method = "npm",
      },
      # Prettier - Code formatter
      prettier = {
        enabled = true,
        install_method = "npm",
      },
      # TypeScript - Type checking
      typescript = {
        enabled = false,
        install_method = "npm",
      },
      # Jest - JavaScript testing framework
      jest = {
        enabled = true,
        install_method = "npm",
      },
    },

    # CI Features
    # High-level feature flags for CI behavior
    features = {
      enable_ci_cd = true,
      enable_pre_commit = true,
      generate_taplo_config = true,
      generate_contributing = true,
      generate_security = true,
      generate_code_of_conduct = true,
      generate_dockerfiles = true,
      enable_cross_compilation = true,
    },

    # CI Provider Configurations
    # Settings for GitHub Actions, Woodpecker, GitLab CI, etc.
    ci_providers = {
      # GitHub Actions
      github_actions = {
        enabled = true,
        branches_push = "main,develop",
        branches_pr = "main",
      },
      # Woodpecker CI
      woodpecker = {
        enabled = true,
      },
    },

    # CI Settings
    settings = {
      parallel_jobs = 1,
      job_timeout_minutes = 1,
      require_status_checks = true,
      run_on_draft_prs = true,
    },
  },
}
