{
  "$ref": "#/definitions/ReposConfiguration",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "GitConfig": {
      "additionalProperties": false,
      "properties": {
        "branches": {
          "default": "branches: ['**']",
          "description": "The list of branches to pull from the source repo, making them available in the public repo. If you have some branches in your source repo (that is, the one specified in `location`,) and you don't want those branches to have a snapshot of their current files available, then do not list those branches in this field. Glob patterns can be used here. By default, pulls all available branches from the source repo.",
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "compareTo": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "max": {
                    "type": "number"
                  },
                  "pattern": {
                    "type": "string"
                  }
                },
                "required": [
                  "pattern"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        },
        "buildSteps": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "command": {
                "type": "string"
              },
              "copyFrom": {
                "type": "string"
              },
              "copyTo": {
                "type": "string"
              }
            },
            "required": [
              "command",
              "copyFrom",
              "copyTo"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "defaultBranch": {
          "default": "'main', 'master', or 'develop', determined by looking for one of those branches",
          "description": "The default branch for the repository. If this field is not set, Repo Viewer will automatically try `main`, `master`, and `develop`, in that order. Set a `defaultBranch` value if your default branch is not one of those.",
          "type": "string"
        },
        "defaultTemplate": {
          "additionalProperties": false,
          "properties": {
            "homepageButtons": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "newTab": {
                    "type": "boolean"
                  },
                  "text": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "text"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "homepageButtons"
          ],
          "type": "object"
        },
        "description": {
          "type": "string"
        },
        "languageExtensions": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "location": {
          "type": "string"
        },
        "tags": {
          "default": "tags: ['**']",
          "description": "The list of tags to fetch from the source repo, making them available in the public repo. If you have some tags in your source repo (that is, the one specified in `location`,) and you don't want those tags to have a snapshot of their files available, then do not list those tags in this field. Glob patterns can be used here. By default, pulls all available tags from the source repo.\n\nYou may give either an exact name of the tag, a glob pattern (like `releases/**`), or an object. If you want to limit the number of tags that are shown (e.g. to avoid generating HTML pages for very old releases), use the object. The object contains two keys: `pattern` and `max`, where `pattern` is a glob pattern for matching a tag name, and `max` is how many tags should be fetched matching that name. Older tags beyond the max number will be ignored.",
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "max": {
                    "type": "number"
                  },
                  "pattern": {
                    "type": "string"
                  }
                },
                "required": [
                  "pattern",
                  "max"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array"
        }
      },
      "required": [
        "location"
      ],
      "type": "object"
    },
    "ReposConfiguration": {
      "additionalProperties": false,
      "description": "The ReposConfiguration object contains information about your local repositories, like their name and location on your local filesystem. Add repositories to this configuration object to make a static site for them.\n\nYou will also need to set the  {@link  ReposConfiguration.baseUrl }  to the URL of your live website.",
      "properties": {
        "baseUrl": {
          "description": "The root URL where this website will be. E.g.: https://blog.example.com/repos. This URL will be used when a clone or pull command is being shown on your site. Unlike on a regular Build Awesome site, this needs to be explicitly defined, since the `git clone` URL cannot be a relative link; Repo Viewer needs to know your domain name in order to know what the `git clone` URL should be.",
          "type": "string"
        },
        "defaultTemplate": {
          "additionalProperties": false,
          "description": "Some configuration options for the default template included with this plugin.",
          "properties": {
            "allRepositoriesPageTitle": {
              "type": "string"
            },
            "colors": {
              "additionalProperties": false,
              "properties": {
                "languageGraph": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "dark": {
                        "type": "string"
                      },
                      "light": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "light"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "enabled": {
              "default": true,
              "description": "Whether or not the default template should be used. If `true`, will generate the type of HTML pages seen at https://tuckerm.us/repos.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "path": {
          "default": "path: \"/repos\"",
          "description": "The path to put the cloned repositories in. Repositories will be cloned from their source `location` to the `path` folder inside of your site's output folder. For example, `_site/repos/my-git-repo.git`.",
          "type": "string"
        },
        "repos": {
          "additionalProperties": {
            "$ref": "#/definitions/GitConfig",
            "description": "An object containing the configuration for your repositories. Each key in this object is a repository name, and the value has several config options for that repository. The required config options describe the path to the repository and which branches should be pulled. See the specific definition of  {@link  GitConfig }  for more details about what goes in these configuration objects."
          },
          "type": "object"
        }
      },
      "required": [
        "repos",
        "baseUrl"
      ],
      "type": "object"
    }
  }
}

