{
  "$schema": "http://json-schema.org/schema",
  "$id": "NxGradleInit",
  "title": "Init",
  "type": "object",
  "properties": {
    "javaVersion": {
      "description": "Java version",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ],
      "default": "17",
      "x-prompt": {
        "message": "Which version of Java would you like to use?",
        "type": "list",
        "items": [
          {
            "value": "17",
            "label": "17"
          },
          {
            "value": "21",
            "label": "21"
          }
        ]
      }
    },
    "dsl": {
      "description": "Build DSL",
      "type": "string",
      "default": "groovy",
      "x-prompt": {
        "message": "Which build DSL would you like to use?",
        "type": "list",
        "items": [
          {
            "value": "groovy",
            "label": "Groovy build DSL"
          },
          {
            "value": "kotlin",
            "label": "Kotlin build DSL"
          }
        ]
      }
    },
    "rootProjectName": {
      "type": "string",
      "default": "root-project",
      "x-prompt": "What rootProjectName would you like to use?",
      "pattern": "^[a-zA-Z].*$"
    },
    "gradleRootDirectory": {
      "type": "string",
      "default": "",
      "description": "Where Gradle Wrapper (if not skipped), config files and projects are placed",
      "x-prompt": "Where do you want Gradle Wrapper (if not skipped), config files and projects to be placed?"
    },
    "preset": {
      "description": "preset",
      "type": "string",
      "default": "spring-boot",
      "enum": ["spring-boot", "quarkus", "micronaut", "none"],
      "x-prompt": {
        "message": "Which preset to use? or 'none' to skip.",
        "type": "list",
        "items": [
          {
            "value": "spring-boot",
            "label": "Spring Boot"
          },
          {
            "value": "quarkus",
            "label": "Quarkus"
          },
          {
            "value": "micronaut",
            "label": "Micronaut"
          },
          {
            "value": "none",
            "label": "None"
          }
        ]
      }
    },
    "skipWrapper": {
      "description": "Don't generate Gradle Wrapper",
      "type": "boolean",
      "default": false
    },
    "versionManagement": {
      "description": "Version management",
      "type": "string",
      "default": "version-catalog",
      "x-prompt": {
        "message": "How do you want to share dependency versions between projects?",
        "type": "list",
        "items": [
          {
            "value": "version-catalog",
            "label": "Version catalog"
          },
          {
            "value": "properties",
            "label": "Properties file"
          }
        ]
      }
    },
    "skipFormat": {
      "description": "Skip formatting files.",
      "type": "boolean",
      "default": false
    },
    "formatter": {
      "description": "The tool to use for code formatting.",
      "type": "string",
      "enum": ["none", "prettier"],
      "default": "prettier",
      "x-prompt": {
        "message": "Would you like to use Prettier for code formatting?",
        "type": "list",
        "items": [
          {
            "value": "prettier",
            "label": "Yes"
          },
          {
            "value": "none",
            "label": "No"
          }
        ]
      }
    },
    "buildTargetName": {
      "type": "string",
      "description": "Build target name",
      "default": "build"
    }
  },
  "required": [
    "javaVersion",
    "dsl",
    "rootProjectName",
    "gradleRootDirectory",
    "preset",
    "versionManagement"
  ]
}
