Improve maintainability of config option data (#8383)

Merge pull request 8383
This commit is contained in:
Ashwin Maroli 2020-09-09 14:48:20 +05:30 committed by GitHub
parent 1fbc4c28ea
commit d1093e0160
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 266 additions and 191 deletions

View File

@ -1,183 +0,0 @@
global:
- name: Site Source
description: Change the directory where Jekyll will read files
option: "source: DIR"
flag: -s, --source DIR
- name: Site Destination
description: Change the directory where Jekyll will write files
option: "destination: DIR"
flag: -d, --destination DIR
- name: Safe
description: "Disable <a href=\"/docs/plugins/\">non-whitelisted plugins</a>, caching to disk, and ignore symbolic links."
option: "safe: BOOL"
flag: --safe
- name: Disable Disk Cache
version-badge: 4.1.0
description: "Disable caching of content to disk in order to skip creating a <code>.jekyll-cache</code> or similar directory at the source to avoid interference with virtual environments and third-party directory watchers. Caching to disk is always disabled in <code>safe</code> mode."
option: "disable_disk_cache: BOOL"
flag: --disable-disk-cache
- name: Ignore theme configuration
version-badge: 4.1.0
description: "Jekyll 4.0 started allowing themes to bundle a <code>_config.yml</code> to simplify theme-onboarding for new users. In the unfortunate situation that importing a bundled theme configuration messes up the merged site-configuration, the user can configure Jekyll to not import the theme-config entirely."
option: "ignore_theme_config: BOOL"
- name: Exclude
description: "Exclude directories and/or files from the conversion. These exclusions are relative to the site's source directory and cannot be outside the source directory."
option: "exclude: [DIR, FILE, ...]"
- name: Include
description: "Force inclusion of directories and/or files in the conversion. <code>.htaccess</code> is a good example since dotfiles are excluded by default."
option: "include: [DIR, FILE, ...]"
- name: Keep files
description: "When clobbering the site destination, keep the selected files. Useful for files that are not generated by jekyll; e.g. files or assets that are generated by your build tool. The paths are relative to the <code>destination</code>."
option: "keep_files: [DIR, FILE, ...]"
- name: Time Zone
description: "Set the time zone for site generation. This sets the <code>TZ</code> environment variable, which Ruby uses to handle time and date creation and manipulation. Any entry from the <a href=\"https://en.wikipedia.org/wiki/Tz_database\">IANA Time Zone Database</a> is valid, e.g. <code>America/New_York</code>. A list of all available values can be found <a href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\"> here</a>. When serving on a local machine, the default time zone is set by your operating system. But when served on a remote host/server, the default time zone depends on the server's setting or location."
option: "timezone: TIMEZONE"
- name: Encoding
description: "Set the encoding of files by name (only available for Ruby 1.9 or later). The default value is <code>utf-8</code> starting in 2.0.0, and <code>nil</code> before 2.0.0, which will yield the Ruby default of <code>ASCII-8BIT</code>. Available encodings can be shown by the command <code>ruby -e 'puts Encoding::list.join(\"\\n\")'</code>."
option: "encoding: ENCODING"
build:
- name: Regeneration
description: Enable auto-regeneration of the site when files are modified.
flag: -w, --[no-]watch
- name: Configuration
description: >-
Specify config files instead of using <code>_config.yml</code> automatically.
Settings in later files override settings in earlier files.
flag: --config FILE1[,FILE2,...]
- name: Plugins
description: >-
Specify plugin directories instead of using <code>_plugins/</code> automatically.
option: "plugins_dir: [ DIR1,... ]"
flag: -p, --plugins DIR1[,DIR2,...]
- name: Layouts
description: >-
Specify layout directory instead of using <code>_layouts/</code> automatically.
option: "layout_dir: DIR"
flag: --layouts DIR
- name: Drafts
description: Process and render draft posts.
option: "show_drafts: BOOL"
flag: -D, --drafts
- name: Environment
description: Use a specific environment value in the build.
flag: JEKYLL_ENV=production
- name: Future
description: Publish posts or collection documents with a future date.
option: "future: BOOL"
flag: --future
- name: Unpublished
description: Render posts that were marked as unpublished.
option: "unpublished: BOOL"
flag: --unpublished
- name: LSI
description: >-
Produce an index for related posts. Requires the
<a href="https://jekyll.github.io/classifier-reborn/">classifier-reborn</a> plugin.
option: "lsi: BOOL"
flag: --lsi
- name: Limit Posts
description: Limit the number of posts to parse and publish.
option: "limit_posts: NUM"
flag: --limit_posts NUM
- name: Force polling
description: Force watch to use polling.
option: "force_polling: BOOL"
flag: --force_polling
- name: Verbose output
description: Print verbose output.
flag: -V, --verbose
- name: Silence Output
description: Silence the normal output from Jekyll during a build.
flag: -q, --quiet
- name: Incremental build
description: >-
Enable the experimental incremental build feature. Incremental build only
re-builds posts and pages that have changed, resulting in significant performance
improvements for large sites, but may also break site generation in certain
cases.
option: "incremental: BOOL"
flag: -I, --incremental
- name: Liquid profiler
description: Generate a Liquid rendering profile to help you identify performance bottlenecks.
option: "profile: BOOL"
flag: --profile
- name: Strict Front Matter
description: Cause a build to fail if there is a YAML syntax error in a page's front matter.
option: "strict_front_matter: BOOL"
flag: --strict_front_matter
- name: Base URL
description: Serve the website from the given base URL.
option: "baseurl: URL"
flag: -b, --baseurl URL
- name: Trace
description: Show the full backtrace when an error occurs.
flag: -t, --trace
serve:
- name: Local Server Port
description: Listen on the given port.
option:
- "port: PORT"
flag:
- -P, --port PORT
- name: Local Server Hostname
description: Listen at the given hostname.
option:
- "host: HOSTNAME"
flag:
- -H, --host HOSTNAME
- name: Live Reload
description: Reload a page automatically on the browser when its content is edited.
option:
- "livereload: BOOL"
flag:
- -l, --livereload
- name: Live Reload Ignore
description: File glob patterns for LiveReload to ignore.
option:
- "livereload_ignore: [ GLOB1,... ]"
flag:
- --livereload-ignore GLOB1[,GLOB2,...]
- name: Live Reload Min/Max Delay
description: Minimum/Maximum delay before automatically reloading page.
option:
- "livereload_min_delay: SECONDS"
- "livereload_max_delay: SECONDS"
flag:
- --livereload-min-delay SECONDS
- --livereload-max-delay SECONDS
- name: Live Reload Port
description: Port for LiveReload to listen on.
flag:
- --livereload-port PORT
- name: Open URL
description: Open the site's URL in the browser.
option:
- "open_url: BOOL"
flag:
- -o, --open-url
- name: Detach
description: Detach the server from the terminal.
option:
- "detach: BOOL"
flag:
- -B, --detach
- name: Skips the initial site build
description: Skips the initial site build which occurs before the server is started.
option:
- "skip_initial_build: BOOL"
flag:
- --skip-initial-build
- name: Show Directory Listing
description: Show a directory listing instead of loading your index file.
option:
- "show_dir_listing: BOOL"
flag:
- --show-dir-listing
- name: X.509 (SSL) Private Key
description: SSL Private Key, stored or symlinked in the site source.
flag:
- --ssl-key
- name: X.509 (SSL) Certificate
description: SSL Public certificate, stored or symlinked in the site source.
flag:
- --ssl-cert

View File

@ -0,0 +1,110 @@
- name: Regeneration
description: Enable auto-regeneration of the site when files are modified.
flag: "-w, --[no-]watch"
- name: Configuration
description: >-
Specify config files instead of using <code>_config.yml</code> automatically.
Settings in later files override settings in earlier files.
flag: "--config FILE1[,FILE2,...]"
- name: Plugins
description: >-
Specify plugin directories instead of using <code>_plugins/</code> automatically.
option: "plugins_dir: [ DIR1,... ]"
flag: "-p, --plugins DIR1[,DIR2,...]"
- name: Layouts
description: >-
Specify layout directory instead of using <code>_layouts/</code> automatically.
option: "layout_dir: DIR"
flag: --layouts DIR
- name: Drafts
description: Process and render draft posts.
option: "show_drafts: BOOL"
flag: -D, --drafts
- name: Environment
description: Use a specific environment value in the build.
flag: JEKYLL_ENV=production
- name: Future
description: Publish posts or collection documents with a future date.
option: "future: BOOL"
flag: --future
- name: Unpublished
description: Render posts that were marked as unpublished.
option: "unpublished: BOOL"
flag: --unpublished
- name: LSI
description: >-
Produce an index for related posts. Requires the
<a href="https://jekyll.github.io/classifier-reborn/">classifier-reborn</a> plugin.
option: "lsi: BOOL"
flag: --lsi
- name: Limit Posts
description: Limit the number of posts to parse and publish.
option: "limit_posts: NUM"
flag: --limit_posts NUM
- name: Force polling
description: Force watch to use polling.
option: "force_polling: BOOL"
flag: --force_polling
- name: Verbose output
description: Print verbose output.
flag: -V, --verbose
- name: Silence Output
description: Silence the normal output from Jekyll during a build.
flag: -q, --quiet
- name: Incremental build
description: >-
Enable the experimental incremental build feature. Incremental build only
re-builds posts and pages that have changed, resulting in significant performance
improvements for large sites, but may also break site generation in certain
cases.
option: "incremental: BOOL"
flag: -I, --incremental
- name: Liquid profiler
description: Generate a Liquid rendering profile to help you identify performance bottlenecks.
option: "profile: BOOL"
flag: --profile
- name: Strict Front Matter
description: Cause a build to fail if there is a YAML syntax error in a page's front matter.
option: "strict_front_matter: BOOL"
flag: --strict_front_matter
- name: Base URL
description: Serve the website from the given base URL.
option: "baseurl: URL"
flag: -b, --baseurl URL
- name: Trace
description: Show the full backtrace when an error occurs.
flag: -t, --trace

View File

@ -0,0 +1,77 @@
- name: Site Source
description: Change the directory where Jekyll will read files
option: "source: DIR"
flag: -s, --source DIR
- name: Site Destination
description: Change the directory where Jekyll will write files
option: "destination: DIR"
flag: -d, --destination DIR
- name: Safe
description: >-
Disable <a href="/docs/plugins/">non-whitelisted plugins</a>, caching to disk, and ignore symbolic links.
option: "safe: BOOL"
flag: --safe
- name: Disable Disk Cache
version-badge: 4.1.0
description: >-
Disable caching of content to disk in order to skip creating a <code>.jekyll-cache</code> or similar directory at
the source to avoid interference with virtual environments and third-party directory watchers. Caching to disk is
always disabled in <code>safe</code> mode.
option: "disable_disk_cache: BOOL"
flag: --disable-disk-cache
- name: Ignore theme configuration
version-badge: 4.1.0
description: >-
Jekyll 4.0 started allowing themes to bundle a <code>_config.yml</code> to simplify theme-onboarding for new users.
In the unfortunate situation that importing a bundled theme configuration messes up the merged site-configuration,
the user can configure Jekyll to not import the theme-config entirely.
option: "ignore_theme_config: BOOL"
- name: Exclude
description: >-
Exclude directories and/or files from the conversion. These exclusions are relative to the site's source directory
and cannot be outside the source directory.
option: "exclude: [DIR, FILE, ...]"
- name: Include
description: >-
Force inclusion of directories and/or files in the conversion. <code>.htaccess</code> is a good example since
dotfiles are excluded by default.
option: "include: [DIR, FILE, ...]"
- name: Keep files
description: >-
When clobbering the site destination, keep the selected files. Useful for files that are not generated by jekyll;
e.g. files or assets that are generated by your build tool. The paths are relative to the <code>destination</code>.
option: "keep_files: [DIR, FILE, ...]"
- name: Time Zone
description: >-
Set the time zone for site generation. This sets the <code>TZ</code> environment variable, which Ruby uses to handle
time and date creation and manipulation. Any entry from the
<a href="https://en.wikipedia.org/wiki/Tz_database">IANA Time Zone Database</a>
is valid, e.g. <code>America/New_York</code>. A list of all available values can be found
<a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"> here</a>.
When serving on a local machine, the default time zone is set by your operating system. But when served on a remote
host/server, the default time zone depends on the server's setting or location.
option: "timezone: TIMEZONE"
- name: Encoding
description: >-
Set the encoding of files by name (only available for Ruby 1.9 or later). The default value is <code>utf-8</code>
starting in 2.0.0, and <code>nil</code> before 2.0.0, which will yield the Ruby default of <code>ASCII-8BIT</code>.
Available encodings can be shown by the command <code>ruby -e 'puts Encoding::list.join("\n")'</code>.
option: "encoding: ENCODING"

View File

@ -0,0 +1,71 @@
- name: Local Server Port
description: Listen on the given port.
option: "port: PORT"
flag: "-P, --port PORT"
- name: Local Server Hostname
description: Listen at the given hostname.
option: "host: HOSTNAME"
flag: "-H, --host HOSTNAME"
- name: Live Reload
description: Reload a page automatically on the browser when its content is edited.
option: "livereload: BOOL"
flag: "-l, --livereload"
- name: Live Reload Ignore
description: File glob patterns for LiveReload to ignore.
option: "livereload_ignore: [ GLOB1,... ]"
flag: "--livereload-ignore GLOB1[,GLOB2,...]"
- name: Live Reload Min/Max Delay
description: Minimum/Maximum delay before automatically reloading page.
options:
- "livereload_min_delay: SECONDS"
- "livereload_max_delay: SECONDS"
flags:
- "--livereload-min-delay SECONDS"
- "--livereload-max-delay SECONDS"
- name: Live Reload Port
description: Port for LiveReload to listen on.
flag: "--livereload-port PORT"
- name: Open URL
description: Open the site's URL in the browser.
option: "open_url: BOOL"
flag: "-o, --open-url"
- name: Detach
description: Detach the server from the terminal.
option: "detach: BOOL"
flag: "-B, --detach"
- name: Skips the initial site build
description: Skips the initial site build which occurs before the server is started.
option: "skip_initial_build: BOOL"
flag: "--skip-initial-build"
- name: Show Directory Listing
description: Show a directory listing instead of loading your index file.
option: "show_dir_listing: BOOL"
flag: "--show-dir-listing"
- name: X.509 (SSL) Private Key
description: "SSL Private Key, stored or symlinked in the site source."
flag: "--ssl-key"
- name: X.509 (SSL) Certificate
description: "SSL Public certificate, stored or symlinked in the site source."
flag: "--ssl-cert"

View File

@ -92,12 +92,8 @@ class="flag">flags</code> (specified on the command-line) that control them.
<p class="description">{{ setting.description }}</p>
</td>
<td class="align-center">
{% if setting.option %}
<p><code class="option">{{ setting.option }}</code></p>
{% endif %}
{% if setting.flag %}
<p><code class="flag">{{ setting.flag }}</code></p>
{% endif %}
{% if setting.option %}<p><code class="option">{{ setting.option }}</code></p>{% endif %}
{% if setting.flag %}<p><code class="flag">{{ setting.flag }}</code></p>{% endif %}
</td>
</tr>
{% endfor %}
@ -133,15 +129,19 @@ before your site is served.
</td>
<td class="align-center">
{% if setting.option %}
<p><code class="option">{{ setting.option }}</code></p>
{% elsif setting.options %}
<p>
{% for option in setting.option %}
{% for option in setting.options %}
<code class="option">{{ option }}</code><br>
{% endfor %}
</p>
{% endif %}
{% if setting.flag %}
<p><code class="flag">{{ setting.flag }}</code></p>
{% elsif setting.flags %}
<p>
{% for flag in setting.flag %}
{% for flag in setting.flags %}
<code class="flag">{{ flag }}</code><br>
{% endfor %}
</p>