content: ###############################################################################
  ##
  ## Global, site-wide configuration settings
  ##
  ###############################################################################
  
  # A friendly name for the generated site.
  #
  # This is accessible in all templates.
  #site_name = ""
  
  # The URL where this generated site is hosted.
  #
  # This is accessible in all templates.
  #site_url = ""
  
  # A description of the generated site.
  #
  # This is accessible in all templates.
  #site_description = ""
  
  # URL where the repositories can be cloned from.
  #
  # Use the "%REPO%" variable to substitute the repository name.
  #
  # This can also be set per-repository.
  #clone_url = "https://github.com/your_user/%REPO%"
  
  # Which branch to use for generating history.
  #
  # Itsy-Gitsy currently only supports traversing the history of a single branch,
  # which is the one named here.  Common options are "master" and "main".
  # Defaults to "master" if not specified.
  #
  # Note that this probably should not contain any remote prefix, like "origin/",
  # though it may.  Also note that the "default branch" is only a concept for
  # remote repositories; local repositories do not have the concept, hence this
  # must be explicitly specified.
  #
  # This can also be set per-repository.
  #branch = "master"
  
  # List of directories, each of which contains Git repositories to
  # index.
  #
  # For each directory listed here, Itsy-Gitsy imports all of the
  # immediate subdirectories as repositories.  Each repository is
  # imported with its name set to the name of the subdirectory it is in.
  #
  # Every repository imported in this way has the global setting from
  # this file applied.  It is not possible to apply per-repository
  # settings for bulk-imported repositories.  Repositories that require
  # specific configuration can be explicitly specified later in this
  # file.
  #recursive_repo_dirs = []
  
  # List of files potentially containing repository documentation.
  #
  # Each repository root is searched for these files, in order.  The
  # first matching file is provided to the templates as a `readme`
  # variable, with the file contents.  Markdown files are rendered as
  # HTML if the feature is enabled.
  #
  # This can also be set per-repository.
  readme_files = ["README.md", "README"]
  
  # List of files to copy to the site's `global_assets` directory.
  #
  # The files in this list are copied unmodified, and with the same name, to the
  # configured `global_asset` output directory.  Use for including global,
  # site-wide resources, such as stylesheets, images, and icons.
  #
  # Currently does NOT support globbing or directories.  Each file must be listed
  # individually.
  #
  # Use "%TEMPLATE%" variable to substitute the path to the current
  # template folder.
  #
  # Use "%REPO%" variable to substitute the path to the currently
  # processing repository (only sensible when used as a per-repo
  # configuration).
  #
  # This can also be set per-repository, in which case the `repo_assets` output
  # directory is used.
  asset_files = ["%TEMPLATE%/style.css"]
  
  # Whether to split history output into pages
  #
  # If non-zero and a `history` template is specified, the history
  # output is generated several times, each with the `history` variable
  # in the template engine containing the next `paginate_history` number
  # of entries.
  #
  # A `page` variable is available in the template, which contains the
  # current, next, previous, and total number of pages.
  #
  # Use the "%PAGE%" variable in the `history` output variable to
  # substitute the page number into the produced filename.
  paginate_history = 50
  
  # Whether to split branches output into pages
  #
  # If non-zero and a `branches` template is specified, the branches
  # output is generated several times, each with the `branches` variable
  # in the template engine containing the next `paginate_branches`
  # number of entries.
  #
  # A `page` variable is available in the template, which contains the
  # current, next, previous, and total number of pages.
  #
  # Use the "%PAGE%" variable in the `branches` output variable to
  # substitute the page number into the produced filename.
  paginate_branches = 50
  
  # Whether to split tags output into pages
  #
  # If non-zero and a `tags` template is specified, the tags output is
  # generated several times, each with the `tags` variable in the
  # template engine containing the next `paginate_tags` number of
  # entries.
  #
  # A `page` variable is available in the template, which contains the
  # current, next, previous, and total number of pages.
  #
  # Use the "%PAGE%" variable in the `tags` output variable to
  # substitute the page number into the produced filename.
  paginate_tags = 50
  
  # Whether to render Markdown files in repos into HTML.
  #
  # Rendering Markdown can make site generation take more time.  It has potential
  # security implications, as user-generated input (files in the repo) are
  # formatted into HTML and served unescaped.  Use with caution.
  #
  # This can also be set per-repository.
  render_markdown = true
  
  # Whether render files with syntax highlighting, as HTML.
  #
  # Applying syntax highlighting is CPU-intensive, and greatly increases site
  # generation time.  It has potential security implications, as user-generated
  # input (files in the repo) are formatted into HTML and served unescaped.  Use
  # with caution.
  #
  # This can also be set per-repository.
  syntax_highlight = true
  
  # Which theme to use for syntax highlighting colors.
  #
  # The default themes from Syntect are available, namely:
  #
  # - `base16-ocean.light`
  # - `base16-ocean.dark`
  # - `base16-eighties.dark`
  # - `base16-mocha.dark`
  # - `InspiredGitHub`
  # - `Solarized (dark)`
  # - `Solarized (light)`
  #
  syntax_highlight_theme = "base16-ocean.light"
  
  # Whether or not to run 'git fetch' on remote repos
  #
  # When specified repositories are remote (via HTTPS), this setting
  # configures whether Itsy-Gitsy should run the equivalent of `git
  # fetch --all` to update the repository first.
  #
  # Itsy-Gitsy will exit with an error if the fetch fails.  If a
  # repository is not available, or if Itsy-Gitsy is running in an
  # environment without network access, this should be set to 'false'.
  #
  # This can also be set per-repository.  Defaults to 'true' if not
  # specified.
  fetch_remote = true
  
  # Number of threads to use for parallel processing
  #
  # Specify a specify a specific number of threads/cores to split
  # parallel processing across, or set to 0 to auto-detect.
  #
  # The most practical values here are 0 (auto-detect, which typically
  # means use all cores), or 1 (to disable parallelism).
  threads = 0
  
  # Limits maximum number of history items (i.e. git log) to parse.
  #
  # After the limit is reached, no more history items will be processed or stored
  # in memory, and no more commits will be output to disk.  For large
  # repositories, this can increase processing speed and decrease memory and disk
  # usage.
  #
  # This can also be set per-repository.
  #limit_history    = 500
  
  # Limits maximum number of commits to output.
  #
  # When the limit is reached, no more commits are written to disk.  Similar to
  # `limit_history`, but the entire git log is still read into RAM and provided
  # to the templates.
  #
  # This can also be set per-repository.
  #limit_commits    = 500
  
  # Limits maximum number of branches to parse.
  #
  # When the limit is reached, no more branches are parsed in memory or provided
  # to the `branch` template.
  #
  # Since branch order is unsorted and non-deterministic, the most sensible
  # values for this are very large, or 0 (to disable branches).
  #
  # This can also be set per-repository.
  #limit_branches   = 500
  
  # Limits maximum number of tags to parse.
  #
  # When the limit is reached, no more tags are parsed in memory or provided to
  # the `tag` template.
  #
  # Since tag order is unsorted and non-deterministic, the most sensible values
  # for this are very large, or 0 (to disable tags).
  #
  # This can also be set per-repository.
  #limit_tags       = 500
  
  # Limit the `commit_ids` variable to only related commits
  #
  # Normally the `commit_ids` variable contains a list of *all* git
  # commit hashes that Itsy-Gitsy is parsing.  For large repos, this can
  # be enormous, and take a lot of CPU time to search.
  #
  # Enabling this option limits `commit_ids` to only contain hashes of
  # commits that are referenced by the current object:
  #
  # - in `history` templates, all commits on the current page
  # - in `commit` templates, all the parent commits
  # - in `branch` templates, the commit it references
  # - in `tag` templates, the commit that it tags
  #
  # Enabling this provides a performance boost with the default
  # templates with no tradeoffs.  This is only a restriction for custom
  # templates that require more metadata.
  #
  # This can also be set per-repository.
  limit_commit_ids_to_related = true
  
  # Limits directory depth to traverse when parsing files.
  #
  # Limits the number of directories traversed when enumerating files in the
  # `all_files` entry, which is passed as part of the repository to each
  # template.  This can help reduce RAM usage, and potentially disk usage, for
  # repositories with a very large number of files or directories.
  #
  # Set to 0 to disable both `all_files` and `root_files`, i.e. do not parse any
  # file listing.  If set to 1 or greater, only applies to `all_files`.
  #
  # This can also be set per-repository.
  #limit_tree_depth = 20
  
  # Limits size of files in repo with content previews.
  #
  # Only non-binary files smaller than this limit will have their contents
  # provided to the `file` template.  Large files are still processed, but do not
  # include the text contents.
  #
  # This can also be set per-repository.
  #limit_file_size  = 2097152
  
  # Limits size of a single produced repository.
  #
  # Limits the size of a generated repository preview.  This is a low-precision
  # limit, terminating generation wherever it happens to be, and may lead to many
  # dead links in the final output.
  #
  # This limit is not strict: generation is terminated after the first file that
  # exceeds this limit.  The output size might somewhat overflow this limit.
  # Also, static repository assets specified in this configuration are NOT
  # included in this limit.
  #
  # This is intended merely as a safety mechanism to prevent massive run-away
  # disk usage.
  #
  # This can also be set per-repository.
  #limit_repo_size  = 52428800
  
  # Limits total size of all output.
  #
  # Limits the size of the total run: the sum of all repositories.  This is a
  # low-precision limit, terminating generation wherever it happens to be, and
  # may lead to many dead links or entirely missing repositories.
  #
  # This limit is not strict: generation is terminated after the first file that
  # exceeds this limit.  The output size might somewhat overflow this limit.
  # Also, static repository assets specified in this configuration are NOT
  # included in this limit.
  #
  # This is intended merely as a safety mechanism to prevent massive run-away
  # disk usage.
  #
  # This can also be set per-repository.
  #limit_total_size = 524288000
  
  # Limits number of contextual elements available to templates.
  #
  # By default, if this limit is not set, all repository elements
  # (history, branches, tags, commits) are provided in full to all
  # repository templates, so every page can see all repo metadata.
  #
  # For parallel output generation, one copy of the repo metadata is
  # made per CPU core.  All of this must be loaded into RAM, which means
  # large repositories can be very slow to process, or exhaust memory.
  #
  # This setting limits all elements, *except* those directly relevant
  # to the page being rendered.  For example, all elements except
  # `branches` are limited in the `branches` template, all elements
  # except `tags` are limited in the `tags` template, and so on.
  #
  # This is critically important for very large repositories, to prevent
  # them from consuming all memory and destroying all things.
  #
  # This can also be set per-repository.
  #limit_context = 200
  
  # Limit number of diffs and diff statistics.
  #
  # By default, if this limit is not set, every history item contains
  # statistics (files changes, additions, and deletions), and every
  # commit item contains a diff.  These are all held in memory and
  # passed to each repository template.
  #
  # While parsing history, and if this limit is reached, subsequent
  # history and commit items will not have diffs and statistics
  # included.
  #
  # This is critically important for very large repositories, to prevent
  # them from consuming all memory and destroying all things.
  #
  # This can also be set per-repository.
  #limit_diffs = 200
  
  
  
  ###############################################################################
  ##
  ## Subsection specifying output paths, and how they are generated.
  ##
  ## Itsy-Gitsy requires two root paths, both specified here:
  ##
  ## 1) `output_root`, a directory where all rendered output will be written
  ## 2) `template_root`, a directory where all input templates are stored
  ##
  ##
  ## Next, a `templates` table is defined, which contains a variable
  ## number of entries.  Each entry must contain the following three
  ## variables:
  ##
  ## - `template` -- the input file to use as a template, relative to
  ##                 `template_root`
  ##
  ## - `output` -- the output file(s) to write, relative to
  ##                 `output_root`.  These filenames can contain
  ##                 variables, which are defined below.
  ##
  ## - `kind` -- the type of output being generated.  This decides which
  ##             variables are available in the template, and which
  ##             variables can be substituted in the output filename.
  ##
  ##
  ## The following output types are available:
  ##
  ## - `repo_list` -- Template receives all defined repository metadata in the `repos` variable.
  ##
  ## - `summary` -- Template receives all metadata of the current repo.
  ##                This is split across the `name`, `history`,
  ##                `branches`, `tags`, `root_files`, `all_files`,
  ##                `commits`, `file_ids`, commit_ids`, `metadata`,
  ##                `last_ts_utc`, and `last_ts_offset` variables.
  ##
  ## - `history` -- All current repo metadata.  `history` variable not
  ##                affected by `limit_context`.
  ##
  ## - `commit` -- All current repo metadata.  Current commit object in
  ##               `commit` variable.
  ##
  ## - `branches` -- All current repo metadata.  `branches` variable not
  ##                 affected by `limit_context`.
  ##
  ## - `branch` -- All current repo metadata.  Current branch object in
  ##               `branch` variable.
  ##
  ## - `tags` -- All current repo metadata.  `tags` variable not
  ##             affected by `limit_context`.
  ##
  ## - `tag` -- All current repo metadata.  Current tag object in `tag`
  ##            variable.
  ##
  ## - `files` -- All current repo metadata.
  ##
  ## - `file` -- All current repo metadata.  Current file object in
  ##             `file` variable.
  ##
  ## - `dir` -- All current repo metadata.  Current directory object in
  ##            `dir` variable.
  ##
  ## - `error` -- All metadata for all repositories.
  ##
  ##
  ## The following variables are permitted in `output` paths:
  ##
  ## - "%REPO%" -- Replaced with the name of the currently processing
  ##               repository.  Available in all except `repos_list` and
  ##               `error`.
  ##
  ## - "%ID%" -- Replaced with the ID of the currently processing
  ##             object.  Available in `commit`, `branch`, `tag`,
  ##             `file`, and `dir`.
  ##
  ## - "%PAGE%" -- Replaced with the current page number if output is
  ##               paginated.  Available in `history`, `branches`, and
  ##               `tags`.
  ##
  ##
  ## All except `output_root` and `template_root` are optional.
  ## Template types that are not specified will not be generated, and
  ## all template types can be generated as many times as desired.
  ##
  ###############################################################################
  [gitsy_outputs]
  output_root    = "rendered/"
  template_root  = "templates/default_light/"
  
  templates = [
        { template = "repos.html",    output = "index.html",                 kind = "repo_list" },
        { template = "summary.html",  output = "%REPO%/index.html",          kind = "summary"   },
        { template = "history.html",  output = "%REPO%/history%PAGE%.html",  kind = "history"   },
        { template = "commit.html",   output = "%REPO%/commit/%ID%.html",    kind = "commit"    },
        { template = "branches.html", output = "%REPO%/branches%PAGE%.html", kind = "branches"  },
        { template = "branch.html",   output = "%REPO%/branch/%ID%.html",    kind = "branch"    },
        { template = "tags.html",     output = "%REPO%/tags%PAGE%.html",     kind = "tags"      },
        { template = "tag.html",      output = "%REPO%/tag/%ID%.html",       kind = "tag"       },
        { template = "files.html",    output = "%REPO%/files.html",          kind = "files"     },
        { template = "file.html",     output = "%REPO%/file/%ID%.html",      kind = "file"      },
        { template = "dir.html",      output = "%REPO%/dir/%ID%.html",       kind = "dir"       },
        { template = "404.html",      output = "404.html",                   kind = "error"     }
  ]
  
  # Output file for syntax highlighting CSS
  #
  # If syntax highlighting is enabled, a single CSS file will be
  # rendered to this path.  It must be included in the file template to
  # render the syntax highlighting correctly.
  #
  # If not specified, a default is used.
  syntax_css    = "%REPO%/file/syntax.css"
  
  # Output directory for files specified in global `asset_files`.
  #
  # Each input file is copied to this directory unmodified.
  #
  # If not specified, a default is used.
  global_assets = "assets/"
  
  # Output directory for files specified in per-repo `asset_files`.
  #
  # Each input file is copied to this directory unmodified.
  #
  # If not specified, a default is used.
  repo_assets   = "%REPO%/assets/"
  
  # Directory to clone remote repositories into.
  #
  # Remote repositories must be cloned locally to parse.  They are cloned into
  # subdirectories of `cloned_repos`, as bare git repos.  These are not deleted
  # when Itsy-Gitsy finishes.  If the directories already exist when Itsy-Gitsy
  # runs, all remote refs are fetched rather than recloning.
  #
  # Only non-authenticated HTTPS repositories are currently supported.
  #
  # If not specified, a default is used.
  cloned_repos  = "cloned_repos/"
  
  
  
  ###############################################################################
  ##
  ## Subsection for arbitrary, global user data.
  ##
  ## These variables are available to every page template.  Add extra metadata
  ## that you want available site-wide here.
  ##
  ###############################################################################
  [gitsy_extra]
  generated_by = "Itsy-Gitsy"
  generated_by_url = "https://git.trevorbentley.com/itsy-gitsy/"
  #global_user_defined_var = "whatever"
  #these_can_also_be_numbers = 5
  #or_bools = true
  #or_other_toml_types = {like_dicts = "yep, those too"}
  
  
  
  ###############################################################################
  ##
  ## Individual repository configurations.
  ##
  ###############################################################################
  
  # The section name is used as the repository name if no `name` attribute is
  # provided.
  #[my_repository]
  
  # Path to the Git repository.
  #path = "/path/to/my_repository"
  
  # Name of this repository, if different from the section name.
  #name = "my_repository"
  
  # A description of this repository.
  #description = ""
  
  # URL of website associated with this repository.
  #website = ""
  
  # Dictionary of arbitrary, user-defined attributes associated with the repo.
  #
  # Specifying as an inline-table requires all keys to be on one line.
  #
  # Available in all repo-specific page templates.
  #
  #attributes = { status = "active", type = "daemon" }
  
  # Per-repository settings, same as the global versions described above:
  
  #clone_url              = "https://github.com/your_user/%REPO%"
  #branch                 = "master"
  #render_markdown        = false
  #syntax_highlighting    = false
  #syntax_highlight_theme = "base16-ocean.dark"
  #paginate_history       = 50
  #paginate_branches      = 50
  #paginate_tags          = 50
  #limit_history          = 500
  #limit_commits          = 500
  #limit_branches         = 500
  #limit_tags             = 500
  #limit_tree_depth       = 20
  #limit_file_size        = 2097152
  #limit_repo_size        = 52428800
  #limit_total_size       = 524288000
  #limit_context          = 200
  #limit_diffs            = 200
  #asset_files            = ["%REPO%/LICENSE"]
  #readme_files           = ["README.md", "README"]
  
  # An alternative way to specify the user-defined attributes.
  #
  # This method allows keys to be on their own lines.
  #
  #[circadian.attributes]
  #status = "active"
  #type = "daemon"
  
  # Remote HTTPS repositories can also be specified:
  #
  #[remote_repo]
  #path = "https://github.com/my_user_name/remote_repo"
  