{
  "$schema": "https://json-schema.org/schema",
  "cli": "nx",
  "$id": "NxPluginMigration",
  "title": "Create a Migration for an Nx Plugin",
  "description": "Create a Migration for an Nx Plugin.",
  "type": "object",
  "examples": [
    {
      "description": "Generate a migration exported with the name matching the file name, which will be triggered when migrating to version 1.0.0 or above from a previous version. It results in the migration `foo` at `mylib/src/migrations/foo.ts`",
      "command": "nx g @nx/plugin:migration mylib/src/migrations/foo.ts -v=1.0.0"
    },
    {
      "description": "Generate a migration without providing the file extension, which will be triggered when migrating to version 1.0.0 or above from a previous version. It results in the migration `foo` at `mylib/src/migrations/foo.ts`",
      "command": "nx g @nx/plugin:migration mylib/src/migrations/foo -v=1.0.0"
    },
    {
      "description": "Generate a migration exported with a different name from the file name, which will be triggered when migrating to version 1.0.0 or above from a previous version. It results in the migration `custom` at `mylib/src/migrations/foo.ts`",
      "command": "nx g @nx/plugin:migration mylib/src/migrations/foo --name=custom -v=1.0.0"
    }
  ],
  "properties": {
    "path": {
      "type": "string",
      "description": "The file path to the migration without the file extension. Relative to the current working directory.",
      "$default": {
        "$source": "argv",
        "index": 0
      },
      "x-prompt": "What is the migration file path?",
      "x-priority": "important"
    },
    "name": {
      "type": "string",
      "description": "The migration name to export in the plugin migrations collection."
    },
    "description": {
      "type": "string",
      "description": "Migration description."
    },
    "packageVersion": {
      "type": "string",
      "description": "Version to use for the migration.",
      "alias": "v",
      "x-prompt": "What version would you like to use for the migration?",
      "x-priority": "important"
    },
    "packageJsonUpdates": {
      "type": "boolean",
      "description": "Whether or not to include `package.json` updates.",
      "alias": "p",
      "default": false
    },
    "skipLintChecks": {
      "type": "boolean",
      "default": false,
      "description": "Do not eslint configuration for plugin json files."
    }
  },
  "required": ["packageVersion", "path"],
  "additionalProperties": false
}
