{
  "$schema": "http://json-schema.org/schema",
  "id": "@nxrocks/nx-quarkus:project",
  "description": "Quarkus Project Generator.",
  "title": "Creates a Quarkus project in the workspace",
  "outputCapture": "pipe",
  "type": "object",
  "properties": {
    "directory": {
      "type": "string",
      "description": "The directory of the new project.",
      "alias": "dir",
      "$default": {
        "$source": "argv",
        "index": 0
      },
      "x-prompt": "Which directory do you want to create the project in?"
    },
    "projectType": {
      "description": "Type of project.",
      "default": "application",
      "type": "string",
      "x-prompt": {
        "message": "What kind of project are you generating?",
        "type": "list",
        "items": [
          {
            "value": "application",
            "label": "Application"
          },
          {
            "value": "library",
            "label": "Library"
          }
        ]
      },
      "x-priority": "important"
    },
    "buildSystem": {
      "description": "Build system to use.",
      "alias": "type",
      "default": "MAVEN",
      "type": "string",
      "x-prompt": {
        "message": "Which build system would you like to use?",
        "type": "list",
        "items": [
          {
            "value": "MAVEN",
            "label": "Maven"
          },
          {
            "value": "GRADLE",
            "label": "Gradle (Preview)"
          },
          {
            "value": "GRADLE_KOTLIN_DSL",
            "label": "Gradle with Kotlin DSL (Preview)"
          }
        ]
      },
      "x-priority": "important"
    },
    "javaVersion": {
      "description": "Java version.",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ],
      "default": "17",
      "enum": ["17", "21"],
      "x-prompt": {
        "message": "Which version of Java would you like to use?",
        "type": "list",
        "items": [
          {
            "value": "21",
            "label": "21"
          },
          {
            "value": "17",
            "label": "17"
          }
        ]
      },
      "x-priority": "important"
    },
    "groupId": {
      "description": "Group Id of the project.",
      "type": "string",
      "default": "com.example",
      "x-prompt": "What groupId would you like to use?",
      "x-priority": "important"
    },
    "artifactId": {
      "description": "Artifact Id of the project.",
      "type": "string",
      "default": "demo",
      "x-prompt": "What artifactId would you like to use?",
      "x-priority": "important"
    },
    "name": {
      "type": "string",
      "description": "Name of the project.",
      "alias": "projectName",
      "pattern": "^[a-zA-Z][^:]*$",
      "x-priority": "important"
    },
    "skipFormat": {
      "description": "Skip formatting files (using Spotless plugin).",
      "type": "boolean",
      "default": true
    },
    "extensions": {
      "description": "Extensions to use in the project(comma-separated). Follow this guide https://t.ly/S6sk for more instructions on how to proceed.",
      "type": "string",
      "x-priority": "important"
    },
    "transformIntoMultiModule": {
      "description": "Transform the project into a multi-module project. Follow this guide https://t.ly/TmKF- for more information.",
      "type": "boolean"
    },
    "addToExistingParentModule": {
      "description": "Add the project into an existing parent module project. Follow this guide https://t.ly/TmKF- for more information.",
      "type": "boolean"
    },
    "parentModuleName": {
      "description": "Name of the parent module to create or to add child project into.",
      "type": "string"
    },
    "keepProjectLevelWrapper": {
      "description": "Keep the `Maven` or `Gradle` wrapper files from child project (when generating a multi-module project). Follow this guide https://t.ly/TmKF- for more information.",
      "type": "boolean",
      "default": true
    },
    "quarkusInitializerUrl": {
      "type": "string",
      "default": "https://code.quarkus.io",
      "description": "The URL to the Quarkus Initializer instance to use to generate the project.",
      "x-priority": "internal"
    },
    "proxyUrl": {
      "type": "string",
      "description": "The URL of the (corporate) proxy server to use to access Quarkus Initializer.",
      "x-priority": "internal"
    },
    "skipCodeSamples": {
      "description": "Skip genetating code samples.",
      "type": "boolean",
      "default": false,
      "x-prompt": "Would you like to include code samples from extensions (when available)?"
    },
    "version": {
      "type": "string",
      "description": "Version of the project to generate.",
      "alias": "v",
      "x-priority": "internal",
      "visible": false
    },
    "tags": {
      "type": "string",
      "description": "Add tags to the project (used for linting).",
      "alias": "t",
      "x-priority": "internal"
    }
  },
  "required": ["projectType", "directory"]
}
