{
  "$schema": "http://json-schema.org/schema",
  "id": "@nx-dotnet/core:lib",
  "title": "NxDotnet Test Generator",
  "description": "Generate a .NET test project for an existing application or library",
  "type": "object",
  "properties": {
    "targetProject": {
      "type": "string",
      "description": "The existing project to generate tests for",
      "$default": {
        "$source": "argv",
        "index": 0
      },
      "alias": ["project", "name"]
    },
    "testTemplate": {
      "type": "string",
      "description": "Which template should be used for creating the tests project?",
      "default": "nunit",
      "enum": ["nunit", "xunit", "mstest"],
      "aliases": ["testRunner"],
      "x-prompt": {
        "message": "Which template should be used for creating the tests project",
        "type": "list",
        "items": [
          {
            "value": "nunit",
            "label": "NUnit 3 Test Project"
          },
          {
            "value": "xunit",
            "label": "xUnit Test Project"
          },
          {
            "value": "mstest",
            "label": "Unit Test Project"
          }
        ]
      },
      "alias": ["template"]
    },
    "language": {
      "type": "string",
      "description": "Which language should the project use?",
      "x-prompt": {
        "message": "Which language should the project use?",
        "type": "list",
        "items": ["C#", "F#", "VB"]
      }
    },
    "suffix": {
      "type": "string",
      "description": "What suffix should be used for the tests project name?"
    },
    "testProjectName": {
      "type": "string",
      "description": "What name should be used for the tests project?"
    },
    "namespaceName": {
      "type": "string",
      "description": "The namespace for the project. If not provided, will be generated based on test project name / suffix."
    },
    "solutionFile": {
      "description": "Determines if the project should be added to a solution file.",
      "oneOf": [
        {
          "type": "string",
          "description": "The name of the solution file to add the project to"
        },
        {
          "type": "boolean",
          "description": "Should the project be added to the default solution file?"
        }
      ],
      "alias": ["solution", "s"]
    },
    "pathScheme": {
      "description": "Determines if the project should follow NX or dotnet path naming conventions",
      "type": "string",
      "default": "nx",
      "enum": ["nx", "dotnet"],
      "x-prompt": {
        "message": "Which path naming conventions should the project use?",
        "type": "list",
        "items": [
          {
            "value": "nx",
            "label": "NX naming conventions"
          },
          {
            "value": "dotnet",
            "label": "Dotnet naming conventions"
          }
        ]
      }
    }
  },
  "not": {
    "required": ["suffix", "testProjectName"]
  },
  "required": ["targetProject", "testTemplate"]
}
