From a559101180907a7219011fe947c1cd9429bdd4bc Mon Sep 17 00:00:00 2001 From: Darko Poljak Date: Wed, 17 Jun 2020 12:20:44 +0200 Subject: [PATCH] Update cdist beta docs --- .../beta/_sources/cdist-bootstrap.rst.txt | 2 +- .../manual/beta/_sources/cdist-cache.rst.txt | 2 +- .../beta/_sources/cdist-configuration.rst.txt | 2 +- .../beta/_sources/cdist-install.rst.txt | 6 +- .../beta/_sources/cdist-real-world.rst.txt | 4 +- .../beta/_sources/cdist-reference.rst.txt | 39 +- .../beta/_sources/cdist-upgrade.rst.txt | 6 +- .../manual/beta/_sources/cdist-why.rst.txt | 4 +- .../manual/beta/_sources/man1/cdist.rst.txt | 98 +- .../man7/cdist-type__clean_path.rst.txt | 10 +- .../cdist-type__ssh_authorized_keys.rst.txt | 9 + src/extra/manual/beta/_static/basic.css | 133 +- src/extra/manual/beta/_static/doctools.js | 24 +- .../beta/_static/documentation_options.js | 294 +- src/extra/manual/beta/_static/jquery-3.5.1.js | 10872 ++++++++++++++++ src/extra/manual/beta/_static/jquery.js | 6 +- .../manual/beta/_static/language_data.js | 297 + src/extra/manual/beta/_static/searchtools.js | 424 +- .../manual/beta/cdist-best-practice.html | 95 +- src/extra/manual/beta/cdist-bootstrap.html | 45 +- src/extra/manual/beta/cdist-cache.html | 137 +- .../manual/beta/cdist-configuration.html | 61 +- src/extra/manual/beta/cdist-explorer.html | 39 +- src/extra/manual/beta/cdist-features.html | 92 +- src/extra/manual/beta/cdist-hacker.html | 71 +- src/extra/manual/beta/cdist-install.html | 91 +- src/extra/manual/beta/cdist-integration.html | 37 +- src/extra/manual/beta/cdist-inventory.html | 47 +- src/extra/manual/beta/cdist-manifest.html | 83 +- src/extra/manual/beta/cdist-messaging.html | 49 +- src/extra/manual/beta/cdist-os.html | 55 +- .../manual/beta/cdist-parallelization.html | 37 +- src/extra/manual/beta/cdist-preos.html | 134 +- src/extra/manual/beta/cdist-quickstart.html | 35 +- src/extra/manual/beta/cdist-real-world.html | 149 +- src/extra/manual/beta/cdist-reference.html | 821 +- .../manual/beta/cdist-remote-exec-copy.html | 33 +- .../beta/cdist-saving-output-streams.html | 33 +- src/extra/manual/beta/cdist-stages.html | 45 +- src/extra/manual/beta/cdist-support.html | 35 +- src/extra/manual/beta/cdist-trigger.html | 41 +- .../manual/beta/cdist-troubleshooting.html | 41 +- src/extra/manual/beta/cdist-type.html | 223 +- src/extra/manual/beta/cdist-types.html | 27 +- src/extra/manual/beta/cdist-upgrade.html | 147 +- src/extra/manual/beta/cdist-why.html | 51 +- src/extra/manual/beta/genindex.html | 23 +- src/extra/manual/beta/index.html | 23 +- src/extra/manual/beta/man1/cdist-dump.html | 121 +- .../manual/beta/man1/cdist-new-type.html | 73 +- src/extra/manual/beta/man1/cdist.html | 1034 +- .../manual/beta/man7/cdist-type__acl.html | 95 +- .../man7/cdist-type__apt_default_release.html | 52 +- .../manual/beta/man7/cdist-type__apt_key.html | 69 +- .../beta/man7/cdist-type__apt_key_uri.html | 63 +- .../beta/man7/cdist-type__apt_mark.html | 57 +- .../man7/cdist-type__apt_norecommends.html | 45 +- .../manual/beta/man7/cdist-type__apt_ppa.html | 53 +- .../beta/man7/cdist-type__apt_source.html | 79 +- .../cdist-type__apt_unattended_upgrades.html | 88 +- .../man7/cdist-type__apt_update_index.html | 45 +- .../manual/beta/man7/cdist-type__block.html | 93 +- .../man7/cdist-type__ccollect_source.html | 87 +- .../manual/beta/man7/cdist-type__cdist.html | 65 +- .../man7/cdist-type__cdist_preos_trigger.html | 51 +- .../beta/man7/cdist-type__cdistmarker.html | 59 +- .../beta/man7/cdist-type__check_messages.html | 53 +- .../beta/man7/cdist-type__chroot_mount.html | 55 +- .../beta/man7/cdist-type__chroot_umount.html | 57 +- .../beta/man7/cdist-type__clean_path.html | 77 +- .../beta/man7/cdist-type__config_file.html | 75 +- .../manual/beta/man7/cdist-type__consul.html | 73 +- .../beta/man7/cdist-type__consul_agent.html | 189 +- .../beta/man7/cdist-type__consul_check.html | 111 +- .../beta/man7/cdist-type__consul_reload.html | 45 +- .../beta/man7/cdist-type__consul_service.html | 87 +- .../man7/cdist-type__consul_template.html | 165 +- .../cdist-type__consul_template_template.html | 79 +- .../man7/cdist-type__consul_watch_checks.html | 75 +- .../man7/cdist-type__consul_watch_event.html | 71 +- .../man7/cdist-type__consul_watch_key.html | 71 +- .../cdist-type__consul_watch_keyprefix.html | 71 +- .../man7/cdist-type__consul_watch_nodes.html | 67 +- .../cdist-type__consul_watch_service.html | 83 +- .../cdist-type__consul_watch_services.html | 67 +- .../manual/beta/man7/cdist-type__cron.html | 101 +- .../beta/man7/cdist-type__daemontools.html | 65 +- .../man7/cdist-type__daemontools_service.html | 73 +- .../cdist-type__debconf_set_selections.html | 53 +- .../beta/man7/cdist-type__directory.html | 127 +- .../manual/beta/man7/cdist-type__docker.html | 59 +- .../beta/man7/cdist-type__docker_compose.html | 57 +- .../beta/man7/cdist-type__docker_config.html | 64 +- .../beta/man7/cdist-type__docker_secret.html | 64 +- .../beta/man7/cdist-type__docker_stack.html | 66 +- .../beta/man7/cdist-type__docker_swarm.html | 58 +- .../manual/beta/man7/cdist-type__dog_vdi.html | 56 +- .../beta/man7/cdist-type__dot_file.html | 67 +- .../beta/man7/cdist-type__file_old.html | 141 +- .../beta/man7/cdist-type__filesystem.html | 84 +- .../beta/man7/cdist-type__firewalld_rule.html | 77 +- .../man7/cdist-type__firewalld_start.html | 57 +- .../manual/beta/man7/cdist-type__git.html | 83 +- .../manual/beta/man7/cdist-type__go_get.html | 45 +- .../man7/cdist-type__golang_from_vendor.html | 51 +- .../man7/cdist-type__grafana_dashboard.html | 45 +- .../manual/beta/man7/cdist-type__group.html | 91 +- .../beta/man7/cdist-type__hostname.html | 61 +- .../manual/beta/man7/cdist-type__hosts.html | 63 +- .../cdist-type__install_bootloader_grub.html | 55 +- .../cdist-type__install_chroot_mount.html | 45 +- .../cdist-type__install_chroot_umount.html | 47 +- .../beta/man7/cdist-type__install_config.html | 51 +- .../beta/man7/cdist-type__install_coreos.html | 57 +- .../man7/cdist-type__install_directory.html | 106 +- .../beta/man7/cdist-type__install_file.html | 141 +- .../beta/man7/cdist-type__install_fstab.html | 55 +- .../cdist-type__install_generate_fstab.html | 61 +- .../beta/man7/cdist-type__install_mkfs.html | 67 +- .../beta/man7/cdist-type__install_mount.html | 75 +- .../cdist-type__install_partition_msdos.html | 75 +- ...t-type__install_partition_msdos_apply.html | 47 +- .../beta/man7/cdist-type__install_reboot.html | 45 +- .../man7/cdist-type__install_reset_disk.html | 45 +- .../beta/man7/cdist-type__install_stage.html | 67 +- .../beta/man7/cdist-type__install_umount.html | 51 +- .../beta/man7/cdist-type__iptables_apply.html | 45 +- .../beta/man7/cdist-type__iptables_rule.html | 61 +- .../manual/beta/man7/cdist-type__issue.html | 51 +- .../manual/beta/man7/cdist-type__jail.html | 133 +- .../beta/man7/cdist-type__jail_freebsd10.html | 133 +- .../beta/man7/cdist-type__jail_freebsd9.html | 133 +- .../beta/man7/cdist-type__key_value.html | 113 +- .../beta/man7/cdist-type__keyboard.html | 49 +- .../man7/cdist-type__letsencrypt_cert.html | 122 +- .../manual/beta/man7/cdist-type__line.html | 99 +- .../manual/beta/man7/cdist-type__link.html | 81 +- .../manual/beta/man7/cdist-type__locale.html | 51 +- .../beta/man7/cdist-type__locale_system.html | 59 +- .../manual/beta/man7/cdist-type__motd.html | 57 +- .../manual/beta/man7/cdist-type__mount.html | 89 +- .../beta/man7/cdist-type__mysql_database.html | 63 +- .../man7/cdist-type__mysql_privileges.html | 73 +- .../beta/man7/cdist-type__mysql_user.html | 61 +- .../man7/cdist-type__openldap_server.html | 185 +- .../manual/beta/man7/cdist-type__package.html | 69 +- .../beta/man7/cdist-type__package_apk.html | 57 +- .../beta/man7/cdist-type__package_apt.html | 79 +- .../beta/man7/cdist-type__package_dpkg.html | 93 +- .../beta/man7/cdist-type__package_emerge.html | 61 +- ...ist-type__package_emerge_dependencies.html | 51 +- .../man7/cdist-type__package_luarocks.html | 57 +- .../beta/man7/cdist-type__package_opkg.html | 57 +- .../beta/man7/cdist-type__package_pacman.html | 57 +- .../beta/man7/cdist-type__package_pip.html | 65 +- .../man7/cdist-type__package_pkg_freebsd.html | 69 +- .../man7/cdist-type__package_pkg_openbsd.html | 69 +- .../cdist-type__package_pkgng_freebsd.html | 99 +- .../man7/cdist-type__package_rubygem.html | 57 +- .../cdist-type__package_update_index.html | 69 +- .../man7/cdist-type__package_upgrade_all.html | 65 +- .../beta/man7/cdist-type__package_yum.html | 61 +- .../beta/man7/cdist-type__package_zypper.html | 67 +- .../beta/man7/cdist-type__pacman_conf.html | 74 +- .../cdist-type__pacman_conf_integrate.html | 53 +- .../beta/man7/cdist-type__pf_apply.html | 47 +- .../man7/cdist-type__pf_apply_anchor.html | 53 +- .../beta/man7/cdist-type__pf_ruleset.html | 61 +- .../manual/beta/man7/cdist-type__ping.html | 45 +- .../manual/beta/man7/cdist-type__postfix.html | 45 +- .../beta/man7/cdist-type__postfix_master.html | 83 +- .../man7/cdist-type__postfix_postconf.html | 59 +- .../man7/cdist-type__postfix_postmap.html | 45 +- .../beta/man7/cdist-type__postfix_reload.html | 45 +- .../man7/cdist-type__postgres_database.html | 71 +- .../man7/cdist-type__postgres_extension.html | 55 +- .../beta/man7/cdist-type__postgres_role.html | 53 +- .../manual/beta/man7/cdist-type__process.html | 76 +- .../cdist-type__prometheus_alertmanager.html | 71 +- .../man7/cdist-type__prometheus_exporter.html | 69 +- .../man7/cdist-type__prometheus_server.html | 75 +- .../manual/beta/man7/cdist-type__pyvenv.html | 71 +- .../beta/man7/cdist-type__qemu_img.html | 56 +- .../manual/beta/man7/cdist-type__rbenv.html | 53 +- .../manual/beta/man7/cdist-type__rsync.html | 89 +- .../manual/beta/man7/cdist-type__rvm.html | 51 +- .../manual/beta/man7/cdist-type__rvm_gem.html | 67 +- .../beta/man7/cdist-type__rvm_gemset.html | 63 +- .../beta/man7/cdist-type__rvm_ruby.html | 63 +- .../man7/cdist-type__sensible_editor.html | 95 +- .../manual/beta/man7/cdist-type__service.html | 53 +- .../man7/cdist-type__ssh_authorized_key.html | 87 +- .../man7/cdist-type__ssh_authorized_keys.html | 103 +- .../beta/man7/cdist-type__ssh_dot_ssh.html | 51 +- .../beta/man7/cdist-type__staged_file.html | 100 +- .../beta/man7/cdist-type__start_on_boot.html | 57 +- .../manual/beta/man7/cdist-type__sysctl.html | 49 +- .../man7/cdist-type__systemd_service.html | 109 +- .../beta/man7/cdist-type__systemd_unit.html | 99 +- .../beta/man7/cdist-type__timezone.html | 45 +- .../manual/beta/man7/cdist-type__ufw.html | 67 +- .../beta/man7/cdist-type__ufw_rule.html | 55 +- .../man7/cdist-type__update_alternatives.html | 51 +- .../manual/beta/man7/cdist-type__user.html | 113 +- .../beta/man7/cdist-type__user_groups.html | 63 +- .../beta/man7/cdist-type__xymon_apache.html | 91 +- .../beta/man7/cdist-type__xymon_client.html | 69 +- .../beta/man7/cdist-type__xymon_config.html | 75 +- .../beta/man7/cdist-type__xymon_server.html | 65 +- .../beta/man7/cdist-type__yum_repo.html | 75 +- .../beta/man7/cdist-type__zypper_repo.html | 72 +- .../beta/man7/cdist-type__zypper_service.html | 77 +- src/extra/manual/beta/objects.inv | Bin 2820 -> 2831 bytes src/extra/manual/beta/search.html | 25 +- src/extra/manual/beta/searchindex.js | 2 +- 215 files changed, 18452 insertions(+), 9379 deletions(-) create mode 100644 src/extra/manual/beta/_static/jquery-3.5.1.js create mode 100644 src/extra/manual/beta/_static/language_data.js diff --git a/src/extra/manual/beta/_sources/cdist-bootstrap.rst.txt b/src/extra/manual/beta/_sources/cdist-bootstrap.rst.txt index c9972a99..10f86c5a 100644 --- a/src/extra/manual/beta/_sources/cdist-bootstrap.rst.txt +++ b/src/extra/manual/beta/_sources/cdist-bootstrap.rst.txt @@ -25,7 +25,7 @@ people, have a look at `cdist best practice `_. Setup working directory and branch ---------------------------------- I assume you have a fresh copy of the cdist tree in ~/cdist, cloned from -one of the official urls (see `cdist quickstart `_ if you don't). +one of the official URLs (see `cdist quickstart `_ if you don't). Entering the command "git branch" should show you "* master", which indicates you are on the **master** branch. diff --git a/src/extra/manual/beta/_sources/cdist-cache.rst.txt b/src/extra/manual/beta/_sources/cdist-cache.rst.txt index 0e5361ee..d2d2d56c 100644 --- a/src/extra/manual/beta/_sources/cdist-cache.rst.txt +++ b/src/extra/manual/beta/_sources/cdist-cache.rst.txt @@ -59,7 +59,7 @@ typeorder Object cache overview ~~~~~~~~~~~~~~~~~~~~~ -Each object under :strong:`object` directory has its own structurue. +Each object under :strong:`object` directory has its own structure. code-local code generated from gencode-local, present only if something is diff --git a/src/extra/manual/beta/_sources/cdist-configuration.rst.txt b/src/extra/manual/beta/_sources/cdist-configuration.rst.txt index 706ed761..a2024584 100644 --- a/src/extra/manual/beta/_sources/cdist-configuration.rst.txt +++ b/src/extra/manual/beta/_sources/cdist-configuration.rst.txt @@ -21,7 +21,7 @@ precedence. Configuration option value read from source with higher precedence will overwrite option value, if exists, read from source with lower precedence. That means that command-line option wins them all. -Users can decide on the local conifguration file location. It can be either +Users can decide on the local configuration file location. It can be either ~/.cdist.cfg or $XDG_CONFIG_HOME/cdist/cdist.cfg. Note that, if both exist, then ~/.cdist.cfg is used. diff --git a/src/extra/manual/beta/_sources/cdist-install.rst.txt b/src/extra/manual/beta/_sources/cdist-install.rst.txt index 880b9f8e..6f4f14d7 100644 --- a/src/extra/manual/beta/_sources/cdist-install.rst.txt +++ b/src/extra/manual/beta/_sources/cdist-install.rst.txt @@ -9,15 +9,15 @@ Source Host This is the machine from which you will configure target hosts. - * /bin/sh: A posix like shell (for instance bash, dash, zsh) - * Python >= 3.2 + * /bin/sh: A POSIX like shell (for instance bash, dash, zsh) + * Python >= 3.5 * SSH client * sphinx (for building html docs and/or the man pages) Target Hosts ~~~~~~~~~~~~ - * /bin/sh: A posix like shell (for instance bash, dash, zsh) + * /bin/sh: A POSIX like shell (for instance bash, dash, zsh) * SSH server Install cdist diff --git a/src/extra/manual/beta/_sources/cdist-real-world.rst.txt b/src/extra/manual/beta/_sources/cdist-real-world.rst.txt index ba118d63..973dcd6d 100644 --- a/src/extra/manual/beta/_sources/cdist-real-world.rst.txt +++ b/src/extra/manual/beta/_sources/cdist-real-world.rst.txt @@ -198,7 +198,7 @@ We require package uWSGI present in order to create **/etc/uwsgi/apps-enabled/$u Installation of uWSGI also creates configuration layout: **/etc/uwsgi/apps-enabled**. If this directory does not exist then **__file** type would error. We also use stdin as file content source. For details see `Input from stdin `_. -For feading stdin we use here-document (**<<** operator). It allows redirection of subsequent +For feeding stdin we use here-document (**<<** operator). It allows redirection of subsequent lines read by the shell to the input of a command until a line containing only the delimiter and a newline, with no blank characters in between (EOF in our case). @@ -546,7 +546,7 @@ we have changed our **wsgi.py** file uWSGI reloads the application. Our application selects and lists items from **items** table. -Openning application +Opening application ~~~~~~~~~~~~~~~~~~~~ Finally try the application:: diff --git a/src/extra/manual/beta/_sources/cdist-reference.rst.txt b/src/extra/manual/beta/_sources/cdist-reference.rst.txt index fb4a828e..e68a7548 100644 --- a/src/extra/manual/beta/_sources/cdist-reference.rst.txt +++ b/src/extra/manual/beta/_sources/cdist-reference.rst.txt @@ -306,13 +306,13 @@ usable within a object directory: files This directory is reserved for user data and will not be used - by cdist at any time. It can be used freely by the type + by cdist at any time. It can be used freely by the type (for instance to store template results). changed This empty file exists in an object directory, if the object has code to be executed (either remote or local). stdin - This file exists and contains data, if data was provided on stdin + This file exists and contains data, if data was provided on stdin when the type was called. @@ -341,65 +341,89 @@ __cdist_log_level, __cdist_log_level_name | TRACE | 5 | +----------------+-----------------+ + Available for: initial manifest, explorer, type manifest, type explorer, + type gencode. +__cdist_colored_log + whether or not cdist's log has colors enabled. + Is set to the string true if cdist's output is using colors, + otherwise the variable contains the string false. + Available for: initial manifest, explorer, type manifest, type explorer, type gencode. __cdist_dry_run Is set only when doing dry run (-n flag). + Available for: initial manifest, explorer, type manifest, type explorer, type gencode. __explorer Directory that contains all global explorers. + Available for: initial manifest, explorer, type explorer, shell. __files Directory that contains content from the "files" subdirectories from the configuration directories. + Available for: initial manifest, type manifest, type gencode, shell. __manifest Directory that contains the initial manifest. + Available for: initial manifest, type manifest, shell. __global Directory that contains generic output like explorer. + Available for: initial manifest, type manifest, type gencode, shell. __messages_in File to read messages from. + Available for: initial manifest, type manifest, type gencode. __messages_out File to write messages. + Available for: initial manifest, type manifest, type gencode. __object Directory that contains the current object. + Available for: type manifest, type explorer, type gencode and code scripts. __object_id The type unique object id. + Available for: type manifest, type explorer, type gencode and code scripts. - Note: The leading and the trailing "/" will always be stripped (caused by - the filesystem database and ensured by the core). - Note: Double slashes ("//") will not be fixed and result in an error. + + | Note: The leading and the trailing "/" will always be stripped (caused by + the filesystem database and ensured by the core). + | Note: Double slashes ("//") will not be fixed and result in an error. __object_name The full qualified name of the current object. + Available for: type manifest, type explorer, type gencode. __target_host The host we are deploying to. This is primary variable. It's content is literally the one user passed in. + Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell. __target_hostname The hostname of host we are deploying to. This variable is derived from **__target_host** (using **socket.getaddrinfo(__target_host)** and then **socket.gethostbyaddr()**). + Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell. __target_fqdn The fully qualified domain name of the host we are deploying to. This variable is derived from **__target_host** (using **socket.getfqdn()**). + Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell. __target_host_tags Comma separated list of target host tags. + Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell. __type Path to the current type. + Available for: type manifest, type gencode. __type_explorer Directory that contains the type explorers. + Available for: type explorer. Environment variables (for writing) @@ -463,5 +487,10 @@ CDIST_INVENTORY_DIR CDIST_BETA Enable beta functionalities. +CDIST_COLORED_OUTPUT + Colorize cdist's output. If enabled, cdist will use different colors for + different log levels. + Recognized values are 'always', 'never', and 'auto' (the default). + CDIST_CACHE_PATH_PATTERN Custom cache path pattern. diff --git a/src/extra/manual/beta/_sources/cdist-upgrade.rst.txt b/src/extra/manual/beta/_sources/cdist-upgrade.rst.txt index 67fd4934..f745b212 100644 --- a/src/extra/manual/beta/_sources/cdist-upgrade.rst.txt +++ b/src/extra/manual/beta/_sources/cdist-upgrade.rst.txt @@ -14,7 +14,7 @@ To upgrade cdist in the current branch use make man export MANPATH=$MANPATH:$(pwd -P)/doc/man -If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break. +If you stay on a version branch (i.e. 1.0, 1.1., ...), nothing should break. The master branch on the other hand is the development branch and may not be working, break your setup or eat the tree in your garden. @@ -61,7 +61,7 @@ After that, you can go back and continue the upgrade: Update the python package ------------------------- -To upgrade to the lastet version do +To upgrade to the latest version do .. code-block:: sh @@ -158,7 +158,7 @@ Updating from 1.5 to 1.6 * If you used **\_\_package_apt --preseed**, you need to use the new type **\_\_debconf_set_selections** instead. * The **\_\_package** types accepted either --state deinstalled or - --state uninstaaled. Starting with 1.6, it was made consistently + --state uninstalled. Starting with 1.6, it was made consistently to --state removed. Updating from 1.3 to 1.5 diff --git a/src/extra/manual/beta/_sources/cdist-why.rst.txt b/src/extra/manual/beta/_sources/cdist-why.rst.txt index 1123a1de..0e2cd34d 100644 --- a/src/extra/manual/beta/_sources/cdist-why.rst.txt +++ b/src/extra/manual/beta/_sources/cdist-why.rst.txt @@ -21,7 +21,7 @@ Not only is shell scripting widely known by system engineers, but it is also a very powerful language. Here are some features which make daily work easy: - * Configuration can react dynamicly on explored values + * Configuration can react dynamically on explored values * High level string manipulation (using sed, awk, grep) * Conditional support (**if, case**) * Loop support (**for, while**) @@ -44,7 +44,7 @@ Cdist requires very little on a target system. Even better, in almost all cases all dependencies are usually fulfilled. Cdist does not require an agent or high level programming languages on the target host: it will run on any host that -has a **ssh server running** and a posix compatible shell +has a **ssh server running** and a POSIX compatible shell (**/bin/sh**). Compared to other configuration management systems, it does not require to open up an additional port. diff --git a/src/extra/manual/beta/_sources/man1/cdist.rst.txt b/src/extra/manual/beta/_sources/man1/cdist.rst.txt index 01e25c4e..dd522041 100644 --- a/src/extra/manual/beta/_sources/man1/cdist.rst.txt +++ b/src/extra/manual/beta/_sources/man1/cdist.rst.txt @@ -15,52 +15,51 @@ SYNOPSIS cdist banner [-h] [-l LOGLEVEL] [-q] [-v] - cdist config [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-g CONFIG_FILE] [-4] - [-6] [-C CACHE_PATH_PATTERN] [-c CONF_DIR] [-i MANIFEST] - [-j [JOBS]] [-n] [-o OUT_PATH] [-P] - [-R [{tar,tgz,tbz2,txz}]] [-r REMOTE_OUT_PATH] - [--remote-copy REMOTE_COPY] [--remote-exec REMOTE_EXEC] - [-S] [-I INVENTORY_DIR] [-A] [-a] [-f HOSTFILE] - [-p [HOST_MAX]] [-s] [-t] + cdist config [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN] + [-g CONFIG_FILE] [-4] [-6] [-C CACHE_PATH_PATTERN] + [-c CONF_DIR] [-i MANIFEST] [-j [JOBS]] [--log-server] + [-n] [-o OUT_PATH] [-P] [-R [{tar,tgz,tbz2,txz}]] + [-r REMOTE_OUT_PATH] [--remote-copy REMOTE_COPY] + [--remote-exec REMOTE_EXEC] [-S] [-I INVENTORY_DIR] [-A] + [-a] [-f HOSTFILE] [-p [HOST_MAX]] [-s] [-t] [host [host ...]] - cdist install [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-g CONFIG_FILE] [-4] - [-6] [-C CACHE_PATH_PATTERN] [-c CONF_DIR] [-i MANIFEST] - [-j [JOBS]] [-n] [-o OUT_PATH] [-P] - [-R [{tar,tgz,tbz2,txz}]] [-r REMOTE_OUT_PATH] - [--remote-copy REMOTE_COPY] [--remote-exec REMOTE_EXEC] - [-S] [-I INVENTORY_DIR] [-A] [-a] [-f HOSTFILE] - [-p [HOST_MAX]] [-s] [-t] + cdist install [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN] + [-g CONFIG_FILE] [-4] [-6] [-C CACHE_PATH_PATTERN] + [-c CONF_DIR] [-i MANIFEST] [-j [JOBS]] [--log-server] + [-n] [-o OUT_PATH] [-P] [-R [{tar,tgz,tbz2,txz}]] + [-r REMOTE_OUT_PATH] [--remote-copy REMOTE_COPY] + [--remote-exec REMOTE_EXEC] [-S] [-I INVENTORY_DIR] [-A] + [-a] [-f HOSTFILE] [-p [HOST_MAX]] [-s] [-t] [host [host ...]] cdist inventory [-h] {add-host,add-tag,del-host,del-tag,list} ... - cdist inventory add-host [-h] [-l LOGLEVEL] [-q] [-v] [-b] - [-g CONFIG_FILE] [-I INVENTORY_DIR] - [-f HOSTFILE] + cdist inventory add-host [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN] + [-g CONFIG_FILE] [-I INVENTORY_DIR] [-f HOSTFILE] [host [host ...]] - cdist inventory add-tag [-h] [-l LOGLEVEL] [-q] [-v] [-b] - [-g CONFIG_FILE] [-I INVENTORY_DIR] - [-f HOSTFILE] [-T TAGFILE] [-t TAGLIST] + cdist inventory add-tag [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN] + [-g CONFIG_FILE] [-I INVENTORY_DIR] [-f HOSTFILE] + [-T TAGFILE] [-t TAGLIST] [host [host ...]] - cdist inventory del-host [-h] [-l LOGLEVEL] [-q] [-v] [-b] + cdist inventory del-host [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN] [-g CONFIG_FILE] [-I INVENTORY_DIR] [-a] [-f HOSTFILE] [host [host ...]] - cdist inventory del-tag [-h] [-l LOGLEVEL] [-q] [-v] [-b] + cdist inventory del-tag [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN] [-g CONFIG_FILE] [-I INVENTORY_DIR] [-a] [-f HOSTFILE] [-T TAGFILE] [-t TAGLIST] [host [host ...]] - cdist inventory list [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-g CONFIG_FILE] - [-I INVENTORY_DIR] [-a] [-f HOSTFILE] [-H] [-t] + cdist inventory list [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN] + [-g CONFIG_FILE] [-I INVENTORY_DIR] [-a] [-f HOSTFILE] + [-H] [-t] [host [host ...]] - cdist preos [-h] [-l LOGLEVEL] [-q] [-v] [-c CONF_DIR] [-g CONFIG_FILE] - [-L] + cdist preos [-h] [-l LOGLEVEL] [-q] [-v] [-c CONF_DIR] [-g CONFIG_FILE] [-L] [preos] ... cdist preos [preos-options] debian [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-a ARCH] [-B] @@ -87,9 +86,10 @@ SYNOPSIS [-y REMOTE_COPY] target_dir - cdist shell [-h] [-l LOGLEVEL] [-q] [-v] [-s SHELL] + cdist shell [-h] [-l LOGLEVEL] [-q] [-v] [--colors WHEN] [-s SHELL] - cdist info [-h] [-a] [-c CONF_DIR] [-e] [-F] [-f] [-g CONFIG_FILE] [-t] [pattern] + cdist info [-h] [-a] [-c CONF_DIR] [-e] [-F] [-f] [-g CONFIG_FILE] [-t] + [pattern] cdist trigger [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-g CONFIG_FILE] [-4] [-6] [-C CACHE_PATH_PATTERN] [-c CONF_DIR] [-i MANIFEST] @@ -105,7 +105,7 @@ cdist is the frontend executable to the cdist configuration management. It supports different subcommands as explained below. It is written in Python so it requires :strong:`python`\ (1) to be installed. -It requires a minimal Python version 3.2. +It requires a minimal Python version 3.5. GENERAL ------- @@ -114,6 +114,14 @@ All commands accept the following options: **-h, --help** Show the help screen. +**--colors WHEN** + Colorize cdist's output. If enabled, cdist will use different colors for + different log levels. + WHEN recognizes the values 'always', 'never', and 'auto' (the default). + + If the value is 'auto', colored output is enabled if stdout is a TTY + unless the NO_COLOR (https://no-color.org/) environment variable is defined. + **-l LOGLEVEL, --log-level LOGLEVEL** Set the specified verbosity level. The levels, in order from the lowest to the highest, are: ERROR (-1), @@ -166,7 +174,7 @@ Install command is currently in beta. **-b, --beta** Enable beta functionality. - + **-C CACHE_PATH_PATTERN, --cache-path-pattern CACHE_PATH_PATTERN** Specify custom cache path pattern. If it is not set then default hostdir is used. For more info on format see @@ -189,7 +197,7 @@ Install command is currently in beta. **-I INVENTORY_DIR, --inventory INVENTORY_DIR** Use specified custom inventory directory. Inventory - directory is set up by the following rules: if cdist + directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution @@ -204,6 +212,12 @@ Install command is currently in beta. are supported. Without argument CPU count is used by default. +**--log-server** + Start a log server for sub processes to use. This is + mainly useful when running cdist nested from a code- + local script. Log server is always implicitly started + for 'install' command. + **-n, --dry-run** Do not execute code. @@ -304,7 +318,7 @@ Add host(s) to inventory database. **-I INVENTORY_DIR, --inventory INVENTORY_DIR** Use specified custom inventory directory. Inventory - directory is set up by the following rules: if cdist + directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution @@ -334,7 +348,7 @@ Add tag(s) to inventory database. **-I INVENTORY_DIR, --inventory INVENTORY_DIR** Use specified custom inventory directory. Inventory - directory is set up by the following rules: if cdist + directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution @@ -377,7 +391,7 @@ Delete host(s) from inventory database. **-I INVENTORY_DIR, --inventory INVENTORY_DIR** Use specified custom inventory directory. Inventory - directory is set up by the following rules: if cdist + directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution @@ -411,7 +425,7 @@ Delete tag(s) from inventory database. **-I INVENTORY_DIR, --inventory INVENTORY_DIR** Use specified custom inventory directory. Inventory - directory is set up by the following rules: if cdist + directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution @@ -458,7 +472,7 @@ List inventory database. **-I INVENTORY_DIR, --inventory INVENTORY_DIR** Use specified custom inventory directory. Inventory - directory is set up by the following rules: if cdist + directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution @@ -780,6 +794,9 @@ The possible keywords and their meanings are as follows: :strong:`cache_path_pattern` Specify cache path pattern. +:strong:`colored_output` + Colorize cdist's output. cf. the :code:`--colors` option. + :strong:`conf_dir` List of configuration directories separated with the character conventionally used by the operating system to separate search path components (as in PATH), @@ -833,7 +850,7 @@ The possible keywords and their meanings are as follows: in the format: YYYYMMDDHHMMSS.us. :strong:`verbosity` - Set verbosity level. Valid values are: + Set verbosity level. Valid values are: 'ERROR', 'WARNING', 'INFO', 'VERBOSE', 'DEBUG', 'TRACE' and 'OFF'. @@ -865,7 +882,7 @@ cdist/preos NOTES ----- cdist detects if host is specified by IPv6 address. If so then remote_copy -command is executed with host address enclosed in square brackets +command is executed with host address enclosed in square brackets (see :strong:`scp`\ (1)). EXAMPLES @@ -1008,6 +1025,9 @@ CDIST_BETA CDIST_CACHE_PATH_PATTERN Custom cache path pattern. +CDIST_COLORED_OUTPUT + Colorize cdist's output. cf. the :code:`--colors` option. + CDIST_CONFIG_FILE Custom configuration file. @@ -1070,5 +1090,5 @@ such case and display a warning message. An example of such a case: COPYING ------- -Copyright \(C) 2011-2019 Nico Schottelius. Free use of this software is +Copyright \(C) 2011-2020 Nico Schottelius. Free use of this software is granted under the terms of the GNU General Public License v3 or later (GPLv3+). diff --git a/src/extra/manual/beta/_sources/man7/cdist-type__clean_path.rst.txt b/src/extra/manual/beta/_sources/man7/cdist-type__clean_path.rst.txt index 826f4589..31d90701 100644 --- a/src/extra/manual/beta/_sources/man7/cdist-type__clean_path.rst.txt +++ b/src/extra/manual/beta/_sources/man7/cdist-type__clean_path.rst.txt @@ -10,7 +10,7 @@ DESCRIPTION ----------- Remove files and directories which match the pattern. -Provided path (as __object_id) must be a directory. +Provided path must be a directory. Patterns are passed to ``find``'s ``-regex`` - see ``find(1)`` for more details. @@ -29,6 +29,9 @@ pattern OPTIONAL PARAMETERS ------------------- +path + Path which will be cleaned. Defaults to ``$__object_id``. + exclude Pattern of files which are excluded from removal. @@ -46,6 +49,11 @@ EXAMPLES --exclude '.+\(charset\.conf\|security\.conf\)' \ --onchange 'service apache2 restart' + __clean_path apache2-conf-enabled \ + --path /etc/apache2/conf-enabled \ + --pattern '.+' \ + --exclude '.+\(charset\.conf\|security\.conf\)' \ + --onchange 'service apache2 restart' AUTHORS ------- diff --git a/src/extra/manual/beta/_sources/man7/cdist-type__ssh_authorized_keys.rst.txt b/src/extra/manual/beta/_sources/man7/cdist-type__ssh_authorized_keys.rst.txt index 93357b1d..dac6adeb 100644 --- a/src/extra/manual/beta/_sources/man7/cdist-type__ssh_authorized_keys.rst.txt +++ b/src/extra/manual/beta/_sources/man7/cdist-type__ssh_authorized_keys.rst.txt @@ -60,6 +60,9 @@ nofile Don't manage existence, ownership and permissions of the the authorized_keys file. +remove-unknown + Remove undefined keys. + EXAMPLES -------- @@ -70,6 +73,12 @@ EXAMPLES __ssh_authorized_keys root \ --key "$(cat ~/.ssh/id_rsa.pub)" + # same as above, but make sure your key is only key in + # root's authorized_keys file + __ssh_authorized_keys root \ + --key "$(cat ~/.ssh/id_rsa.pub)" \ + --remove-unknown + # allow key to login as user-name __ssh_authorized_keys user-name \ --key "ssh-rsa AXYZAAB3NzaC1yc2..." diff --git a/src/extra/manual/beta/_static/basic.css b/src/extra/manual/beta/_static/basic.css index 3c7223b1..01192852 100644 --- a/src/extra/manual/beta/_static/basic.css +++ b/src/extra/manual/beta/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -81,10 +81,26 @@ div.sphinxsidebar input { font-size: 1em; } -div.sphinxsidebar #searchbox input[type="text"] { - width: 170px; +div.sphinxsidebar #searchbox form.search { + overflow: hidden; } +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + img { border: 0; max-width: 100%; @@ -199,6 +215,11 @@ table.modindextable td { /* -- general body styles --------------------------------------------------- */ +div.body { + min-width: 450px; + max-width: 800px; +} + div.body p, div.body dd, div.body li, div.body blockquote { -moz-hyphens: auto; -ms-hyphens: auto; @@ -210,6 +231,16 @@ a.headerlink { visibility: hidden; } +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, @@ -258,6 +289,12 @@ img.align-center, .figure.align-center, object.align-center { margin-right: auto; } +img.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + .align-left { text-align: left; } @@ -266,6 +303,10 @@ img.align-center, .figure.align-center, object.align-center { text-align: center; } +.align-default { + text-align: center; +} + .align-right { text-align: right; } @@ -332,6 +373,16 @@ table.docutils { border-collapse: collapse; } +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + table caption span.caption-number { font-style: italic; } @@ -365,6 +416,16 @@ table.citation td { border-bottom: none; } +th > p:first-child, +td > p:first-child { + margin-top: 0px; +} + +th > p:last-child, +td > p:last-child { + margin-bottom: 0px; +} + /* -- figures --------------------------------------------------------------- */ div.figure { @@ -405,6 +466,13 @@ table.field-list td, table.field-list th { hyphens: manual; } +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist td { + vertical-align: top; +} + + /* -- other body styles ----------------------------------------------------- */ ol.arabic { @@ -427,11 +495,58 @@ ol.upperroman { list-style: upper-roman; } +li > p:first-child { + margin-top: 0px; +} + +li > p:last-child { + margin-bottom: 0px; +} + +dl.footnote > dt, +dl.citation > dt { + float: left; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + dl { margin-bottom: 15px; } -dd p { +dd > p:first-child { margin-top: 0px; } @@ -504,6 +619,12 @@ dl.glossary dt { font-style: oblique; } +.classifier:before { + font-style: normal; + margin: 0.5em; + content: ":"; +} + abbr, acronym { border-bottom: dotted 1px; cursor: help; @@ -551,6 +672,10 @@ div.code-block-caption + div > div.highlight > pre { margin-top: 0; } +div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; +} + div.code-block-caption span.caption-number { padding: 0.1em 0.3em; font-style: italic; diff --git a/src/extra/manual/beta/_static/doctools.js b/src/extra/manual/beta/_static/doctools.js index 24992e64..daccd209 100644 --- a/src/extra/manual/beta/_static/doctools.js +++ b/src/extra/manual/beta/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -70,7 +70,9 @@ jQuery.fn.highlightText = function(text, className) { if (node.nodeType === 3) { var val = node.nodeValue; var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { var span; var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); if (isInSVG) { @@ -85,14 +87,13 @@ jQuery.fn.highlightText = function(text, className) { node.nextSibling)); node.nodeValue = val.substr(0, pos); if (isInSVG) { - var bbox = span.getBBox(); var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - rect.x.baseVal.value = bbox.x; + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; rect.y.baseVal.value = bbox.y; rect.width.baseVal.value = bbox.width; rect.height.baseVal.value = bbox.height; rect.setAttribute('class', className); - var parentOfText = node.parentNode.parentNode; addItems.push({ "parent": node.parentNode, "target": rect}); @@ -148,7 +149,9 @@ var Documentation = { this.fixFirefoxAnchorBug(); this.highlightSearchWords(); this.initIndexTable(); - + if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { + this.initOnKeyListeners(); + } }, /** @@ -204,7 +207,7 @@ var Documentation = { * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 */ fixFirefoxAnchorBug : function() { - if (document.location.hash) + if (document.location.hash && $.browser.mozilla) window.setTimeout(function() { document.location.href += ''; }, 10); @@ -280,10 +283,11 @@ var Documentation = { }, initOnKeyListeners: function() { - $(document).keyup(function(event) { + $(document).keydown(function(event) { var activeElementType = document.activeElement.tagName; // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' + && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) { switch (event.keyCode) { case 37: // left var prevHref = $('link[rel="prev"]').prop('href'); @@ -308,4 +312,4 @@ _ = Documentation.gettext; $(document).ready(function() { Documentation.init(); -}); \ No newline at end of file +}); diff --git a/src/extra/manual/beta/_static/documentation_options.js b/src/extra/manual/beta/_static/documentation_options.js index 8080996e..a1d28a53 100644 --- a/src/extra/manual/beta/_static/documentation_options.js +++ b/src/extra/manual/beta/_static/documentation_options.js @@ -1,296 +1,12 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '5.0.1', + VERSION: '6.6.0', LANGUAGE: 'None', COLLAPSE_INDEX: false, + BUILDER: 'html', FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false, - SEARCH_LANGUAGE_STOP_WORDS: ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"] -}; - - - -/* Non-minified version JS is _stemmer.js if file is provided */ -/** - * Porter Stemmer - */ -var Stemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - - - - - -var splitChars = (function() { - var result = {}; - var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, - 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, - 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, - 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, - 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, - 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, - 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, - 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, - 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, - 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; - var i, j, start, end; - for (i = 0; i < singles.length; i++) { - result[singles[i]] = true; - } - var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], - [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], - [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], - [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], - [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], - [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], - [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], - [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], - [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], - [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], - [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], - [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], - [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], - [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], - [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], - [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], - [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], - [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], - [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], - [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], - [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], - [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], - [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], - [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], - [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], - [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], - [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], - [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], - [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], - [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], - [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], - [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], - [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], - [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], - [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], - [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], - [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], - [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], - [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], - [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], - [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], - [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], - [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], - [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], - [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], - [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], - [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], - [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], - [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; - for (i = 0; i < ranges.length; i++) { - start = ranges[i][0]; - end = ranges[i][1]; - for (j = start; j <= end; j++) { - result[j] = true; - } - } - return result; -})(); - -function splitQuery(query) { - var result = []; - var start = -1; - for (var i = 0; i < query.length; i++) { - if (splitChars[query.charCodeAt(i)]) { - if (start !== -1) { - result.push(query.slice(start, i)); - start = -1; - } - } else if (start === -1) { - start = i; - } - } - if (start !== -1) { - result.push(query.slice(start)); - } - return result; -} - - + NAVIGATION_WITH_KEYS: false +}; \ No newline at end of file diff --git a/src/extra/manual/beta/_static/jquery-3.5.1.js b/src/extra/manual/beta/_static/jquery-3.5.1.js new file mode 100644 index 00000000..50937333 --- /dev/null +++ b/src/extra/manual/beta/_static/jquery-3.5.1.js @@ -0,0 +1,10872 @@ +/*! + * jQuery JavaScript Library v3.5.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2020-05-04T22:49Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.5.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.5 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2020-03-14 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem.namespaceURI, + docElem = ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px"; + tr.style.height = "1px"; + trChild.style.height = "9px"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( + dataPriv.get( cur, "events" ) || Object.create( null ) + )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script + if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " - - - - + + + + + @@ -72,7 +63,7 @@
- 6.5.6 + 6.6.0
@@ -189,7 +180,7 @@
  • Docs »
  • -
  • 25. Best practice
  • +
  • 25. Best practice
  • @@ -209,17 +200,17 @@
    -

    25. Best practice

    +

    25. Best practice

    Practices used in real environments

    -

    25.1. Passwordless connections

    +

    25.1. Passwordless connections

    It is recommended to run cdist with public key authentication. This requires a private/public key pair and the entry "PermitRootLogin without-password" in the sshd server. See sshd_config(5) and ssh-keygen(1).

    -

    25.2. Speeding up ssh connections

    +

    25.2. Speeding up ssh connections

    When connecting to a new host, the initial delay with ssh connections is pretty big. As cdist makes many connections to each host successive connections can be sped up by "sharing of multiple sessions over a single @@ -233,21 +224,21 @@ parallel multiplexed connections this with MaxSessions N (N default for OpenSSH v7.4).

    -

    25.3. Speeding up shell execution

    +

    25.3. Speeding up shell execution

    On the source host, ensure that /bin/sh is not bash: bash is quite slow for script execution. Instead, you could use dash after installing it:

    -
    ln -sf /bin/dash /bin/sh
    +
    ln -sf /bin/dash /bin/sh
     
    -

    25.4. Multi master or environment setups

    +

    25.4. Multi master or environment setups

    If you plan to distribute cdist among servers or use different environments, you can do so easily with the included version control git. For instance if you plan to use the typical three environments production, integration and development, you can realise this with git branches:

    -
    # Go to cdist checkout
    +
    # Go to cdist checkout
     cd /path/to/cdist
     
     # Create branches
    @@ -261,18 +252,18 @@ realise this with git branches:

    Similar if you want to have cdist checked out at multiple machines, you can clone it multiple times:

    -
    machine-a % git clone git://your-git-server/cdist
    +
    machine-a % git clone git://your-git-server/cdist
     machine-b % git clone git://your-git-server/cdist
     
    -

    25.5. Separating work by groups

    +

    25.5. Separating work by groups

    If you are working with different groups on one cdist-configuration, you can delegate to other manifests and have the groups edit only their manifests. You can use the following snippet in conf/manifests/init:

    -
    # Include other groups
    +
    # Include other groups
     sh -e "$__manifest/systems"
     
     sh -e "$__manifest/cbrg"
    @@ -280,11 +271,11 @@ their manifests. You can use the following snippet in
     
    -

    25.6. Maintaining multiple configurations

    +

    25.6. Maintaining multiple configurations

    When you need to manage multiple sites with cdist, like company_a, company_b and private for instance, you can easily use git for this purpose. Including a possible common base that is reused across the different sites:

    -
    # create branches
    +
    # create branches
     git branch company_a company_b common private
     
     # make stuff for company a
    @@ -305,7 +296,7 @@ Including a possible common base that is reused across the different sites:

    The following .git/config is taken from a real world scenario:

    -
    # Track upstream, merge from time to time
    +
    # Track upstream, merge from time to time
     [remote "upstream"]
        url = git://git.schottelius.org/cdist
        fetch = +refs/heads/*:refs/remotes/upstream/*
    @@ -339,23 +330,19 @@ Including a possible common base that is reused across the different sites:

    Have a look at git-remote(1) to adjust the remote configuration, which allows

    -

    25.7. Multiple developers with different trust

    +

    25.7. Multiple developers with different trust

    If you are working in an environment that requires different people to work on the same configuration, but having different privileges, you can implement this scenario with a gateway host and sudo:

      -
    • Create a dedicated user (for instance cdist)

      -
    • -
    • Setup the ssh-pubkey for this user that has the right to configure all hosts

      -
    • -
    • Create a wrapper to update the cdist configuration in ~cdist/cdist

      -
    • -
    • Allow every developer to execute this script via sudo as the user cdist

      -
    • -
    • Allow run of cdist as user cdist on specific hosts on a per user/group basis.

      +
    • Create a dedicated user (for instance cdist)

    • +
    • Setup the ssh-pubkey for this user that has the right to configure all hosts

    • +
    • Create a wrapper to update the cdist configuration in ~cdist/cdist

    • +
    • Allow every developer to execute this script via sudo as the user cdist

    • +
    • Allow run of cdist as user cdist on specific hosts on a per user/group basis.

        -
      • f.i. nico ALL=(ALL) NOPASSWD: /home/cdist/bin/cdist config hostabc
      • +
      • f.i. nico ALL=(ALL) NOPASSWD: /home/cdist/bin/cdist config hostabc

    • @@ -363,12 +350,12 @@ implement this scenario with a gateway host and sudo:

      For more details consult sudoers(5)

    -

    25.8. Templating

    +

    25.8. Templating

      -
    • create directory files/ in your type (convention)
    • -
    • create the template as an executable file like files/basic.conf.sh, it will output text using shell variables for the values
    • +
    • create directory files/ in your type (convention)

    • +
    • create the template as an executable file like files/basic.conf.sh, it will output text using shell variables for the values

    -
    #!/bin/sh
    +
    #!/bin/sh
     # in the template, use cat << eof (here document) to output the text
     # and use standard shell variables in the template
     # output everything in the template script to stdout
    @@ -385,9 +372,9 @@ cat << EOF
     
      -
    • in the manifest, export the relevant variables and add the following lines to your manifest:
    • +
    • in the manifest, export the relevant variables and add the following lines to your manifest:

    -
    # export variables needed for the template
    +
    # export variables needed for the template
       export SERVERNAME='test"
       export ROOT='/var/www/test'
     # render the template
    @@ -401,12 +388,12 @@ cat << EOF
     
    -

    25.9. Testing a new type

    +

    25.9. Testing a new type

    If you want to test a new type on a node, you can tell cdist to only use an object of this type: Use the '--initial-manifest' parameter with - (stdin) as argument and feed object into stdin of cdist:

    -
    # Singleton type without parameter
    +
    # Singleton type without parameter
     echo __ungleich_munin_server | cdist --initial-manifest - munin.panter.ch
     
     # Singleton type with parameter
    @@ -420,7 +407,7 @@ of cdist:

    -

    25.10. Other content in cdist repository

    +

    25.10. Other content in cdist repository

    Usually the cdist repository contains all configuration items. Sometimes you may have additional resources that you would like to store in your central configuration @@ -433,7 +420,7 @@ and also to store all important files in one repository.

    -

    25.11. Notes on CDIST_ORDER_DEPENDENCY

    +

    25.11. Notes on CDIST_ORDER_DEPENDENCY

    With CDIST_ORDER_DEPENDENCY all types are executed in the order in which they are created in the manifest. The current created object automatically depends on the previously created object.

    @@ -441,11 +428,11 @@ on the previously created object.

    (like first creating the directory xyz than the file below the directory).

    This can be helpful, but one must be aware of its side effects.

    -

    25.11.1. CDIST_ORDER_DEPENDENCY kills parallelization

    +

    25.11.1. CDIST_ORDER_DEPENDENCY kills parallelization

    Suppose you have defined CDIST_ORDER_DEPENDENCY and then, among other things, you specify creation of three, by nature independent, files.

    init

    -
    CDIST_ORDER_DEPENDENCY=1
    +
    CDIST_ORDER_DEPENDENCY=1
     export CDIST_ORDER_DEPENDENCY
     
     ...
    @@ -458,7 +445,7 @@ __file /tmp/file3
     

    Due to defined CDIST_ORDER_DEPENDENCY cdist will execute them in specified order. It is better to use CDIST_ORDER_DEPENDENCY in well defined blocks:

    init

    -
    CDIST_ORDER_DEPENDENCY=1
    +
    CDIST_ORDER_DEPENDENCY=1
     export CDIST_ORDER_DEPENDENCY
     ...
     unset CDIST_ORDER_DEPENDENCY
    diff --git a/src/extra/manual/beta/cdist-bootstrap.html b/src/extra/manual/beta/cdist-bootstrap.html
    index 4aa3a32e..d5881dec 100644
    --- a/src/extra/manual/beta/cdist-bootstrap.html
    +++ b/src/extra/manual/beta/cdist-bootstrap.html
    @@ -8,7 +8,7 @@
       
       
       
    -  12. Bootstrap — cdist 6.5.6 documentation
    +  12. Bootstrap — cdist 6.6.0 documentation
       
     
       
    @@ -20,20 +20,11 @@
       
       
         
    -      
    -        
    -        
    -        
    +      
    +        
    +        
    +        
    +        
         
         
     
    @@ -72,7 +63,7 @@
                 
                 
                   
    - 6.5.6 + 6.6.0
    @@ -179,7 +170,7 @@
  • Docs »
  • -
  • 12. Bootstrap
  • +
  • 12. Bootstrap
  • @@ -199,12 +190,12 @@
    -

    12. Bootstrap

    +

    12. Bootstrap

    This document describes the usual steps recommended for a new cdist setup. It is recommended that you have read and understood cdist quickstart before digging into this.

    -

    12.1. Location

    +

    12.1. Location

    First of all, you should think about where to store your configuration database and who will be accessing or changing it. Secondly you have to think about where to configure your hosts from, which may be a different @@ -218,16 +209,16 @@ with others.

    people, have a look at cdist best practice.

    -

    12.2. Setup working directory and branch

    +

    12.2. Setup working directory and branch

    I assume you have a fresh copy of the cdist tree in ~/cdist, cloned from -one of the official urls (see cdist quickstart if you don't). +one of the official URLs (see cdist quickstart if you don't). Entering the command "git branch" should show you "* master", which indicates you are on the master branch.

    The master branch reflects the latest development of cdist. As this is the development branch, it may or may not work. There are also version branches available, which are kept in a stable state. Let's use git branch -r to list all branches:

    -
    cdist% git branch -r
    +
    cdist% git branch -r
       origin/1.0
       origin/1.1
       origin/1.2
    @@ -255,7 +246,7 @@ your own work. Now it's time to create your branch, which contains your
     local changes. I usually name it by the company/area I am working for:
     ethz-systems, localch, customerX, ... But this is pretty much up to you.

    In this tutorial I use the branch mycompany:

    -
    cdist% git checkout -b mycompany origin/master
    +
    cdist% git checkout -b mycompany origin/master
     Branch mycompany set up to track remote branch master from origin.
     Switched to a new branch 'mycompany'
     cdist-user% git branch
    @@ -266,13 +257,13 @@ ethz-systems, localch, customerX, ... But this is pretty much up to you.

    From now on, you can use git as usual to commit your changes in your own branch.

    -

    12.3. Publishing the configuration

    +

    12.3. Publishing the configuration

    Usually a development machine like a notebook should be considered temporary only. For this reason and to enable shareability, the configuration should be published to another device as early as possible. The following example shows how to publish the configuration to another host that is reachable via ssh and has git installed:

    -
    # Create bare git repository on the host named "loch"
    +
    # Create bare git repository on the host named "loch"
     cdist% ssh loch "GIT_DIR=/home/nutzer/cdist git init"
     Initialized empty Git repository in /home/nutzer/cdist/
     
    @@ -294,9 +285,9 @@ branch with the master branch on the host loch
     as usual in your branch and push out changes by entering git push.

    -

    12.4. Updating from origin

    +

    12.4. Updating from origin

    Whenever you want to update your cdist installation, you can use git to do so:

    -
    # Update git repository with latest changes from origin
    +
    # Update git repository with latest changes from origin
     cdist% git fetch origin
     
     # Update current branch with master branch from origin
    diff --git a/src/extra/manual/beta/cdist-cache.html b/src/extra/manual/beta/cdist-cache.html
    index 23661f6e..a60abbd0 100644
    --- a/src/extra/manual/beta/cdist-cache.html
    +++ b/src/extra/manual/beta/cdist-cache.html
    @@ -8,7 +8,7 @@
       
       
       
    -  27. Local cache overview — cdist 6.5.6 documentation
    +  27. Local cache overview — cdist 6.6.0 documentation
       
     
       
    @@ -20,20 +20,11 @@
       
       
         
    -      
    -        
    -        
    -        
    +      
    +        
    +        
    +        
    +        
         
         
     
    @@ -72,7 +63,7 @@
                 
                 
                   
    - 6.5.6 + 6.6.0
    @@ -180,7 +171,7 @@
  • Docs »
  • -
  • 27. Local cache overview
  • +
  • 27. Local cache overview
  • @@ -200,9 +191,9 @@
    -

    27. Local cache overview

    +

    27. Local cache overview

    -

    27.1. Description

    +

    27.1. Description

    While executing, cdist stores data to local cache. Currently this feature is one way only. That means that cdist does not use stored data for future runs. Anyway, those data can be used for debugging cdist, debugging types and @@ -216,64 +207,64 @@ environment variable.

    section in cdist man page.

    -

    27.2. Cache overview

    +

    27.2. Cache overview

    As noted above each configured host has got its subdirectory in local cache. Entries in host's cache directory are as follows.

    -
    -
    bin
    -
    directory with cdist type emulators
    -
    conf
    -
    dynamically determined cdist conf directory, union of all specified -conf directories
    -
    explorer
    -
    directory containing global explorer named files containing explorer output -after running on target host
    -
    messages
    -
    file containing messages
    -
    object
    -
    directory containing subdirectory for each cdist object
    -
    object_marker
    -
    object marker for this particular cdist run
    -
    stderr
    -
    directory containing init manifest and remote stderr stream output
    -
    stdout
    -
    directory containing init manifest and remote stdout stream output
    -
    target_host
    -
    file containing target host of this cdist run, as specified when running -cdist
    -
    typeorder
    -
    file containing types in order of execution.
    +
    +
    bin

    directory with cdist type emulators

    +
    +
    conf

    dynamically determined cdist conf directory, union of all specified +conf directories

    +
    +
    explorer

    directory containing global explorer named files containing explorer output +after running on target host

    +
    +
    messages

    file containing messages

    +
    +
    object

    directory containing subdirectory for each cdist object

    +
    +
    object_marker

    object marker for this particular cdist run

    +
    +
    stderr

    directory containing init manifest and remote stderr stream output

    +
    +
    stdout

    directory containing init manifest and remote stdout stream output

    +
    +
    target_host

    file containing target host of this cdist run, as specified when running +cdist

    +
    +
    typeorder

    file containing types in order of execution.

    +
    -

    27.2.1. Object cache overview

    -

    Each object under object directory has its own structurue.

    -
    -
    code-local
    -
    code generated from gencode-local, present only if something is -generated
    -
    code-remote
    -
    code generated from gencode-remote, present only if something is -generated
    -
    explorer
    -
    directory containing type explorer named files containing explorer output -after running on target host
    -
    files
    -
    directory with object files created during type execution
    -
    parameter
    -
    directory containing type parameter named files containing parameter -values
    -
    source
    -
    this type's source (init manifest)
    -
    state
    -
    this type execution state ('done' when finished)
    -
    stderr
    -
    directory containing type's manifest, gencode-* and code-* stderr stream -outputs
    -
    stdin
    -
    this type stdin content
    -
    stdout
    -
    directory containing type's manifest, gencode-* and code-* stdout stream -outputs.
    +

    27.2.1. Object cache overview

    +

    Each object under object directory has its own structure.

    +
    +
    code-local

    code generated from gencode-local, present only if something is +generated

    +
    +
    code-remote

    code generated from gencode-remote, present only if something is +generated

    +
    +
    explorer

    directory containing type explorer named files containing explorer output +after running on target host

    +
    +
    files

    directory with object files created during type execution

    +
    +
    parameter

    directory containing type parameter named files containing parameter +values

    +
    +
    source

    this type's source (init manifest)

    +
    +
    state

    this type execution state ('done' when finished)

    +
    +
    stderr

    directory containing type's manifest, gencode-* and code-* stderr stream +outputs

    +
    +
    stdin

    this type stdin content

    +
    +
    stdout

    directory containing type's manifest, gencode-* and code-* stdout stream +outputs.

    +
    diff --git a/src/extra/manual/beta/cdist-configuration.html b/src/extra/manual/beta/cdist-configuration.html index ed7f0a13..b7c356a1 100644 --- a/src/extra/manual/beta/cdist-configuration.html +++ b/src/extra/manual/beta/cdist-configuration.html @@ -8,7 +8,7 @@ - 13. Configuration — cdist 6.5.6 documentation + 13. Configuration — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -177,7 +168,7 @@
  • Docs »
  • -
  • 13. Configuration
  • +
  • 13. Configuration
  • @@ -197,20 +188,20 @@
    -

    13. Configuration

    +

    13. Configuration

    -

    13.1. Description

    +

    13.1. Description

    cdist obtains configuration data from the following sources in the following order:

      -
    1. command-line options
    2. -
    3. configuration file specified at command-line using -g command line option
    4. -
    5. configuration file specified in CDIST_CONFIG_FILE environment variable
    6. -
    7. environment variables
    8. -
    9. user's configuration file (first one found of ~/.cdist.cfg, $XDG_CONFIG_HOME/cdist/cdist.cfg, in specified order)
    10. -
    11. in-distribution configuration file (cdist/conf/cdist.cfg)
    12. -
    13. system-wide configuration file (/etc/cdist.cfg)
    14. +
    15. command-line options

    16. +
    17. configuration file specified at command-line using -g command line option

    18. +
    19. configuration file specified in CDIST_CONFIG_FILE environment variable

    20. +
    21. environment variables

    22. +
    23. user's configuration file (first one found of ~/.cdist.cfg, $XDG_CONFIG_HOME/cdist/cdist.cfg, in specified order)

    24. +
    25. in-distribution configuration file (cdist/conf/cdist.cfg)

    26. +
    27. system-wide configuration file (/etc/cdist.cfg)

    if one exists.

    @@ -218,7 +209,7 @@ order:

    precedence. Configuration option value read from source with higher precedence will overwrite option value, if exists, read from source with lower precedence. That means that command-line option wins them all.

    -

    Users can decide on the local conifguration file location. It can be either +

    Users can decide on the local configuration file location. It can be either ~/.cdist.cfg or $XDG_CONFIG_HOME/cdist/cdist.cfg. Note that, if both exist, then ~/.cdist.cfg is used.

    For a per-project configuration, particular environment variables or better, @@ -226,11 +217,11 @@ CDIST_CONFIG_FILE environment variable or -g CONFIG_FILE command line option, can be used.

    -

    13.2. Config file format

    +

    13.2. Config file format

    cdist configuration file is in the INI file format. Currently it supports only [GLOBAL] section.

    Here you can find configuration file skeleton:

    -
    [GLOBAL]
    +
    [GLOBAL]
     # archiving
     #     Use specified archiving. Valid values include:
     #     none, tar, tgz, tbz2 and txz.
    @@ -245,6 +236,14 @@ only [GLOBAL] section.

    # Specify cache path pattern. # cache_path_pattern = %h # +# colored_output +# Colorize cdist's output. If enabled, cdist will use different colors for +# different log levels. +# Recognized values are 'always', 'never', and 'auto'. +# If the value is 'auto', colors are enabled if stdout is a TTY unless +# the NO_COLOR (https://no-color.org/) environment variable is defined. +# colored_output = auto +# # conf_dir # List of configuration directories separated with the character conventionally # used by the operating system to separate search path components (as in PATH), @@ -277,7 +276,7 @@ only [GLOBAL] section.

    # # out_path # Directory to save cdist output in. -# out_path = +# out_path = # # parallel # Process hosts in parallel. If -1 then the default, number of CPU's in @@ -303,7 +302,7 @@ only [GLOBAL] section.

    # remote_shell = /bin/sh # # verbosity -# Set verbosity level. Valid values are: +# Set verbosity level. Valid values are: # ERROR, WARNING, INFO, VERBOSE, DEBUG, TRACE and OFF. # verbosity = INFO
    diff --git a/src/extra/manual/beta/cdist-explorer.html b/src/extra/manual/beta/cdist-explorer.html index 85e572cc..8be49b80 100644 --- a/src/extra/manual/beta/cdist-explorer.html +++ b/src/extra/manual/beta/cdist-explorer.html @@ -8,7 +8,7 @@ - 17. Explorer — cdist 6.5.6 documentation + 17. Explorer — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -177,7 +168,7 @@
  • Docs »
  • -
  • 17. Explorer
  • +
  • 17. Explorer
  • @@ -197,9 +188,9 @@
    -

    17. Explorer

    +

    17. Explorer

    -

    17.1. Description

    +

    17.1. Description

    Explorers are small shell scripts, which will be executed on the target host. The aim of each explorer is to give hints to types on how to act on the target system. An explorer outputs the result to stdout, which is usually @@ -210,11 +201,11 @@ type explorers. Both work almost exactly the same way, with the difference that the values of the general explorers are stored in a general location and the type specific below the object.

    Explorers can reuse other explorers on the target system by calling

    -
    $__explorer/<explorer_name> (general and type explorer)
    +
    $__explorer/<explorer_name> (general and type explorer)
     

    or

    -
    $__type_explorer/<explorer name> (type explorer).
    +
    $__type_explorer/<explorer name> (type explorer).
     

    In case of significant errors, the explorer may exit non-zero and return an @@ -223,14 +214,14 @@ error message on stderr, which will cause cdist to abort.

    explorer.

    -

    17.2. Examples

    +

    17.2. Examples

    A very simple explorer may look like this:

    -
    hostname
    +
    hostname
     

    Which is in practise the hostname explorer.

    A type explorer, which could check for the status of a package may look like this:

    -
    if [ -f "$__object/parameter/name" ]; then
    +
    if [ -f "$__object/parameter/name" ]; then
        name="$(cat "$__object/parameter/name")"
     else
        name="$__object_id"
    diff --git a/src/extra/manual/beta/cdist-features.html b/src/extra/manual/beta/cdist-features.html
    index fa7b6152..def9e351 100644
    --- a/src/extra/manual/beta/cdist-features.html
    +++ b/src/extra/manual/beta/cdist-features.html
    @@ -8,7 +8,7 @@
       
       
       
    -  2. Features — cdist 6.5.6 documentation
    +  2. Features — cdist 6.6.0 documentation
       
     
       
    @@ -20,20 +20,11 @@
       
       
         
    -      
    -        
    -        
    -        
    +      
    +        
    +        
    +        
    +        
         
         
     
    @@ -72,7 +63,7 @@
                 
                 
                   
    - 6.5.6 + 6.6.0
    @@ -173,7 +164,7 @@
  • Docs »
  • -
  • 2. Features
  • +
  • 2. Features
  • @@ -193,43 +184,42 @@
    -

    2. Features

    +

    2. Features

    But cdist ticks differently, here is the feature set that makes it unique:

    -
    -
    Simplicity
    -
    There is only one type to extend cdist called type
    -
    Design
    -
      -
    • Type and core cleanly separated
    • -
    • Sticks completely to the KISS (keep it simple and stupid) paradigm
    • -
    • Meaningful error messages - do not lose time debugging error messages
    • -
    • Consistency in behaviour, naming and documentation
    • -
    • No surprise factor: Only do what is obviously clear, no magic
    • -
    • Define target state, do not focus on methods or scripts
    • -
    • Push architecture: Instantly apply your changes
    • +
      +
      Simplicity

      There is only one type to extend cdist called type

      +
      +
      Design
        +
      • Type and core cleanly separated

      • +
      • Sticks completely to the KISS (keep it simple and stupid) paradigm

      • +
      • Meaningful error messages - do not lose time debugging error messages

      • +
      • Consistency in behaviour, naming and documentation

      • +
      • No surprise factor: Only do what is obviously clear, no magic

      • +
      • Define target state, do not focus on methods or scripts

      • +
      • Push architecture: Instantly apply your changes

      -
      Small core
      -
      cdist's core is very small - less code, less bugs
      -
      Fast development
      -
      Focus on straightforwardness of type creation is a main development objective -Batteries included: A lot of requirements can be solved using standard types
      -
      Modern Programming Language
      -
      cdist is written in Python
      -
      Requirements, Scalability
      -
      No central server needed, cdist operates in push mode and can be run from any computer
      -
      Requirements, Scalability, Upgrade
      -
      cdist only needs to be updated on the master, not on the target hosts
      -
      Requirements, Security
      -
      Uses well-know SSH as transport protocol
      -
      Requirements, Simplicity
      -
      Requires only shell and SSH server on the target
      -
      UNIX
      -
      Reuse of existing tools like cat, find, mv, ...
      -
      UNIX, familiar environment, documentation
      -
      Is available as manpages and HTML
      -
      UNIX, simplicity, familiar environment
      -
      cdist is configured in POSIX shell
      +
      Small core

      cdist's core is very small - less code, less bugs

      +
      +
      Fast development

      Focus on straightforwardness of type creation is a main development objective +Batteries included: A lot of requirements can be solved using standard types

      +
      +
      Modern Programming Language

      cdist is written in Python

      +
      +
      Requirements, Scalability

      No central server needed, cdist operates in push mode and can be run from any computer

      +
      +
      Requirements, Scalability, Upgrade

      cdist only needs to be updated on the master, not on the target hosts

      +
      +
      Requirements, Security

      Uses well-know SSH as transport protocol

      +
      +
      Requirements, Simplicity

      Requires only shell and SSH server on the target

      +
      +
      UNIX

      Reuse of existing tools like cat, find, mv, ...

      +
      +
      UNIX, familiar environment, documentation

      Is available as manpages and HTML

      +
      +
      UNIX, simplicity, familiar environment

      cdist is configured in POSIX shell

      +
    diff --git a/src/extra/manual/beta/cdist-hacker.html b/src/extra/manual/beta/cdist-hacker.html index 6b3ac527..aee30838 100644 --- a/src/extra/manual/beta/cdist-hacker.html +++ b/src/extra/manual/beta/cdist-hacker.html @@ -8,7 +8,7 @@ - 30. Hacking — cdist 6.5.6 documentation + 30. Hacking — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -181,7 +172,7 @@
  • Docs »
  • -
  • 30. Hacking
  • +
  • 30. Hacking
  • @@ -201,9 +192,9 @@
    -

    30. Hacking

    +

    30. Hacking

    -

    30.1. Welcome

    +

    30.1. Welcome

    Welcome dear hacker! I invite you to a tour of pointers to get into the usable configuration management system, cdist.

    The first thing to know is probably that cdist is brought to @@ -212,53 +203,47 @@ twice before merging or implementing a feature: Less features with good usability are far better than the opposite.

    -

    30.2. Reporting bugs

    +

    30.2. Reporting bugs

    If you believe you've found a bug and verified that it is in the latest version, drop a mail to the cdist mailing list, subject prefixed with "[BUG] " or create an issue on code.ungleich.ch.

    -

    30.3. Coding conventions (everywhere)

    +

    30.3. Coding conventions (everywhere)

    If something should be improved or needs to be fixed, add the word FIXME nearby, so grepping for FIXME gives all positions that need to be fixed.

    Indentation is 4 spaces (welcome to the python world).

    -

    30.4. How to submit stuff for inclusion into upstream cdist

    +

    30.4. How to submit stuff for inclusion into upstream cdist

    If you did some cool changes to cdist, which you think might be of benefit to other cdist users, you're welcome to propose inclusion into upstream.

    There are some requirements to ensure your changes don't break other peoples work nor kill the authors brain:

      -
    • All files should contain the usual header (Author, Copying, etc.)

      -
    • -
    • Code submission must be done via git

      -
    • -
    • Do not add cdist/conf/manifest/init - This file should only be touched in your -private branch!

      -
    • -
    • Code to be included should be branched of the upstream "master" branch

      +
    • All files should contain the usual header (Author, Copying, etc.)

    • +
    • Code submission must be done via git

    • +
    • Do not add cdist/conf/manifest/init - This file should only be touched in your +private branch!

    • +
    • Code to be included should be branched of the upstream "master" branch

        -
      • Exception: Bugfixes to a version branch
      • +
      • Exception: Bugfixes to a version branch

    • -
    • On a merge request, always name the branch I should pull from

      -
    • -
    • Always ensure all manpages build. Use ./build man to test.

      -
    • -
    • If you developed more than one feature, consider submitting them in +

    • On a merge request, always name the branch I should pull from

    • +
    • Always ensure all manpages build. Use ./build man to test.

    • +
    • If you developed more than one feature, consider submitting them in separate branches. This way one feature can already be included, even if -the other needs to be improved.

      -
    • +the other needs to be improved.

    As soon as your work meets these requirements, write a mail for inclusion to the mailinglist cdist-configuration-management at googlegroups.com or open a merge request at https://code.ungleich.ch/ungleich-public/cdist.

    -

    30.5. How to submit a new type

    +

    30.5. How to submit a new type

    For detailed information about types, see cdist type.

    Submitting a type works as described above, with the additional requirement that a corresponding manpage named man.rst in ReSTructured text format with @@ -270,9 +255,9 @@ code and thus such a type introduces redundant functionality that is given by core cdist already.

    -

    30.6. Example git workflow

    +

    30.6. Example git workflow

    The following workflow works fine for most developers

    -
    # get latest upstream master branch
    +
    # get latest upstream master branch
     git clone https://code.ungleich.ch/ungleich-public/cdist.git
     
     # update if already existing
    @@ -316,7 +301,7 @@ git merge origin/master
     

    If at any point you want to go back to the original master branch, you can use git stash to stash your changes away:

    -
    .. code-block:: sh
    +
    .. code-block:: sh
     
    @@ -329,7 +314,7 @@ git merge origin/master

    Similarly when you want to develop another new feature, you go back to the master branch and create another branch based on it:

    -
    .. code-block:: sh
    +
    .. code-block:: sh
     
    diff --git a/src/extra/manual/beta/cdist-install.html b/src/extra/manual/beta/cdist-install.html index 7665da0a..73625308 100644 --- a/src/extra/manual/beta/cdist-install.html +++ b/src/extra/manual/beta/cdist-install.html @@ -8,7 +8,7 @@ - 4. How to install cdist — cdist 6.5.6 documentation + 4. How to install cdist — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -190,7 +181,7 @@
  • Docs »
  • -
  • 4. How to install cdist
  • +
  • 4. How to install cdist
  • @@ -210,40 +201,40 @@
    -

    4. How to install cdist

    +

    4. How to install cdist

    -

    4.1. Requirements

    +

    4.1. Requirements

    -

    4.1.1. Source Host

    +

    4.1.1. Source Host

    This is the machine from which you will configure target hosts.

      -
    • /bin/sh: A posix like shell (for instance bash, dash, zsh)
    • -
    • Python >= 3.2
    • -
    • SSH client
    • -
    • sphinx (for building html docs and/or the man pages)
    • +
    • /bin/sh: A POSIX like shell (for instance bash, dash, zsh)

    • +
    • Python >= 3.5

    • +
    • SSH client

    • +
    • sphinx (for building html docs and/or the man pages)

    -

    4.1.2. Target Hosts

    +

    4.1.2. Target Hosts

      -
    • /bin/sh: A posix like shell (for instance bash, dash, zsh)
    • -
    • SSH server
    • +
    • /bin/sh: A POSIX like shell (for instance bash, dash, zsh)

    • +
    • SSH server

    -

    4.2. Install cdist

    +

    4.2. Install cdist

    -

    4.2.1. From git

    +

    4.2.1. From git

    Cloning cdist from git gives you the advantage of having a version control in place for development of your own stuff immediately.

    To install cdist, execute the following commands:

    -
    git clone https://code.ungleich.ch/ungleich-public/cdist.git
    +
    git clone https://code.ungleich.ch/ungleich-public/cdist.git
     cd cdist
     export PATH=$PATH:$(pwd -P)/bin
     
    @@ -254,46 +245,46 @@ It is assumed that you are familiar with git ways of signing and verifi

    You can also get cdist from github mirror.

    To install cdist with distutils from cloned repository, first you have to create version.py:

    -
    ./bin/build-helper version
    +
    ./bin/build-helper version
     

    Then you install it with:

    -
    make install
    +
    make install
     

    or with:

    -
    make install-user
    +
    make install-user
     

    to install it into user site-packages directory. Or directly with distutils:

    -
    python setup.py install
    +
    python setup.py install
     

    Note that bin/build-helper script is intended for cdist maintainers.

    -

    4.2.1.1. Available versions in git

    +

    4.2.1.1. Available versions in git

      -
    • The active development takes place in the master branch
    • -
    • The released versions can be found in the tags
    • +
    • The active development takes place in the master branch

    • +
    • The released versions can be found in the tags

    Other branches may be available for features or bugfixes, but they may vanish at any point. To select a specific branch use

    -
    # Generic code
    +
    # Generic code
     git checkout -b <localbranchname> origin/<branchname>
     

    So for instance if you want to use and stay with version 4.1, you can use

    -
    git checkout -b 4.1 origin/4.1
    +
    git checkout -b 4.1 origin/4.1
     
    -

    4.2.1.2. Building and using documentation (man and html)

    +

    4.2.1.2. Building and using documentation (man and html)

    If you want to build and use the documentation, run:

    -
    make docs
    +
    make docs
     

    Documentation comes in two formats, man pages and full HTML @@ -301,7 +292,7 @@ documentation. Documentation is built into distribution's docs/dist directory. man pages are in docs/dist/man and HTML documentation in docs/dist/html.

    If you want to use man pages, run:

    -
    export MANPATH=$MANPATH:$(pwd -P)/docs/dist/man
    +
    export MANPATH=$MANPATH:$(pwd -P)/docs/dist/man
     

    Or you can move man pages from docs/dist/man directory to some @@ -309,20 +300,20 @@ other directory and add it to MANPATH.

    Full HTML documentation can be accessed at docs/dist/html/index.html.

    You can also build only man pages or only html documentation, for only man pages run:

    -
    make man
    +
    make man
     

    for only html documentation run:

    -
    make html
    +
    make html
     

    You can also build man pages for types in your ~/.cdist directory:

    -
    make dotman
    +
    make dotman
     

    Built man pages are now in docs/dist/man directory. If you have some other custom .cdist directory, e.g. /opt/cdist then use:

    -
    make DOT_CDIST_PATH=/opt/cdist dotman
    +
    make DOT_CDIST_PATH=/opt/cdist dotman
     

    Note that dotman-target has to be built before a make docs-run, otherwise @@ -330,15 +321,15 @@ the custom man-pages are not picked up.

    -

    4.2.2. Python package

    +

    4.2.2. Python package

    Cdist is available as a python package at PyPi. You can install it using

    -
    pip install cdist
    +
    pip install cdist
     
    -

    4.2.3. Installing from source with signature verification

    +

    4.2.3. Installing from source with signature verification

    If you want to install cdist from signed source and verify it, first you need to download cdist archive and its detached signature.

    Get both, cdist-x.y.z.tar.gz and cdist-x.y.z.tar.gz.asc from release @@ -347,7 +338,7 @@ notes of the desired tag x.y.z at

    Get GPG public key used for signing here and import it into GPG.

    Now cdist source archive can be verified using gpg, e.g. to verify cdist-6.2.0:

    -
    $ gpg --verify cdist-6.2.0.tar.gz.asc cdist-6.2.0.targ.gz
    +
    $ gpg --verify cdist-6.2.0.tar.gz.asc cdist-6.2.0.targ.gz
     gpg: Signature made Sat Nov 30 23:14:19 2019 CET
     gpg:                using RSA key 69767822F3ECC3C349C1EFFFEFD2AE4EC36B6901
     gpg: Good signature from "ungleich GmbH (ungleich FOSS) <foss@ungleich.ch>" [ultimate]
    diff --git a/src/extra/manual/beta/cdist-integration.html b/src/extra/manual/beta/cdist-integration.html
    index 30cf7da1..63fe0865 100644
    --- a/src/extra/manual/beta/cdist-integration.html
    +++ b/src/extra/manual/beta/cdist-integration.html
    @@ -8,7 +8,7 @@
       
       
       
    -  23. cdist integration / using cdist as library — cdist 6.5.6 documentation
    +  23. cdist integration / using cdist as library — cdist 6.6.0 documentation
       
     
       
    @@ -20,20 +20,11 @@
       
       
         
    -      
    -        
    -        
    -        
    +      
    +        
    +        
    +        
    +        
         
         
     
    @@ -72,7 +63,7 @@
                 
                 
                   
    - 6.5.6 + 6.6.0
    @@ -177,7 +168,7 @@
  • Docs »
  • -
  • 23. cdist integration / using cdist as library
  • +
  • 23. cdist integration / using cdist as library
  • @@ -197,16 +188,16 @@
    -

    23. cdist integration / using cdist as library

    +

    23. cdist integration / using cdist as library

    -

    23.1. Description

    +

    23.1. Description

    cdist can be integrate with other applications by importing cdist and other cdist modules and setting all by hand. There are also helper functions which aim to ease this integration. Just import cdist.integration and use its functions:

      -
    • cdist.integration.configure_hosts_simple for configuration
    • -
    • cdist.integration.install_hosts_simple for installation.
    • +
    • cdist.integration.configure_hosts_simple for configuration

    • +
    • cdist.integration.install_hosts_simple for installation.

    Functions require host and manifest parameters. host can be specified as a string representing host or as iterable @@ -219,8 +210,8 @@ find it first from local lib directory and then in PATH.

    WARNING: cdist integration helper functions are not yet stable!

    -

    23.2. Examples

    -
    # configure host from python interactive shell
    +

    23.2. Examples

    +
    # configure host from python interactive shell
     >>> import cdist.integration
     >>> cdist.integration.configure_hosts_simple('185.203.114.185',
     ...                                          '~/.cdist/manifest/init')
    diff --git a/src/extra/manual/beta/cdist-inventory.html b/src/extra/manual/beta/cdist-inventory.html
    index f55ab1a0..0b9d1dc4 100644
    --- a/src/extra/manual/beta/cdist-inventory.html
    +++ b/src/extra/manual/beta/cdist-inventory.html
    @@ -8,7 +8,7 @@
       
       
       
    -  20. Inventory — cdist 6.5.6 documentation
    +  20. Inventory — cdist 6.6.0 documentation
       
     
       
    @@ -20,20 +20,11 @@
       
       
         
    -      
    -        
    -        
    -        
    +      
    +        
    +        
    +        
    +        
         
         
     
    @@ -72,7 +63,7 @@
                 
                 
                   
    - 6.5.6 + 6.6.0
    @@ -182,7 +173,7 @@
  • Docs »
  • -
  • 20. Inventory
  • +
  • 20. Inventory
  • @@ -202,16 +193,16 @@
    -

    20. Inventory

    +

    20. Inventory

    -

    20.1. Introduction

    +

    20.1. Introduction

    cdist comes with simple built-in tag based inventory. It is a simple inventory with list of hosts and a host has a list of tags. Inventory functionality is still in beta so it can be used only if beta command line flag is specified (-b, --beta) or setting CDIST_BETA env var.

    -

    20.2. Description

    +

    20.2. Description

    The idea is to have simple tagging inventory. There is a list of hosts and for each host there are tags. Inventory database is a set of files under inventory database base directory. Filename equals hostname. Each file contains tags for @@ -224,12 +215,12 @@ tags are present.

    using cdist inventory interface or using standard UNIX tools.

    -

    20.3. cdist inventory interface

    +

    20.3. cdist inventory interface

    With cdist inventory interface you can list host(s) and tag(s), add host(s), add tag(s), delete host(s) and delete tag(s).

    -

    20.4. Configuring hosts using inventory

    +

    20.4. Configuring hosts using inventory

    config command now has new options, -t, -a and -A.

    -A means that all hosts in tag db is selected.

    -a means that selected hosts must contain ALL specified tags.

    @@ -237,8 +228,8 @@ add tag(s), delete host(s) and delete tag(s).

    selected.

    -

    20.5. Examples

    -
    # List inventory content
    +

    20.5. Examples

    +
    # List inventory content
     $ cdist inventory list -b
     
     # List inventory for specified host localhost
    @@ -277,8 +268,8 @@ $ cdist config -b -A
     
    -

    20.6. Example of manipulating database

    -
    $ python3 scripts/cdist inventory list -b
    +

    20.6. Example of manipulating database

    +
    $ python3 scripts/cdist inventory list -b
     $ python3 scripts/cdist inventory add-host -b localhost
     $ python3 scripts/cdist inventory add-host -b test.mycloud.net
     $ python3 scripts/cdist inventory list -b
    @@ -386,14 +377,14 @@ cloud
     

    For more info about inventory commands and options see cdist(1).

    -

    20.7. Using external inventory

    +

    20.7. Using external inventory

    cdist can be used with any external inventory where external inventory is some storage or database from which you can get a list of hosts to configure. cdist can then be fed with this list of hosts through stdin or file using -f option. For example, if your host list is stored in sqlite3 database hosts.db and you want to select hosts which purpose is django then you can use it with cdist like:

    -
    $ sqlite3 hosts.db "select hostname from hosts where purpose = 'django';" | cdist config
    +
    $ sqlite3 hosts.db "select hostname from hosts where purpose = 'django';" | cdist config
     
    diff --git a/src/extra/manual/beta/cdist-manifest.html b/src/extra/manual/beta/cdist-manifest.html index 36662b55..6fdaa05c 100644 --- a/src/extra/manual/beta/cdist-manifest.html +++ b/src/extra/manual/beta/cdist-manifest.html @@ -8,7 +8,7 @@ - 14. Manifest — cdist 6.5.6 documentation + 14. Manifest — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -183,7 +174,7 @@
  • Docs »
  • -
  • 14. Manifest
  • +
  • 14. Manifest
  • @@ -203,9 +194,9 @@
    -

    14. Manifest

    +

    14. Manifest

    -

    14.1. Description

    +

    14.1. Description

    Manifests are used to define which objects to create. Objects are instances of types, like in object oriented programming languages. An object is represented by the combination of @@ -217,7 +208,7 @@ setup the MANPATH correctly, you can use man cdist-reference to the reference with pointers to the manpages.

    Types in manifests are used like normal command line tools. Let's have a look at an example:

    -
    # Create object of type __package with the parameter state = absent
    +
    # Create object of type __package with the parameter state = absent
     __package apache2 --state absent
     
     # Same with the __directory type
    @@ -234,14 +225,14 @@ the parameters are exactly the same.

    on given conditions.

    -

    14.2. Initial and type manifests

    +

    14.2. Initial and type manifests

    Cdist knows about two types of manifests: The initial manifest and type manifests. The initial manifest is used to define, which configurations to apply to which hosts. The type manifests are used to create objects from types. More about manifests in types can be found in cdist type.

    -

    14.3. Define state in the initial manifest

    +

    14.3. Define state in the initial manifest

    The initial manifest is the entry point for cdist to find out, which objects to configure on the selected host. Cdist expects the initial manifest at cdist/conf/manifest/init.

    @@ -249,7 +240,7 @@ Cdist expects the initial manifest at cdist/conf/manifest/init. created on which host. To distinguish between hosts, you can use the environment variable __target_host and/or __target_hostname and/or __target_fqdn. Let's have a look at a simple example:

    -
    __cdistmarker
    +
    __cdistmarker
     
     case "$__target_host" in
        localhost)
    @@ -268,13 +259,13 @@ utilises cdist types. Every available type can be executed like a normal
     command.

    -

    14.4. Splitting up the initial manifest

    +

    14.4. Splitting up the initial manifest

    If you want to split up your initial manifest, you can create other shell scripts in cdist/conf/manifest/ and include them in cdist/conf/manifest/init. Cdist provides the environment variable __manifest to reference the directory containing the initial manifest (see cdist reference).

    The following example would include every file with a .sh suffix:

    -
    # Include *.sh
    +
    # Include *.sh
     for manifest in $__manifest/*.sh; do
         # And source scripts into our shell environment
         . "$manifest"
    @@ -283,11 +274,11 @@ done
     
    -

    14.5. Dependencies

    +

    14.5. Dependencies

    If you want to describe that something requires something else, just setup the variable "require" to contain the requirements. Multiple requirements can be added white space separated.

    -
     1 # No dependency
    +
     1 # No dependency
      2 __file /etc/cdist-configured
      3
      4 # Require above object
    @@ -312,7 +303,7 @@ if necessary before "__link" proceeds (or to abort execution with an e
     export the "require" variable as well. But then, if you need to add extra
     dependencies to a specific type, you have to make sure that you append these
     to the globally already defined one.

    -
    # First of all, update the package index
    +
    # First of all, update the package index
     __package_update_index
     # Upgrade all the installed packages afterwards
     require="__package_update_index" __package_upgrade_all
    @@ -334,7 +325,7 @@ cdist jargon.

    in cdist execution stages and of how types work in cdist type.

    -

    14.6. Create dependencies from execution order

    +

    14.6. Create dependencies from execution order

    You can tell cdist to execute all types in the order in which they are created in the manifest by setting up the variable CDIST_ORDER_DEPENDENCY. When cdist sees that this variable is setup, the current created object @@ -351,21 +342,21 @@ is used. When order dependency context is defined then cdist executes types in t order in which they are created in the manifest inside order dependency context.

    Sometimes the best way to see how something works is to see examples.

    Suppose you have defined initial manifest:

    -
    __cycle1 cycle1
    +
    __cycle1 cycle1
     export CDIST_ORDER_DEPENDENCY=1
     __cycle2 cycle2
     __cycle3 cycle3
     

    with types __cycle1:

    -
    export CDIST_ORDER_DEPENDENCY=1
    +
    export CDIST_ORDER_DEPENDENCY=1
     __file /tmp/cycle11
     __file /tmp/cycle12
     __file /tmp/cycle13
     

    __cycle2:

    -
    __file /tmp/cycle21
    +
    __file /tmp/cycle21
     export CDIST_ORDER_DEPENDENCY=1
     __file /tmp/cycle22
     __file /tmp/cycle23
    @@ -374,7 +365,7 @@ __file /tmp/cycle24
     

    __cycle3:

    -
    __file /tmp/cycle31
    +
    __file /tmp/cycle31
     __file /tmp/cycle32
     export CDIST_ORDER_DEPENDENCY=1
     __file /tmp/cycle33
    @@ -383,7 +374,7 @@ __file /tmp/cycle34
     

    For the above config, cdist results in the following expected dependency graph (type __cycleX is shown as cX, __file/tmp/cycleXY is shown as fcXY):

    -
    c1---->fc11
    +
    c1---->fc11
     |      /\
     |       |
     +----->fc12
    @@ -416,12 +407,12 @@ __file /tmp/cycle34
     

    Before version 6.2.0 the above configuration would result in cycle:

    -
    ERROR: 185.203.112.26: Cycle detected in object dependencies:
    +
    ERROR: 185.203.112.26: Cycle detected in object dependencies:
     __file/tmp/cycle11 -> __cycle3/cycle3 -> __cycle2/cycle2 -> __cycle1/cycle1 -> __file/tmp/cycle11!
     

    The following manifest shows an example for order dependency contexts:

    -
    __file /tmp/fileA
    +
    __file /tmp/fileA
     export CDIST_ORDER_DEPENDENCY=1
     __file /tmp/fileB
     __file /tmp/fileC
    @@ -438,14 +429,14 @@ __file /tmp/fileI
     

    This means:

      -
    • C depends on B
    • -
    • D depends on C
    • -
    • H depends on G
    • +
    • C depends on B

    • +
    • D depends on C

    • +
    • H depends on G

    and there are no other dependencies from this manifest.

    -

    14.7. Overrides

    +

    14.7. Overrides

    In some special cases, you would like to create an already defined object with different parameters. In normal situations this leads to an error in cdist. If you wish, you can setup the environment variable CDIST_OVERRIDE @@ -459,9 +450,9 @@ CDIST_ORDER_DEPENDENCY will be ignored, because adding a dependency in case of overrides would result in circular dependencies, which is an error.

    -

    14.8. Examples

    +

    14.8. Examples

    The initial manifest may for instance contain the following code:

    -
    # Always create this file, so other sysadmins know cdist is used.
    +
    # Always create this file, so other sysadmins know cdist is used.
     __file /etc/cdist-configured
     
     case "$__target_host" in
    @@ -473,11 +464,11 @@ __file /etc/cdist-configured
     

    The manifest of the type "nologin" may look like this:

    -
    __file /etc/nologin --source "$__type/files/default.nologin"
    +
    __file /etc/nologin --source "$__type/files/default.nologin"
     

    This example makes use of dependencies:

    -
    # Ensure that lighttpd is installed
    +
    # Ensure that lighttpd is installed
     __package lighttpd --state present
     # Ensure that munin makes use of lighttpd instead of the default webserver
     # package as decided by the package manager
    @@ -485,7 +476,7 @@ __package lighttpd --state present
     

    How to override objects:

    -
    # for example in the initial manifest
    +
    # for example in the initial manifest
     
     # create user account foobar with some hash for password
     __user foobar --password 'some_fancy_hash' --home /home/foobarexample
    @@ -504,7 +495,7 @@ __user foobar --password 'some_other_hash'
     

    Dependencies defined by execution order work as following:

    -
    # Tells cdist to execute all types in the order in which they are created ...
    +
    # Tells cdist to execute all types in the order in which they are created ...
     export CDIST_ORDER_DEPENDENCY=on
     __sample_type 1
     require="__some_type_somewhere/id" __sample_type 2
    diff --git a/src/extra/manual/beta/cdist-messaging.html b/src/extra/manual/beta/cdist-messaging.html
    index 4b42aa57..9ae2e863 100644
    --- a/src/extra/manual/beta/cdist-messaging.html
    +++ b/src/extra/manual/beta/cdist-messaging.html
    @@ -8,7 +8,7 @@
       
       
       
    -  18. Messaging — cdist 6.5.6 documentation
    +  18. Messaging — cdist 6.6.0 documentation
       
     
       
    @@ -20,20 +20,11 @@
       
       
         
    -      
    -        
    -        
    -        
    +      
    +        
    +        
    +        
    +        
         
         
     
    @@ -72,7 +63,7 @@
                 
                 
                   
    - 6.5.6 + 6.6.0
    @@ -178,7 +169,7 @@
  • Docs »
  • -
  • 18. Messaging
  • +
  • 18. Messaging
  • @@ -198,9 +189,9 @@
    -

    18. Messaging

    +

    18. Messaging

    -

    18.1. Description

    +

    18.1. Description

    cdist has a simple but powerful way of allowing communication between the initial manifest and types as well as types and types.

    Whenever execution is passed from cdist to one of the @@ -218,29 +209,29 @@ between the different objects (see -

    18.2. Availability

    +

    18.2. Availability

    Messaging is possible between all local scripts:

      -
    • initial manifest
    • -
    • type/manifest
    • -
    • type/gencode-local
    • -
    • type/gencode-remote
    • +
    • initial manifest

    • +
    • type/manifest

    • +
    • type/gencode-local

    • +
    • type/gencode-remote

    -

    18.3. Examples

    +

    18.3. Examples

    When you want to emit a message use:

    -
    echo "something" >> "$__messages_out"
    +
    echo "something" >> "$__messages_out"
     

    When you want to react on a message use:

    -
    if grep -q "^__your_type/object/id:something" "$__messages_in"; then
    +
    if grep -q "^__your_type/object/id:something" "$__messages_in"; then
         echo "I do something else"
     fi
     

    Some real life examples:

    -
    # Reacting on changes from block for keepalive
    +
    # Reacting on changes from block for keepalive
     if grep -q "^__block/keepalive-vrrp" "$__messages_in"; then
         echo /etc/init.d/keepalived restart
     fi
    @@ -252,7 +243,7 @@ can only react reliably on messages by objects that you depend on.

    Restart sshd on changes

    -
    os="$(cat "$__global/explorer/os")"
    +
    os="$(cat "$__global/explorer/os")"
     
     case "$os" in
         centos|redhat|suse)
    diff --git a/src/extra/manual/beta/cdist-os.html b/src/extra/manual/beta/cdist-os.html
    index 64706231..f23ea237 100644
    --- a/src/extra/manual/beta/cdist-os.html
    +++ b/src/extra/manual/beta/cdist-os.html
    @@ -8,7 +8,7 @@
       
       
       
    -  3. Supported operating systems — cdist 6.5.6 documentation
    +  3. Supported operating systems — cdist 6.6.0 documentation
       
     
       
    @@ -20,20 +20,11 @@
       
       
         
    -      
    -        
    -        
    -        
    +      
    +        
    +        
    +        
    +        
         
         
     
    @@ -72,7 +63,7 @@
                 
                 
                   
    - 6.5.6 + 6.6.0
    @@ -173,7 +164,7 @@
  • Docs »
  • -
  • 3. Supported operating systems
  • +
  • 3. Supported operating systems
  • @@ -193,23 +184,23 @@
    -

    3. Supported operating systems

    +

    3. Supported operating systems

    cdist was tested or is know to run on at least

    diff --git a/src/extra/manual/beta/cdist-parallelization.html b/src/extra/manual/beta/cdist-parallelization.html index 3a21b5dd..d60b1bc8 100644 --- a/src/extra/manual/beta/cdist-parallelization.html +++ b/src/extra/manual/beta/cdist-parallelization.html @@ -8,7 +8,7 @@ - 19. Parallelization — cdist 6.5.6 documentation + 19. Parallelization — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -178,7 +169,7 @@
  • Docs »
  • -
  • 19. Parallelization
  • +
  • 19. Parallelization
  • @@ -198,9 +189,9 @@
    -

    19. Parallelization

    +

    19. Parallelization

    -

    19.1. Description

    +

    19.1. Description

    cdist has two modes of parallel operation.

    One of them is to operate on each host in separate process. This is enabled with -p/--parallel option.

    @@ -215,8 +206,8 @@ using specified number of parallel jobs.

    For more info on those options see cdist(1).

    -

    19.2. Examples

    -
    # Configure hosts read from file hosts.file in parallel
    +

    19.2. Examples

    +
    # Configure hosts read from file hosts.file in parallel
     $ cdist config -p -f hosts.file
     
     # Configure hosts read from file hosts.file sequentially but using default
    @@ -230,7 +221,7 @@ $ cdist config -j 16 -p -f hosts.file
     
    -

    19.3. Caveats

    +

    19.3. Caveats

    When operating in parallel, either by operating in parallel for each host (-p/--parallel) or by parallel jobs within a host (-j/--jobs), and depending on target SSH server and its configuration you may encounter connection drops. @@ -242,7 +233,7 @@ This limit is controlled with sshd :strong:MaxSessions configuration options. For more details refer to sshd_config(5).

    For example, if you reach MaxSessions sessions you may get the following output:

    -
    $ cdist config -b -j 11 -v 78.47.116.244
    +
    $ cdist config -b -j 11 -v 78.47.116.244
     INFO: cdist: version 4.2.2-55-g640b7f9
     INFO: 78.47.116.244: Running global explorers
     INFO: 78.47.116.244: Remote transfer in 11 parallel jobs
    diff --git a/src/extra/manual/beta/cdist-preos.html b/src/extra/manual/beta/cdist-preos.html
    index 06a430fc..fcc0401e 100644
    --- a/src/extra/manual/beta/cdist-preos.html
    +++ b/src/extra/manual/beta/cdist-preos.html
    @@ -8,7 +8,7 @@
       
       
       
    -  22. PreOS — cdist 6.5.6 documentation
    +  22. PreOS — cdist 6.6.0 documentation
       
     
       
    @@ -20,20 +20,11 @@
       
       
         
    -      
    -        
    -        
    -        
    +      
    +        
    +        
    +        
    +        
         
         
     
    @@ -72,7 +63,7 @@
                 
                 
                   
    - 6.5.6 + 6.6.0
    @@ -186,7 +177,7 @@
  • Docs »
  • -
  • 22. PreOS
  • +
  • 22. PreOS
  • @@ -206,37 +197,37 @@
    -

    22. PreOS

    +

    22. PreOS

    -

    22.1. Description

    +

    22.1. Description

    With cdist you can install and configure new machines. You can use cdist to create PreOS, minimal OS whose purpose is to boot a new machine. After PreOS is booted, the machine is ready for installing the desired OS and afterwards it is ready for configuration.

    -

    22.2. PreOS creation

    +

    22.2. PreOS creation

    With cdist you can create PreOS. Currently supported PreOS-es include:

      -
    • debian
    • -
    • ubuntu
    • -
    • devuan
    • +
    • debian

    • +
    • ubuntu

    • +
    • devuan

    -

    PreOS is created using the cdist preos command. +

    PreOS is created using the cdist preos command. This command has subcommands that determine the desired PreOS.

    For example, to create an ubuntu PreOS:

    -
    $ cdist preos ubuntu /preos/preos-ubuntu -B -C \
    +
    $ cdist preos ubuntu /preos/preos-ubuntu -B -C \
         -k ~/.ssh/id_rsa.pub -p /preos/pxe-ubuntu \
         -t "/usr/bin/curl 192.168.111.5:3000/cdist/install/"
     

    For more info about the available options see the cdist manual page.

    -

    This will bootstrap (-B) ubuntu PreOS in /preos/preos-ubuntu directory, it -will be configured (-C) using default built-in initial manifest and with -specified ssh authorized key (-k) and with specified trigger command (-t). +

    This will bootstrap (-B) ubuntu PreOS in /preos/preos-ubuntu directory, it +will be configured (-C) using default built-in initial manifest and with +specified ssh authorized key (-k) and with specified trigger command (-t). After bootstrapping and configuration PXE -boot directory will be created (-p) in /preos/pxe-ubuntu.

    +boot directory will be created (-p) in /preos/pxe-ubuntu.

    After PreOS is created, new machines can be booted using the created PXE (after proper dhcp and tftp settings).

    Since PreOS is configured with ssh authorized key it can be accessed through @@ -250,45 +241,45 @@ for installation then cdist trigger server will start install command for the client host using parameters specified at trigger server startup.

    -

    22.3. Implementing new PreOS sub-command

    +

    22.3. Implementing new PreOS sub-command

    preos command is implemented as a plugin system. This plugin system scans for -preos subcommands in the cdist/preos/ distribution directory and also in -~/.cdist/preos/ directory if it exists.

    +preos subcommands in the cdist/preos/ distribution directory and also in +~/.cdist/preos/ directory if it exists.

    preos subcommand is a module or a class that satisfies the following:

      -
    • it has the attribute _cdist_preos set to True
    • -
    • it defines a function/method commandline.
    • +
    • it has the attribute _cdist_preos set to True

    • +
    • it defines a function/method commandline.

    -

    For a module-based preos subcommand, the commandline function accepts a +

    For a module-based preos subcommand, the commandline function accepts a module object as its first argument and the list of command line -arguments (sys.argv[2:]).

    -

    For a class-based preos subcommand commandline method should be +arguments (sys.argv[2:]).

    +

    For a class-based preos subcommand commandline method should be static-method and must accept a class as its first argument and the -list of command line arguments (sys.argv[2:]).

    -

    If preos scanning finds a module/class that has _cdist_preos set -to True and a function/method commandline then this module/class is -registered to preos subcommands. The name of the command is set to _preos_name +list of command line arguments (sys.argv[2:]).

    +

    If preos scanning finds a module/class that has _cdist_preos set +to True and a function/method commandline then this module/class is +registered to preos subcommands. The name of the command is set to _preos_name attribute if defined in the module/class, defaulting to the module/class name in lowercase. -When a registered preos subcommand is specified, commandline +When a registered preos subcommand is specified, commandline will be called with the first argument set to module/class and the second -argument set to sys.argv[2:].

    +argument set to sys.argv[2:].

    -

    22.3.1. Example of writing new dummy preos sub-command

    +

    22.3.1. Example of writing new dummy preos sub-command

    -

    22.3.1.1. Module-based preos:

    +

    22.3.1.1. Module-based preos:

      -
    1. Create directory ~/.cdist/preos/ if it does not exist
    2. -
    3. Create ~/.cdist/preos/netbsd.py with the following contents:
    4. +
    5. Create directory ~/.cdist/preos/ if it does not exist

    6. +
    7. Create ~/.cdist/preos/netbsd.py with the following contents:

    -
    _preos_name = 'netbsd'
    -_cdist_preos = True
    +
    _preos_name = 'netbsd'
    +_cdist_preos = True
     
     def commandline(cls, args):
    -    print("NetBSD PreOS: {}".format(args))
    +    print("NetBSD PreOS: {}".format(args))
     

    When you try to run this new preos you will get:

    -
    $ cdist preos -L
    +
    $ cdist preos -L
     Available PreOS-es:
         - debian
         - devuan
    @@ -300,21 +291,21 @@ NetBSD PreOS: []
     
    -

    22.3.1.2. Class based preos:

    +

    22.3.1.2. Class based preos:

      -
    1. Create directory ~/.cdist/preos/ if it does not exist
    2. -
    3. Create ~/.cdist/preos/freebsd.py with the following contents:
    4. +
    5. Create directory ~/.cdist/preos/ if it does not exist

    6. +
    7. Create ~/.cdist/preos/freebsd.py with the following contents:

    -
    class FreeBSD(object):
    -    _cdist_preos = True
    +
    class FreeBSD(object):
    +    _cdist_preos = True
     
         @classmethod
         def commandline(cls, args):
    -        print("FreeBSD dummy preos: {}".format(args))
    +        print("FreeBSD dummy preos: {}".format(args))
     

    When you try to run this new preos you will get:

    -
    $ cdist preos -h
    +
    $ cdist preos -h
     Available PreOS-es:
         - debian
         - devuan
    @@ -324,42 +315,37 @@ $ cdist preos freebsd
     FreeBSD dummy preos: []
     
    -

    In the commandline function/method you have all the freedom to actually create +

    In the commandline function/method you have all the freedom to actually create a PreOS.

    -

    22.4. Simple tipical use case for using PreOS and trigger

    +

    22.4. Simple tipical use case for using PreOS and trigger

    Tipical use case for using PreOS and trigger command include the following steps.

      -
    1. Create PreOS PXE with ssh key and trigger command for installation.

      +
    2. Create PreOS PXE with ssh key and trigger command for installation.

      -
      $ cdist preos ubuntu /preos/ubuntu -b -C \
      +
      $ cdist preos ubuntu /preos/ubuntu -b -C \
           -k ~/.ssh/id_rsa.pub -p /preos/pxe \
           -t "/usr/bin/curl 192.168.111.5:3000/cdist/install/"
       
    3. -
    4. Configure dhcp server and tftp server.

      -
    5. -
    6. On cdist host (192.168.111.5 from above) start trigger command (it will use +

    7. Configure dhcp server and tftp server.

    8. +
    9. On cdist host (192.168.111.5 from above) start trigger command (it will use default init manifest for installation).

      -
      $ cdist trigger -b -v
      +
      $ cdist trigger -b -v
       
    10. -
    11. After all is set up start new machines (PXE boot).

      -
    12. -
    13. New machine boots and executes trigger command, i.e. triggers installation.

      -
    14. -
    15. Cdist trigger server starts installing host that has triggered it.

      -
    16. -
    17. After cdist install is finished new host is installed.

      -
    18. +
    19. After all is set up start new machines (PXE boot).

    20. +
    21. New machine boots and executes trigger command, i.e. triggers installation.

    22. +
    23. Cdist trigger server starts installing host that has triggered it.

    24. +
    25. After cdist install is finished new host is installed.

    diff --git a/src/extra/manual/beta/cdist-quickstart.html b/src/extra/manual/beta/cdist-quickstart.html index e6ccee16..0d82e9f4 100644 --- a/src/extra/manual/beta/cdist-quickstart.html +++ b/src/extra/manual/beta/cdist-quickstart.html @@ -8,7 +8,7 @@ - 7. Quickstart — cdist 6.5.6 documentation + 7. Quickstart — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -173,7 +164,7 @@
  • Docs »
  • -
  • 7. Quickstart
  • +
  • 7. Quickstart
  • @@ -193,7 +184,7 @@
    -

    7. Quickstart

    +

    7. Quickstart

    This tutorial is aimed at people learning cdist and shows typical approaches as well as gives an easy start into the world of configuration management.

    @@ -209,7 +200,7 @@ and usually logs into the target host as the of the target host to allow root logins: Edit the file /etc/ssh/sshd_config and add one of the following lines:

    -
    # Allow login only via public key
    +
    # Allow login only via public key
     PermitRootLogin without-password
     
     # Allow login via password and public key
    @@ -218,7 +209,7 @@ lines:

    As cdist uses ssh intensively, it is recommended to setup authentication with public keys:

    -
    # Generate pubkey pair as a normal user
    +
    # Generate pubkey pair as a normal user
     ssh-keygen
     
     # Copy pubkey over to target host
    @@ -227,7 +218,7 @@ with public keys:

    Have a look at ssh-agent(1) and ssh-add(1) on how to cache the password for your public key. Usually it looks like this:

    -
    # Start agent and export variables
    +
    # Start agent and export variables
     eval `ssh-agent`
     
     # Add keys (requires password for every identity file)
    @@ -241,7 +232,7 @@ documentation.

    As soon as you are able to login without password to localhost, we can use cdist to configure it. You can copy and paste the following code into your shell to get started and configure localhost:

    -
    # Get cdist
    +
    # Get cdist
     git clone git@code.ungleich.ch:ungleich-public/cdist.git
     
     # Create manifest (maps configuration to host(s)
    diff --git a/src/extra/manual/beta/cdist-real-world.html b/src/extra/manual/beta/cdist-real-world.html
    index 2e5fe010..116e0e38 100644
    --- a/src/extra/manual/beta/cdist-real-world.html
    +++ b/src/extra/manual/beta/cdist-real-world.html
    @@ -8,7 +8,7 @@
       
       
       
    -  8. Dive into real world cdist — cdist 6.5.6 documentation
    +  8. Dive into real world cdist — cdist 6.6.0 documentation
       
     
       
    @@ -20,20 +20,11 @@
       
       
         
    -      
    -        
    -        
    -        
    +      
    +        
    +        
    +        
    +        
         
         
     
    @@ -72,7 +63,7 @@
                 
                 
                   
    - 6.5.6 + 6.6.0
    @@ -126,7 +117,7 @@
  • 8.9. Creating python bottle application
  • 8.10. What's next?
  • @@ -200,7 +191,7 @@
  • Docs »
  • -
  • 8. Dive into real world cdist
  • +
  • 8. Dive into real world cdist
  • @@ -220,9 +211,9 @@
    -

    8. Dive into real world cdist

    +

    8. Dive into real world cdist

    -

    8.1. Introduction

    +

    8.1. Introduction

    This walkthrough shows real world cdist configuration example.

    Sample target host is named test.ungleich.ch. Just replace test.ungleich.ch with your target hostname.

    @@ -235,12 +226,12 @@ For HTTPS we will use Let's Encrypt certificate.

    For setting up hosting we want to use cdist so we will write a new type for that. This type will:

      -
    • install required packages
    • -
    • create OS user, user home directory and application home directory
    • -
    • create PostgreSQL database
    • -
    • configure uWSGI
    • -
    • configure Let's Encrypt certificate
    • -
    • configure nginx.
    • +
    • install required packages

    • +
    • create OS user, user home directory and application home directory

    • +
    • create PostgreSQL database

    • +
    • configure uWSGI

    • +
    • configure Let's Encrypt certificate

    • +
    • configure nginx.

    Our type will not create the actual python application. Its intention is only to configure hosting for specified user and project. It is up to the user to @@ -248,11 +239,11 @@ create his/her applications.

    So let's start.

    -

    8.2. Creating type layout

    +

    8.2. Creating type layout

    We will create a new custom type. Let's call it __sample_bottle_hosting.

    Go to ~/.cdist/type directory (create it if it does not exist) and create new type layout:

    -
    cd ~/.cdist/type
    +
    cd ~/.cdist/type
     mkdir __sample_bottle_hosting
     cd __sample_bottle_hosting
     touch manifest gencode-remote
    @@ -262,20 +253,20 @@ new type layout:

    -

    8.3. Creating __sample_bottle_hosting type parameters

    +

    8.3. Creating __sample_bottle_hosting type parameters

    Our type will be configurable through the means of parameters. Let's define the following parameters:

    -
    -
    projectname
    -
    name for the project, needed for uWSGI ini file
    -
    user
    -
    user name
    -
    domain
    -
    target host domain, needed for Let's Encrypt certificate.
    +
    +
    projectname

    name for the project, needed for uWSGI ini file

    +
    +
    user

    user name

    +
    +
    domain

    target host domain, needed for Let's Encrypt certificate.

    +

    We define parameters to make our type reusable for different projects, user and domain.

    Define required parameters:

    -
    printf "projectname\n" >> parameter/required
    +
    printf "projectname\n" >> parameter/required
     printf "user\n" >> parameter/required
     printf "domain\n" >> parameter/required
     
    @@ -283,12 +274,12 @@ the following parameters:

    For details on type parameters see Defining parameters.

    -

    8.4. Creating __sample_bottle_hosting type manifest

    +

    8.4. Creating __sample_bottle_hosting type manifest

    Next step is to define manifest (~/.cdist/type/__sample_bottle_hosting/manifest). We also want our type to currently support only Devuan. So we will start by checking target host OS. We will use os global explorer:

    -
    os=$(cat "$__global/explorer/os")
    +
    os=$(cat "$__global/explorer/os")
     
     case "$os" in
         devuan)
    @@ -309,10 +300,10 @@ configuration locations (e.g. nginx config directory could be in /usr/local tree
     If we detected unsupported OS we should error out. cdist will stop configuration
     process and output error message.

    -

    8.4.1. Creating user and user directories

    +

    8.4.1. Creating user and user directories

    Then we create user and his/her home directory and application home directory. We will use existing cdist types __user and __directory:

    -
    user="$(cat "$__object/parameter/user")"
    +
    user="$(cat "$__object/parameter/user")"
     home="/home/$user"
     apphome="$home/app"
     
    @@ -333,11 +324,11 @@ home directory is created after both user and user home directo
     For details on require see Dependencies.

    -

    8.4.2. Installing packages

    +

    8.4.2. Installing packages

    Install required packages using existing __package type. Before installing package we want to update apt package index using __apt_update_index:

    -
    # define packages that need to be installed
    +
    # define packages that need to be installed
     packages_to_install="nginx uwsgi-plugin-python3 python3-dev python3-pip postgresql postgresql-contrib libpq-dev python3-venv uwsgi python3-psycopg2"
     
     # update package index
    @@ -353,7 +344,7 @@ for each member in a list we define in packages_to_install vari
     This is much nicer then having as many require="__apt_update_index" __package
     lines as there are packages we want to install.

    For python packages we use __package_pip:

    -
    # install pip3 packages
    +
    # install pip3 packages
     for package in bottle bottle-pgsql; do
         __package_pip --pip pip3 $package
     done
    @@ -361,10 +352,10 @@ done
     
    -

    8.4.3. Creating PostgreSQL database

    +

    8.4.3. Creating PostgreSQL database

    Create PostgreSQL database using __postgres_database and __postgres_role for creating database user:

    -
    #PostgreSQL db & user
    +
    #PostgreSQL db & user
     postgres_server=postgresql
     
     # create PostgreSQL db user
    @@ -376,9 +367,9 @@ require="__postgres_role/$user __package/postgresql" __postgres_databa
     
    -

    8.4.4. Configuring uWSGI

    +

    8.4.4. Configuring uWSGI

    Configure uWSGI using __file type:

    -
    # configure uWSGI
    +
    # configure uWSGI
     projectname="$(cat "$__object/parameter/projectname")"
     require="__package/uwsgi" __file /etc/uwsgi/apps-enabled/$user.ini \
                 --owner root --group root --mode 0644 \
    @@ -403,29 +394,29 @@ EOF
     Installation of uWSGI also creates configuration layout: /etc/uwsgi/apps-enabled.
     If this directory does not exist then __file type would error.
     We also use stdin as file content source. For details see Input from stdin.
    -For feading stdin we use here-document (<< operator). It allows redirection of subsequent
    +For feeding stdin we use here-document (<< operator). It allows redirection of subsequent
     lines read by the shell to the input of a command until a line containing only the delimiter
     and a newline, with no blank characters in between (EOF in our case).

    -

    8.4.5. Configuring nginx for Let's Encrypt and HTTPS redirection

    +

    8.4.5. Configuring nginx for Let's Encrypt and HTTPS redirection

    Next configure nginx for Let's Encrypt and for HTTP -> HTTPS redirection. For this purpose we will create new type __sample_nginx_http_letsencrypt_and_ssl_redirect and use it here:

    -
    domain="$(cat "$__object/parameter/domain")"
    +
    domain="$(cat "$__object/parameter/domain")"
     webroot="/var/www/html"
     __sample_nginx_http_letsencrypt_and_ssl_redirect "$domain" --webroot "$webroot"
     
    -

    8.4.6. Configuring certificate creation

    +

    8.4.6. Configuring certificate creation

    After HTTP nginx configuration we will create Let's Encrypt certificate using __letsencrypt_cert type. For Let's Encrypt cert configuration ensure that there is a DNS entry for your domain. We assure that cert creation is applied after nginx HTTP is configured for Let's Encrypt to work:

    -
    # create SSL cert
    +
    # create SSL cert
     require="__package/nginx __sample_nginx_http_letsencrypt_and_ssl_redirect/$domain" \
         __letsencrypt_cert --admin-email admin@test.ungleich.ch \
             --webroot "$webroot" \
    @@ -437,9 +428,9 @@ for Let's Encrypt to work:

    -

    8.4.7. Configuring nginx HTTPS server with uWSGI upstream

    +

    8.4.7. Configuring nginx HTTPS server with uWSGI upstream

    Then we can configure nginx HTTPS server that will use created Let's Encrypt certificate:

    -
    # configure nginx
    +
    # configure nginx
     require="__package/nginx __letsencrypt_cert/$domain" \
         __file "/etc/nginx/sites-enabled/https-$domain" \
         --source - --mode 0644 << EOF
    @@ -476,10 +467,10 @@ EOF
     

    Now our manifest is finished.

    -

    8.4.8. Complete __sample_bottle_hosting type manifest listing

    +

    8.4.8. Complete __sample_bottle_hosting type manifest listing

    Here is complete __sample_bottle_hosting type manifest listing, located in ~/.cdist/type/__sample_bottle_hosting/manifest:

    -
    #!/bin/sh
    +
    #!/bin/sh
     
     os=$(cat "$__global/explorer/os")
     
    @@ -600,20 +591,20 @@ EOF
     
    -

    8.5. Creating __sample_bottle_hosting type gencode-remote

    +

    8.5. Creating __sample_bottle_hosting type gencode-remote

    Now define gencode-remote script: ~/.cdist/type/__sample_bottle_hosting/gencode-remote. After manifest is applied it should restart uWSGI and nginx services so that our configuration is active. Our gencode-remote looks like the following:

    -
    echo "service uwsgi restart"
    +
    echo "service uwsgi restart"
     echo "service nginx restart"
     

    Our __sample_bottle_hosting type is now finished.

    -

    8.6. Creating __sample_nginx_http_letsencrypt_and_ssl_redirect type

    +

    8.6. Creating __sample_nginx_http_letsencrypt_and_ssl_redirect type

    Let's now create __sample_nginx_http_letsencrypt_and_ssl_redirect type:

    -
    cd ~/.cdist/type
    +
    cd ~/.cdist/type
     mkdir __sample_nginx_http_letsencrypt_and_ssl_redirect
     cd __sample_nginx_http_letsencrypt_and_ssl_redirect
     mkdir parameter
    @@ -623,7 +614,7 @@ configuration is active. Our gencode-remote looks like the following:

    Edit manifest:

    -
    domain="$__object_id"
    +
    domain="$__object_id"
     webroot="$(cat "$__object/parameter/webroot")"
     # make sure we have nginx package
     __package nginx
    @@ -651,14 +642,14 @@ EOF
     

    Edit gencode-remote:

    -
    echo "service nginx reload"
    +
    echo "service nginx reload"
     
    -

    8.7. Creating init manifest

    +

    8.7. Creating init manifest

    Next create init manifest:

    -
    cd ~/.cdist/manifest
    +
    cd ~/.cdist/manifest
     printf "__sample_bottle_hosting --projectname sample --user app --domain \$__target_host sample\n" > sample
     
    @@ -670,28 +661,28 @@ Here the last positional argument sample is type's object id. For detai reference.

    -

    8.8. Configuring host

    +

    8.8. Configuring host

    Finally configure test.ungleich.ch:

    -
    cdist config -v -i ~/.cdist/manifest/sample test.ungleich.ch
    +
    cdist config -v -i ~/.cdist/manifest/sample test.ungleich.ch
     

    After cdist configuration is successfully finished our host is ready.

    -

    8.9. Creating python bottle application

    +

    8.9. Creating python bottle application

    We now need to create Bottle application. As you remember from the beginning of this walkthrough our type does not create the actual python application, its intention is only to configure hosting for specified user and project. It is up to the user to create his/her applications.

    Become app user:

    -
    su -l app
    +
    su -l app
     
    -

    8.9.1. Preparing database

    +

    8.9.1. Preparing database

    We need to prepare database for our application. Create table and insert some items:

    -
    psql -c "create table items (item varchar(255));"
    +
    psql -c "create table items (item varchar(255));"
     
     psql -c "insert into items(item) values('spam');"
     psql -c "insert into items(item) values('eggs');"
    @@ -700,15 +691,15 @@ insert some items:

    -

    8.9.2. Creating application

    +

    8.9.2. Creating application

    Next create sample app:

    -
    cd /home/app/app
    +
    cd /home/app/app
     mkdir sample
     cd sample
     

    Create app.py with the following content:

    -
    #!/usr/bin/env python3
    +
    #!/usr/bin/env python3
     
     import bottle
     import bottle_pgsql
    @@ -732,7 +723,7 @@ insert some items:

    Create wsgi.py with the following content:

    -
    import os
    +
    import os
     
     os.chdir(os.path.dirname(__file__))
     
    @@ -744,10 +735,10 @@ insert some items:

    we have changed our wsgi.py file uWSGI reloads the application.

    Our application selects and lists items from items table.

    -
    -

    8.9.3. Openning application

    +
    +

    8.9.3. Opening application

    Finally try the application:

    -
    http://test.ungleich.ch/
    +
    http://test.ungleich.ch/
     

    It should redirect to HTTPS and return:

    @@ -762,7 +753,7 @@ we have changed our wsgi.py file uWSGI reloads the application.
    -

    8.10. What's next?

    +

    8.10. What's next?

    Continue reading next sections ;)

    diff --git a/src/extra/manual/beta/cdist-reference.html b/src/extra/manual/beta/cdist-reference.html index 47236ac7..db93e306 100644 --- a/src/extra/manual/beta/cdist-reference.html +++ b/src/extra/manual/beta/cdist-reference.html @@ -8,7 +8,7 @@ - 24. Reference — cdist 6.5.6 documentation + 24. Reference — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -181,7 +172,7 @@
  • Docs »
  • -
  • 24. Reference
  • +
  • 24. Reference
  • @@ -201,471 +192,481 @@
    -

    24. Reference

    +

    24. Reference

    Variable, path and type reference for cdist

    -

    24.1. Explorers

    +

    24.1. Explorers

    The following global explorers are available:

      -
    • cpu_cores
    • -
    • cpu_sockets
    • -
    • disks
    • -
    • hostname
    • -
    • init
    • -
    • interfaces
    • -
    • is-freebsd-jail
    • -
    • kernel_name
    • -
    • lsb_codename
    • -
    • lsb_description
    • -
    • lsb_id
    • -
    • lsb_release
    • -
    • machine
    • -
    • machine_type
    • -
    • memory
    • -
    • os
    • -
    • os_release
    • -
    • os_version
    • -
    • runlevel
    • +
    • cpu_cores

    • +
    • cpu_sockets

    • +
    • disks

    • +
    • hostname

    • +
    • init

    • +
    • interfaces

    • +
    • is-freebsd-jail

    • +
    • kernel_name

    • +
    • lsb_codename

    • +
    • lsb_description

    • +
    • lsb_id

    • +
    • lsb_release

    • +
    • machine

    • +
    • machine_type

    • +
    • memory

    • +
    • os

    • +
    • os_release

    • +
    • os_version

    • +
    • runlevel

    -

    24.2. Paths

    -
    -
    $HOME/.cdist
    -
    The standard cdist configuration directory relative to your home directory. -This is usually the place you want to store your site specific configuration.
    -
    cdist/conf/
    -
    The distribution configuration directory. -This contains types and explorers to be used.
    -
    cdist/inventory/
    -
    The distribution inventory directory. -This path is relative to cdist installation directory.
    -
    cdist/preos/
    -
    The distribution PreOS plugins directory.
    -
    confdir
    -
    Cdist will use all available configuration directories and create +

    24.2. Paths

    +
    +
    $HOME/.cdist

    The standard cdist configuration directory relative to your home directory. +This is usually the place you want to store your site specific configuration.

    +
    +
    cdist/conf/

    The distribution configuration directory. +This contains types and explorers to be used.

    +
    +
    cdist/inventory/

    The distribution inventory directory. +This path is relative to cdist installation directory.

    +
    +
    cdist/preos/

    The distribution PreOS plugins directory.

    +
    +
    confdir

    Cdist will use all available configuration directories and create a temporary confdir containing links to the real configuration directories. This way it is possible to merge configuration directories. By default it consists of everything in $HOME/.cdist and cdist/conf/. -For more details see cdist(1).

    -
    confdir/files/
    -
    Cdist does not care about this directory besides providing access to it. -It is thought to be a general file storage area.
    -
    confdir/manifest/init
    -
    This is the central entry point. +For more details see cdist(1).

    +
    +
    confdir/files/

    Cdist does not care about this directory besides providing access to it. +It is thought to be a general file storage area.

    +
    +
    confdir/manifest/init

    This is the central entry point. It is an executable (+x bit set) shell script that can use values from the explorers to decide which configuration to create for the specified target host. -Its intent is to used to define mapping from configurations to hosts.

    -
    confdir/manifest/*
    -
    All other files in this directory are not directly used by cdist, but you +Its intent is to used to define mapping from configurations to hosts.

    +
    +
    confdir/manifest/*

    All other files in this directory are not directly used by cdist, but you can separate configuration mappings, if you have a lot of code in the conf/manifest/init file. This may also be helpful to have different admins -maintain different groups of hosts.

    -
    confdir/explorer/<name>
    -
    Contains explorers to be run on the target hosts, see cdist explorer.
    -
    confdir/type/
    -
    Contains all available types, which are used to provide -some kind of functionality. See cdist type.
    -
    confdir/type/<name>/
    -
    Home of the type <name>. -This directory is referenced by the variable __type (see below).
    -
    confdir/type/<name>/man.rst
    -
    Manpage in reStructuredText format (required for inclusion into upstream).
    -
    confdir/type/<name>/manifest
    -
    Used to generate additional objects from a type.
    -
    confdir/type/<name>/gencode-local
    -
    Used to generate code to be executed on the source host.
    -
    confdir/type/<name>/gencode-remote
    -
    Used to generate code to be executed on the target host.
    -
    confdir/type/<name>/parameter/required
    -
    Parameters required by type, n separated list.
    -
    confdir/type/<name>/parameter/optional
    -
    Parameters optionally accepted by type, n separated list.
    -
    confdir/type/<name>/parameter/default/*
    -
    Default values for optional parameters. +maintain different groups of hosts.

    +
    +
    confdir/explorer/<name>

    Contains explorers to be run on the target hosts, see cdist explorer.

    +
    +
    confdir/type/

    Contains all available types, which are used to provide +some kind of functionality. See cdist type.

    +
    +
    confdir/type/<name>/

    Home of the type <name>. +This directory is referenced by the variable __type (see below).

    +
    +
    confdir/type/<name>/man.rst

    Manpage in reStructuredText format (required for inclusion into upstream).

    +
    +
    confdir/type/<name>/manifest

    Used to generate additional objects from a type.

    +
    +
    confdir/type/<name>/gencode-local

    Used to generate code to be executed on the source host.

    +
    +
    confdir/type/<name>/gencode-remote

    Used to generate code to be executed on the target host.

    +
    +
    confdir/type/<name>/parameter/required

    Parameters required by type, n separated list.

    +
    +
    confdir/type/<name>/parameter/optional

    Parameters optionally accepted by type, n separated list.

    +
    +
    confdir/type/<name>/parameter/default/*

    Default values for optional parameters. Assuming an optional parameter name of 'foo', it's default value would -be read from the file confdir/type/<name>/parameter/default/foo.

    -
    confdir/type/<name>/parameter/boolean
    -
    Boolean parameters accepted by type, n separated list.
    -
    confdir/type/<name>/explorer
    -
    Location of the type specific explorers. +be read from the file confdir/type/<name>/parameter/default/foo.

    +
    +
    confdir/type/<name>/parameter/boolean

    Boolean parameters accepted by type, n separated list.

    +
    +
    confdir/type/<name>/explorer

    Location of the type specific explorers. This directory is referenced by the variable __type_explorer (see below). -See cdist explorer.

    -
    confdir/type/<name>/files
    -
    This directory is reserved for user data and will not be used +See cdist explorer.

    +
    +
    confdir/type/<name>/files

    This directory is reserved for user data and will not be used by cdist at any time. It can be used for storing supplementary -files (like scripts to act as a template or configuration files).

    -
    out/
    -
    This directory contains output of cdist and is usually located +files (like scripts to act as a template or configuration files).

    +
    +
    out/

    This directory contains output of cdist and is usually located in a temporary directory and thus will be removed after the run. -This directory is referenced by the variable __global (see below).

    -
    out/explorer
    -
    Output of general explorers.
    -
    out/object
    -
    Objects created for the host.
    -
    out/object/<object>
    -
    Contains all object specific information. -This directory is referenced by the variable __object (see below).
    -
    out/object/<object>/explorers
    -
    Output of type specific explorers, per object.
    +This directory is referenced by the variable __global (see below).

    +
    +
    out/explorer

    Output of general explorers.

    +
    +
    out/object

    Objects created for the host.

    +
    +
    out/object/<object>

    Contains all object specific information. +This directory is referenced by the variable __object (see below).

    +
    +
    out/object/<object>/explorers

    Output of type specific explorers, per object.

    +
    -

    24.3. Types

    +

    24.3. Types

    The following types are available:

    -

    24.4. Objects

    +

    24.4. Objects

    For object to object communication and tests, the following paths are usable within a object directory:

    -
    -
    files
    -
    This directory is reserved for user data and will not be used +
    +
    files

    This directory is reserved for user data and will not be used by cdist at any time. It can be used freely by the type -(for instance to store template results).

    -
    changed
    -
    This empty file exists in an object directory, if the object has -code to be executed (either remote or local).
    -
    stdin
    -
    This file exists and contains data, if data was provided on stdin -when the type was called.
    +(for instance to store template results).

    +
    +
    changed

    This empty file exists in an object directory, if the object has +code to be executed (either remote or local).

    +
    +
    stdin

    This file exists and contains data, if data was provided on stdin +when the type was called.

    +
    -

    24.5. Environment variables (for reading)

    +

    24.5. Environment variables (for reading)

    The following environment variables are exported by cdist:

    -
    -
    __cdist_log_level, __cdist_log_level_name
    -

    cdist log level value and cdist log level name. One of:

    - +
    +
    __cdist_log_level, __cdist_log_level_name

    cdist log level value and cdist log level name. One of:

    +
    --++ - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + +
    Log level nameLog level value

    Log level name

    Log level value

    OFF60

    OFF

    60

    ERROR40

    ERROR

    40

    WARNING30

    WARNING

    30

    INFO20

    INFO

    20

    VERBOSE15

    VERBOSE

    15

    DEBUG10

    DEBUG

    10

    TRACE5

    TRACE

    5

    -

    Available for: initial manifest, explorer, type manifest, type explorer, +

    Available for: initial manifest, explorer, type manifest, type explorer, type gencode.

    -
    __cdist_dry_run
    -
    Is set only when doing dry run (-n flag). -Available for: initial manifest, explorer, type manifest, type explorer, -type gencode.
    -
    __explorer
    -
    Directory that contains all global explorers. -Available for: initial manifest, explorer, type explorer, shell.
    -
    __files
    -
    Directory that contains content from the "files" subdirectories -from the configuration directories. -Available for: initial manifest, type manifest, type gencode, shell.
    -
    __manifest
    -
    Directory that contains the initial manifest. -Available for: initial manifest, type manifest, shell.
    -
    __global
    -
    Directory that contains generic output like explorer. -Available for: initial manifest, type manifest, type gencode, shell.
    -
    __messages_in
    -
    File to read messages from. -Available for: initial manifest, type manifest, type gencode.
    -
    __messages_out
    -
    File to write messages. -Available for: initial manifest, type manifest, type gencode.
    -
    __object
    -
    Directory that contains the current object. -Available for: type manifest, type explorer, type gencode and code scripts.
    -
    __object_id
    -
    The type unique object id. -Available for: type manifest, type explorer, type gencode and code scripts. -Note: The leading and the trailing "/" will always be stripped (caused by -the filesystem database and ensured by the core). -Note: Double slashes ("//") will not be fixed and result in an error.
    -
    __object_name
    -
    The full qualified name of the current object. -Available for: type manifest, type explorer, type gencode.
    -
    __target_host
    -
    The host we are deploying to. This is primary variable. It's content is -literally the one user passed in. -Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell.
    -
    __target_hostname
    -
    The hostname of host we are deploying to. This variable is derived from +
    __cdist_colored_log

    whether or not cdist's log has colors enabled. +Is set to the string true if cdist's output is using colors, +otherwise the variable contains the string false.

    +

    Available for: initial manifest, explorer, type manifest, type explorer, +type gencode.

    +
    +
    __cdist_dry_run

    Is set only when doing dry run (-n flag).

    +

    Available for: initial manifest, explorer, type manifest, type explorer, +type gencode.

    +
    +
    __explorer

    Directory that contains all global explorers.

    +

    Available for: initial manifest, explorer, type explorer, shell.

    +
    +
    __files

    Directory that contains content from the "files" subdirectories +from the configuration directories.

    +

    Available for: initial manifest, type manifest, type gencode, shell.

    +
    +
    __manifest

    Directory that contains the initial manifest.

    +

    Available for: initial manifest, type manifest, shell.

    +
    +
    __global

    Directory that contains generic output like explorer.

    +

    Available for: initial manifest, type manifest, type gencode, shell.

    +
    +
    __messages_in

    File to read messages from.

    +

    Available for: initial manifest, type manifest, type gencode.

    +
    +
    __messages_out

    File to write messages.

    +

    Available for: initial manifest, type manifest, type gencode.

    +
    +
    __object

    Directory that contains the current object.

    +

    Available for: type manifest, type explorer, type gencode and code scripts.

    +
    +
    __object_id

    The type unique object id.

    +

    Available for: type manifest, type explorer, type gencode and code scripts.

    +
    +
    Note: The leading and the trailing "/" will always be stripped (caused by +the filesystem database and ensured by the core).
    +
    Note: Double slashes ("//") will not be fixed and result in an error.
    +
    +
    +
    __object_name

    The full qualified name of the current object.

    +

    Available for: type manifest, type explorer, type gencode.

    +
    +
    __target_host

    The host we are deploying to. This is primary variable. It's content is +literally the one user passed in.

    +

    Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell.

    +
    +
    __target_hostname

    The hostname of host we are deploying to. This variable is derived from __target_host (using socket.getaddrinfo(__target_host) and then -socket.gethostbyaddr()). -Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell.

    -
    __target_fqdn
    -
    The fully qualified domain name of the host we are deploying to. +socket.gethostbyaddr()).

    +

    Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell.

    +
    +
    __target_fqdn

    The fully qualified domain name of the host we are deploying to. This variable is derived from __target_host -(using socket.getfqdn()). -Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell.

    -
    __target_host_tags
    -
    Comma separated list of target host tags. -Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell.
    -
    __type
    -
    Path to the current type. -Available for: type manifest, type gencode.
    -
    __type_explorer
    -
    Directory that contains the type explorers. -Available for: type explorer.
    +(using socket.getfqdn()).

    +

    Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell.

    + +
    __target_host_tags

    Comma separated list of target host tags.

    +

    Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell.

    +
    +
    __type

    Path to the current type.

    +

    Available for: type manifest, type gencode.

    +
    +
    __type_explorer

    Directory that contains the type explorers.

    +

    Available for: type explorer.

    +
    -

    24.6. Environment variables (for writing)

    +

    24.6. Environment variables (for writing)

    The following environment variables influence the behaviour of cdist:

    -
    -
    require
    -
    Setup dependencies between objects (see cdist manifest).
    -
    __cdist_log_level
    -

    cdist log level value. One of:

    - +
    +
    require

    Setup dependencies between objects (see cdist manifest).

    +
    +
    __cdist_log_level

    cdist log level value. One of:

    +
    --++ - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + +
    Log levelLog level value

    Log level

    Log level value

    OFF60

    OFF

    60

    ERROR40

    ERROR

    40

    WARNING30

    WARNING

    30

    INFO20

    INFO

    20

    VERBOSE15

    VERBOSE

    15

    DEBUG10

    DEBUG

    10

    TRACE5

    TRACE

    5

    -

    If set cdist will set this log level in +

    If set cdist will set this log level in accordance with configuration rules. If cdist invokation is used in types then nested cdist will honor this specified log level if not specified otherwise while invoking it.

    -
    CDIST_PATH
    -
    Colon delimited list of config directories.
    -
    CDIST_LOCAL_SHELL
    -
    Use this shell locally instead of /bin/sh to execute scripts.
    -
    CDIST_REMOTE_SHELL
    -
    Use this shell remotely instead of /bin/sh to execute scripts.
    -
    CDIST_OVERRIDE
    -
    Allow overwriting type parameters (see cdist manifest).
    -
    CDIST_ORDER_DEPENDENCY
    -
    Create dependencies based on the execution order (see cdist manifest). -Note that in version 6.2.0 semantic of this processing mode is finally fixed and well defined.
    -
    CDIST_REMOTE_EXEC
    -
    Use this command for remote execution (should behave like ssh).
    -
    CDIST_REMOTE_COPY
    -
    Use this command for remote copy (should behave like scp).
    -
    CDIST_INVENTORY_DIR
    -
    Use this directory as inventory directory.
    -
    CDIST_BETA
    -
    Enable beta functionalities.
    -
    CDIST_CACHE_PATH_PATTERN
    -
    Custom cache path pattern.
    +
    CDIST_PATH

    Colon delimited list of config directories.

    +
    +
    CDIST_LOCAL_SHELL

    Use this shell locally instead of /bin/sh to execute scripts.

    +
    +
    CDIST_REMOTE_SHELL

    Use this shell remotely instead of /bin/sh to execute scripts.

    +
    +
    CDIST_OVERRIDE

    Allow overwriting type parameters (see cdist manifest).

    +
    +
    CDIST_ORDER_DEPENDENCY

    Create dependencies based on the execution order (see cdist manifest). +Note that in version 6.2.0 semantic of this processing mode is finally fixed and well defined.

    +
    +
    CDIST_REMOTE_EXEC

    Use this command for remote execution (should behave like ssh).

    +
    +
    CDIST_REMOTE_COPY

    Use this command for remote copy (should behave like scp).

    +
    +
    CDIST_INVENTORY_DIR

    Use this directory as inventory directory.

    +
    +
    CDIST_BETA

    Enable beta functionalities.

    +
    +
    CDIST_COLORED_OUTPUT

    Colorize cdist's output. If enabled, cdist will use different colors for +different log levels. +Recognized values are 'always', 'never', and 'auto' (the default).

    +
    +
    CDIST_CACHE_PATH_PATTERN

    Custom cache path pattern.

    +
    diff --git a/src/extra/manual/beta/cdist-remote-exec-copy.html b/src/extra/manual/beta/cdist-remote-exec-copy.html index 7e79fc84..105e52cf 100644 --- a/src/extra/manual/beta/cdist-remote-exec-copy.html +++ b/src/extra/manual/beta/cdist-remote-exec-copy.html @@ -8,7 +8,7 @@ - 29. Remote exec and copy commands — cdist 6.5.6 documentation + 29. Remote exec and copy commands — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -173,7 +164,7 @@
  • Docs »
  • -
  • 29. Remote exec and copy commands
  • +
  • 29. Remote exec and copy commands
  • @@ -193,15 +184,15 @@
    -

    29. Remote exec and copy commands

    +

    29. Remote exec and copy commands

    Cdist interacts with the target host in two ways:

      -
    • it executes code (__remote_exec)
    • -
    • and it copies files (__remote_copy)
    • +
    • it executes code (__remote_exec)

    • +
    • and it copies files (__remote_copy)

    By default this is accomplished with ssh and scp respectively. The default implementations used by cdist are:

    -
    __remote_exec: ssh -o User=root
    +
    __remote_exec: ssh -o User=root
     __remote_copy: scp -o User=root
     
    diff --git a/src/extra/manual/beta/cdist-saving-output-streams.html b/src/extra/manual/beta/cdist-saving-output-streams.html index 4e5a3fd8..9567b819 100644 --- a/src/extra/manual/beta/cdist-saving-output-streams.html +++ b/src/extra/manual/beta/cdist-saving-output-streams.html @@ -8,7 +8,7 @@ - 28. Saving output streams — cdist 6.5.6 documentation + 28. Saving output streams — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -176,7 +167,7 @@
  • Docs »
  • -
  • 28. Saving output streams
  • +
  • 28. Saving output streams
  • @@ -196,9 +187,9 @@
    -

    28. Saving output streams

    +

    28. Saving output streams

    -

    28.1. Description

    +

    28.1. Description

    Since version 4.8.0 cdist, by default, saves output streams to local cache. Saving output streams is implemented because important information was lost during a config run, hidden in all other output. @@ -210,7 +201,7 @@ on these cache files see L

    Also, in case of an error, cdist can now exit and show all information it has about the error.

    For example:

    -
    $ ./bin/cdist config -v -i ~/.cdist/manifest/init-output-streams $(cat ~/ungleich/data/opennebula-debian9-test )
    +
    $ ./bin/cdist config -v -i ~/.cdist/manifest/init-output-streams $(cat ~/ungleich/data/opennebula-debian9-test )
     INFO: 185.203.112.42: Starting configuration run
     INFO: 185.203.112.42: Processing __myline/test
     ERROR: 185.203.112.42: Command failed: '/bin/sh -e /tmp/tmpow6cwemh/75ee6a79e32da093da23fe4a13dd104b/data/object/__myline/test/.cdist-kisrqlpw/code-local'
    @@ -250,7 +241,7 @@ discovered.

    There is also an option -S/--disable-saving-output-streams for disabling saving output streams. In this case error reporting can look like this:

    -
    $ ./bin/cdist config -v -S -i ~/.cdist/manifest/init-output-streams $(cat ~/ungleich/data/opennebula-debian9-test )
    +
    $ ./bin/cdist config -v -S -i ~/.cdist/manifest/init-output-streams $(cat ~/ungleich/data/opennebula-debian9-test )
     INFO: 185.203.112.42: Starting configuration run
     test stdout output streams
     test stderr output streams
    diff --git a/src/extra/manual/beta/cdist-stages.html b/src/extra/manual/beta/cdist-stages.html
    index 6bfb9b05..04d64585 100644
    --- a/src/extra/manual/beta/cdist-stages.html
    +++ b/src/extra/manual/beta/cdist-stages.html
    @@ -8,7 +8,7 @@
       
       
       
    -  26. Execution stages — cdist 6.5.6 documentation
    +  26. Execution stages — cdist 6.6.0 documentation
       
     
       
    @@ -20,20 +20,11 @@
       
       
         
    -      
    -        
    -        
    -        
    +      
    +        
    +        
    +        
    +        
         
         
     
    @@ -72,7 +63,7 @@
                 
                 
                   
    - 6.5.6 + 6.6.0
    @@ -184,7 +175,7 @@
  • Docs »
  • -
  • 26. Execution stages
  • +
  • 26. Execution stages
  • @@ -204,20 +195,20 @@
    -

    26. Execution stages

    +

    26. Execution stages

    -

    26.1. Description

    +

    26.1. Description

    When cdist is started, it passes through different stages.

    -

    26.2. Stage 1: target information retrieval

    +

    26.2. Stage 1: target information retrieval

    In this stage information is collected about the target host using so called explorers. Every existing explorer is run on the target and the output of all explorers are copied back into the local cache. The results can be used by manifests and types.

    -

    26.3. Stage 2: run the initial manifest

    +

    26.3. Stage 2: run the initial manifest

    The initial manifest, which should be used for mappings of hosts to types, is executed. This stage creates objects in a cconfig database that contains the objects as defined in the manifest for the specific host. In this stage, @@ -225,14 +216,14 @@ no conflicts may occur, i.e. no object of the same type with the same id may be created, if it has different parameters.

    -

    26.4. Stage 3: object information retrieval

    +

    26.4. Stage 3: object information retrieval

    Every object is checked whether its type has explorers and if so, these are executed on the target host. The results are transferred back and can be used in the following stages to decide what changes need to be made on the target to implement the desired state.

    -

    26.5. Stage 4: run the object manifest

    +

    26.5. Stage 4: run the object manifest

    Every object is checked whether its type has a executable manifest. The manifest script may generate and change the created objects. In other words, one type can reuse other types.

    @@ -243,23 +234,23 @@ may occur during the merge. A conflict would mean that two different objects try to create the same object, which indicates a broken configuration.

    -

    26.6. Stage 5: code generation

    +

    26.6. Stage 5: code generation

    In this stage for every created object its type is checked for executable gencode scripts. The gencode scripts generate the code to be executed on the target on stdout. If the gencode executables fail, they must print diagnostic messages on stderr and exit non-zero.

    -

    26.7. Stage 6: code execution

    +

    26.7. Stage 6: code execution

    For every object the resulting code from the previous stage is transferred to the target host and executed there to apply the configuration changes.

    -

    26.8. Stage 7: cache

    +

    26.8. Stage 7: cache

    The cache stores the information from the current run for later use.

    -

    26.9. Summary

    +

    26.9. Summary

    If, and only if, all the stages complete without errors, the configuration will be applied to the target.

    diff --git a/src/extra/manual/beta/cdist-support.html b/src/extra/manual/beta/cdist-support.html index 4761185c..ff02993e 100644 --- a/src/extra/manual/beta/cdist-support.html +++ b/src/extra/manual/beta/cdist-support.html @@ -8,7 +8,7 @@ - 6. Support — cdist 6.5.6 documentation + 6. Support — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -179,7 +170,7 @@
  • Docs »
  • -
  • 6. Support
  • +
  • 6. Support
  • @@ -199,25 +190,25 @@
    -

    6. Support

    +

    6. Support

    -

    6.1. Chat

    +

    6.1. Chat

    Chat with us on #cdist:ungleich.ch.

    -

    6.2. Mailing list

    +

    6.2. Mailing list

    Bug reports, questions, patches, etc. should be send to the cdist mailing list.

    -

    6.3. Linkedin

    +

    6.3. Linkedin

    If you have an account at Linked in, you can join the cdist group.

    -

    6.4. Commercial support

    +

    6.4. Commercial support

    You can request commercial support for cdist from ungleich.

    diff --git a/src/extra/manual/beta/cdist-trigger.html b/src/extra/manual/beta/cdist-trigger.html index 2707063a..dd4b08ca 100644 --- a/src/extra/manual/beta/cdist-trigger.html +++ b/src/extra/manual/beta/cdist-trigger.html @@ -8,7 +8,7 @@ - 21. Trigger — cdist 6.5.6 documentation + 21. Trigger — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -176,7 +167,7 @@
  • Docs »
  • -
  • 21. Trigger
  • +
  • 21. Trigger
  • @@ -196,19 +187,19 @@
    -

    21. Trigger

    +

    21. Trigger

    -

    21.1. Description

    +

    21.1. Description

    cdist supports triggering for host installation/configuration using trigger command. This command starts trigger server at management node, for example:

    -
    $ cdist trigger -b -v
    +
    $ cdist trigger -b -v
     

    This will start cdist trigger server in verbose mode. cdist trigger server accepts simple requests for configuration and for installation:

      -
    • /cdist/install/ for installation
    • -
    • /cdist/config/ for configuration.
    • +
    • /cdist/install/ for installation

    • +
    • /cdist/config/ for configuration.

    Other configuration parameters are the same as in like cdist config (See cdist).

    Machines can then trigger cdist trigger server with appropriate requests. @@ -221,9 +212,9 @@ host name is dervied then it is used for running cdist config. If no host name is resolved then IP address is used.

    This command returns the following response codes to client requests:

      -
    • 200 for success
    • -
    • 599 for cdist run errors
    • -
    • 500 for cdist/server errors.
    • +
    • 200 for success

    • +
    • 599 for cdist run errors

    • +
    • 500 for cdist/server errors.

    diff --git a/src/extra/manual/beta/cdist-troubleshooting.html b/src/extra/manual/beta/cdist-troubleshooting.html index c9c9d3e6..5f035c4d 100644 --- a/src/extra/manual/beta/cdist-troubleshooting.html +++ b/src/extra/manual/beta/cdist-troubleshooting.html @@ -8,7 +8,7 @@ - 31. Troubleshooting — cdist 6.5.6 documentation + 31. Troubleshooting — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -71,7 +62,7 @@
    - 6.5.6 + 6.6.0
    @@ -176,7 +167,7 @@
  • Docs »
  • -
  • 31. Troubleshooting
  • +
  • 31. Troubleshooting
  • @@ -196,13 +187,13 @@
    -

    31. Troubleshooting

    +

    31. Troubleshooting

    -

    31.1. Error in manifest is not considered an error by cdist

    +

    31.1. Error in manifest is not considered an error by cdist

    Situation: You are executing other scripts from a manifest. This script fails, but cdist does not recognise the error. An example script would be something like this:

    -
    % cat ~/.cdist/manifest/init
    +
    % cat ~/.cdist/manifest/init
     "$__manifest/special"
     % cat ~/.cdist/manifest/special
     #!/bin/sh
    @@ -219,7 +210,7 @@ code of the last echo line instead of the failing command.

    All scripts executed by cdist carry the -e flag. To prevent the above from happening, there are three solutions available, two of which can be used in the calling script:

    -
    # Execute as before, but abort on failure
    +
    # Execute as before, but abort on failure
     sh -e "$__manifest/special"
     
     # Source the script in our namespace, runs in a set -e environment:
    @@ -228,23 +219,23 @@ sh -e "$__manifest
     

    The third solution is to include a shebang header in every script you write to use the -e flag:

    -
    % cat ~/.cdist/manifest/special
    +
    % cat ~/.cdist/manifest/special
     #!/bin/sh -e
     ...
     
    -

    31.2. Using debug dump helper script

    +

    31.2. Using debug dump helper script

    Since cdist stores data to local cache that can be used for debugging there is a helper script that dumps data from local cache, cdist-dump.

    For more info see:

    -
    cdist-dump -h
    +
    cdist-dump -h
     

    Or from cdist git cloned directory:

    -
    ./scripts/cdist-dump -h
    +
    ./scripts/cdist-dump -h
     
    diff --git a/src/extra/manual/beta/cdist-type.html b/src/extra/manual/beta/cdist-type.html index 7fb9d258..3994b881 100644 --- a/src/extra/manual/beta/cdist-type.html +++ b/src/extra/manual/beta/cdist-type.html @@ -8,7 +8,7 @@ - 15. cdist type — cdist 6.5.6 documentation + 15. cdist type — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -204,7 +195,7 @@
  • Docs »
  • -
  • 15. cdist type
  • +
  • 15. cdist type
  • @@ -224,25 +215,25 @@
    -

    15. cdist type

    +

    15. cdist type

    -

    15.1. Description

    +

    15.1. Description

    Types are the main component of cdist and define functionality. If you use cdist, you'll write a type for every functionality you would like to use.

    -

    15.2. Synopsis

    -
    __TYPE ID --parameter value [--parameter value ...]
    +

    15.2. Synopsis

    +
    __TYPE ID --parameter value [--parameter value ...]
     __TYPE --parameter value [--parameter value ...] (for singletons)
     
    -

    15.3. How to use a type

    +

    15.3. How to use a type

    You can use types from the initial manifest or the type manifest like a normal shell command:

    -
    # Creates empty file /etc/cdist-configured
    +
    # Creates empty file /etc/cdist-configured
     __file /etc/cdist-configured --type file
     
     # Ensure tree is installed
    @@ -252,12 +243,12 @@ __package tree --state installed
     

    A list of supported types can be found in the cdist reference manpage.

    -

    15.4. Singleton types

    +

    15.4. Singleton types

    If a type is flagged as a singleton, it may be used only once per host. This is useful for types which can be used only once on a system. Singleton types do not take an object name as argument.

    Example:

    -
    # __issue type manages /etc/issue
    +
    # __issue type manages /etc/issue
     __issue
     
     # Probably your own type - singletons may use parameters
    @@ -266,28 +257,28 @@ __myfancysingleton --colour green
     
    -

    15.5. Config types

    +

    15.5. Config types

    By default types are used with config command. These are types that are not flagged by any known command flag. If a type is marked then it will be skipped with config command.

    -

    15.6. Install types

    +

    15.6. Install types

    If a type is flagged with 'install' flag then it is used only with install command. With other commands, i.e. config, these types are skipped if used.

    -

    15.7. Nonparallel types

    +

    15.7. Nonparallel types

    If a type is flagged with 'nonparallel' flag then its objects cannot be run in parallel when using -j option. Example of such a type is __package_dpkg type where dpkg itself prevents to be run in more than one instance.

    -

    15.8. Deprecated types

    +

    15.8. Deprecated types

    If a type is flagged with 'deprecated' marker then it is considered deprecated. When it is used cdist writes warning line. If 'deprecated' marker has content then this content is printed as a deprecation messages, e.g.:

    -
    $ ls -l deprecated
    +
    $ ls -l deprecated
     -rw-r--r--  1 darko  darko  71 May 20 18:30 deprecated
     $ cat deprecated
     This type is deprecated. It will be removed in the next minor release.
    @@ -296,7 +287,7 @@ WARNING: 185.203.112.26: Type __foo is deprecated: This <
     

    If 'deprecated' marker has no content then general message is printed, e.g.:

    -
    $ ls -l deprecated
    +
    $ ls -l deprecated
     -rw-r--r--  1 darko  darko  0 May 20 18:36 deprecated
     $ echo '__bar foo' | ./bin/cdist config -i - 185.203.112.26
     WARNING: 185.203.112.26: Type __bar is deprecated.
    @@ -304,15 +295,15 @@ WARNING: 185.203.112.26: Type __bar is deprecated.
     
    -

    15.9. How to write a new type

    +

    15.9. How to write a new type

    A type consists of

      -
    • parameter (optional)
    • -
    • manifest (optional)
    • -
    • singleton (optional)
    • -
    • explorer (optional)
    • -
    • gencode (optional)
    • -
    • nonparallel (optional)
    • +
    • parameter (optional)

    • +
    • manifest (optional)

    • +
    • singleton (optional)

    • +
    • explorer (optional)

    • +
    • gencode (optional)

    • +
    • nonparallel (optional)

    Types are stored below cdist/conf/type/. Their name should always be prefixed with two underscores (__) to prevent collisions with other executables in $PATH.

    @@ -325,7 +316,7 @@ they are written in shell so they are executed using '/bin/sh -e' or 'CDIST_LOCA cdist-new-type.

    -

    15.10. Defining parameters

    +

    15.10. Defining parameters

    Every type consists of required, optional and boolean parameters, which must each be declared in a newline separated file in parameter/required, parameter/required_multiple, parameter/optional, @@ -338,7 +329,7 @@ or no parameters at all.

    Default values for optional parameters can be predefined in parameter/default/<name>.

    Example:

    -
    echo servername >> cdist/conf/type/__nginx_vhost/parameter/required
    +
    echo servername >> cdist/conf/type/__nginx_vhost/parameter/required
     echo logdirectory >> cdist/conf/type/__nginx_vhost/parameter/optional
     echo loglevel >> cdist/conf/type/__nginx_vhost/parameter/optional
     mkdir cdist/conf/type/__nginx_vhost/parameter/default
    @@ -349,13 +340,13 @@ mkdir cdist/conf/type/__nginx_vhost/parameter/default
     
    -

    15.11. Using parameters

    +

    15.11. Using parameters

    The parameters given to a type can be accessed and used in all type scripts (e.g manifest, gencode, explorer). Note that boolean parameters are represented by file existence. File exists -> True, file does not exist -> False

    Example: (e.g. in cdist/conf/type/__nginx_vhost/manifest)

    -
    # required parameter
    +
    # required parameter
     servername="$(cat "$__object/parameter/servername")"
     
     # optional parameter
    @@ -382,14 +373,14 @@ file does not exist -> False

    -

    15.12. Deprecated parameters

    +

    15.12. Deprecated parameters

    To deprecate type parameters one can declare a file for each deprecated parameter under parameter/deprecated directory.

    When such parameter is used cdist writes warning line with deprecation message. If such file has content then this content is printed as deprecation message. If there is no content then generic parameter deprecation message is printed.

    Example:

    -
    $ ls parameter/deprecated/
    +
    $ ls parameter/deprecated/
     eggs    spam
     $ cat parameter/deprecated/eggs
     eggs parameter is deprecated, please use multiple egg parameter.
    @@ -403,11 +394,11 @@ WARNING: 185.203.112.26: eggs parameter of 
    -

    15.13. Input from stdin

    +

    15.13. Input from stdin

    Every type can access what has been written on stdin when it has been called. The result is saved into the stdin file in the object directory.

    Example use of a type: (e.g. in cdist/conf/type/__archlinux_hostname)

    -
    __file /etc/rc.conf --source - << eof
    +
    __file /etc/rc.conf --source - << eof
     ...
     HOSTNAME="$__target_host"
     ...
    @@ -417,7 +408,7 @@ The result is saved into the stdin file in the object directory
     

    If you have not seen this syntax (<< eof) before, it may help you to read about "here documents".

    In the __file type, stdin is used as source for the file, if - is used for source:

    -
    if [ -f "$__object/parameter/source" ]; then
    +
    if [ -f "$__object/parameter/source" ]; then
         source="$(cat "$__object/parameter/source")"
         if [ "$source" = "-" ]; then
             source="$__object/stdin"
    @@ -426,12 +417,12 @@ about "here documents".

    -

    15.13.1. Stdin inside a loop

    +

    15.13.1. Stdin inside a loop

    Since cdist saves type's stdin content in the object as $__object/stdin, so it can be accessed in manifest and gencode-* scripts, this can lead to unexpected behavior. For example, suppose you have some type with the following in its manifest:

    -
    if [ -f "$__object/parameter/foo" ]
    +
    if [ -f "$__object/parameter/foo" ]
     then
         while read -r l
         do
    @@ -442,18 +433,18 @@ in its manifest:

    and init manifest:

    -
    __foo foo --foo a --foo b --foo c
    +
    __foo foo --foo a --foo b --foo c
     

    You expect that manifest stderr content is:

    -
    a
    +
    a
     b
     c
     

    and that files a, b and c are created. But all you get in manifest stderr is:

    -
    a
    +
    a
     

    and only a file is created.

    @@ -461,14 +452,14 @@ is:

    commands in while body have this same stdin. So when __file type gets executed, cdist saves its stdin which means it gets the remaining content of parameter foo file, i.e.:

    -
    b
    +
    b
     c
     

    The solution is to make sure that your types inside such loops get their stdin from somewhere else, e.g. for the above problem __file type can get empty stdin from /dev/null:

    -
    if [ -f "$__object/parameter/foo" ]
    +
    if [ -f "$__object/parameter/foo" ]
     then
         while read -r l
         do
    @@ -481,11 +472,11 @@ stdin from /dev/null:

    -

    15.14. Writing the manifest

    +

    15.14. Writing the manifest

    In the manifest of a type you can use other types, so your type extends their functionality. A good example is the __package type, which in a shortened version looks like this:

    -
    os="$(cat "$__global/explorer/os")"
    +
    os="$(cat "$__global/explorer/os")"
     case "$os" in
           archlinux) type="pacman" ;;
           debian|ubuntu) type="apt" ;;
    @@ -505,47 +496,47 @@ which are documented in cdist manifest.

    -

    15.15. Singleton - one instance only

    +

    15.15. Singleton - one instance only

    If you want to ensure that a type can only be used once per target, you can mark it as a singleton: Just create the (empty) file "singleton" in your type directory:

    -
    touch cdist/conf/type/__NAME/singleton
    +
    touch cdist/conf/type/__NAME/singleton
     

    This will also change the way your type must be called:

    -
    __YOURTYPE --parameter value
    +
    __YOURTYPE --parameter value
     

    As you can see, the object ID is omitted, because it does not make any sense, if your type can be used only once.

    -

    15.16. Install - type with install command

    +

    15.16. Install - type with install command

    If you want a type to be used with install command, you must mark it as install: create the (empty) file "install" in your type directory:

    -
    touch cdist/conf/type/__install_NAME/install
    +
    touch cdist/conf/type/__install_NAME/install
     

    With other commands, i.e. config, it will be skipped if used.

    -

    15.17. Nonparallel - only one instance can be run at a time

    +

    15.17. Nonparallel - only one instance can be run at a time

    If objects of a type must not or cannot be run in parallel when using -j option, you must mark it as nonparallel: create the (empty) file "nonparallel" in your type directory:

    -
    touch cdist/conf/type/__NAME/nonparallel
    +
    touch cdist/conf/type/__NAME/nonparallel
     

    For example, package types are nonparallel types.

    -

    15.18. The type explorers

    +

    15.18. The type explorers

    If a type needs to explore specific details, it can provide type specific explorers, which will be executed on the target for every created object.

    The explorers are stored under the "explorer" directory below the type. It could for instance contain code to check the md5sum of a file on the client, like this (shortened version from the type __file):

    -
    if [ -f "$__object/parameter/destination" ]; then
    +
    if [ -f "$__object/parameter/destination" ]; then
        destination="$(cat "$__object/parameter/destination")"
     else
        destination="/$__object_id"
    @@ -558,7 +549,7 @@ client, like this (shortened version from the type __file):

    -

    15.19. Writing the gencode script

    +

    15.19. Writing the gencode script

    There are two gencode scripts: gencode-local and gencode-remote. The output of gencode-local is executed locally, whereas the output of gencode-remote is executed on the target. @@ -567,7 +558,7 @@ and the type specific explorers.

    If the gencode scripts encounters an error, it should print diagnostic messages to stderr and exit non-zero. If you need to debug the gencode script, you can write to stderr:

    -
    # Debug output to stderr
    +
    # Debug output to stderr
     echo "My fancy debug line" >&2
     
     # Output to be saved by cdist for execution on the target
    @@ -581,16 +572,16 @@ the same as ssh for some options where colon is a delimiter, as for -L ssh
     option (see ssh(1) and scp(1)).

    -

    15.20. Variable access from the generated scripts

    +

    15.20. Variable access from the generated scripts

    In the generated scripts, you have access to the following cdist variables

      -
    • __object
    • -
    • __object_id
    • +
    • __object

    • +
    • __object_id

    but only for read operations, means there is no back copy of this files after the script execution.

    So when you generate a script with the following content, it will work:

    -
    if [ -f "$__object/parameter/name" ]; then
    +
    if [ -f "$__object/parameter/name" ]; then
        name="$(cat "$__object/parameter/name")"
     else
        name="$__object_id"
    @@ -599,50 +590,50 @@ files after the script execution.

    -

    15.21. Environment variable usage idiom

    +

    15.21. Environment variable usage idiom

    In type scripts you can support environment variables with default values if environment variable is unset or null by using ${parameter:-[word]} parameter expansion.

    Example using mktemp in a portable way that supports TMPDIR environment variable.

    -
    tempfile=$(mktemp "${TMPDIR:-/tmp}/cdist.XXXXXXXXXX")
    +
    tempfile=$(mktemp "${TMPDIR:-/tmp}/cdist.XXXXXXXXXX")
     
    -

    15.22. Log level in types

    +

    15.22. Log level in types

    cdist log level can be accessed from __cdist_log_level variable.One of:

    -
    +
    --++ - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + +
    Log levelLog level value

    Log level

    Log level value

    OFF60

    OFF

    60

    ERROR40

    ERROR

    40

    WARNING30

    WARNING

    30

    INFO20

    INFO

    20

    VERBOSE15

    VERBOSE

    15

    DEBUG10

    DEBUG

    10

    TRACE5

    TRACE

    5

    @@ -651,13 +642,13 @@ parameter expansion.

    type explorer, type gencode.

    -

    15.23. Detecting dry run

    -

    If $__cdist_dry_run environment variable is set, then it's dry run.

    +

    15.23. Detecting dry run

    +

    If $__cdist_dry_run environment variable is set, then it's dry run.

    It is available for initial manifest, explorer, type manifest, type explorer, type gencode.

    -

    15.24. Hints for typewriters

    +

    15.24. Hints for typewriters

    It must be assumed that the target is pretty dumb and thus does not have high level tools like ruby installed. If a type requires specific tools to be present on the target, there must be another type that provides this tool and the first @@ -671,13 +662,13 @@ a folder named "files" within the type (again, because cdist guarantee never ever touch this folder).

    -

    15.25. How to include a type into upstream cdist

    +

    15.25. How to include a type into upstream cdist

    If you think your type may be useful for others, ensure it works with the current master branch of cdist and have a look at cdist hacking on how to submit it.

    -

    15.26. Python types

    +

    15.26. Python types

    From version/branch beta cdist support python types, types that are written in python language with cdist's core support. cdist detects such type if type is detectable as a python package, i.e. if __init__.py file is present in type's @@ -691,18 +682,18 @@ in shell, since this is the code that is directly executed at target host.

    When writing python type you can extend cdist.core.pytypes.PythonType class. You need to implement the following methods:

      -
    • get_args_parser: implementation should return argparse.ArgumentParser and if +
    • get_args_parser: implementation should return argparse.ArgumentParser and if it is undefined or returned None then cdist falls back to classic type parameter -definition and argument parsing

    • -
    • type_manifest: implementation should yield cdist.core.pytypes.<type-name> -attribute function call result, or yield from () if type does not use other types
    • -
    • type_gencode: implementation should return a string consisting of lines -of shell code that will be executed at target host.
    • +definition and argument parsing

      +
    • type_manifest: implementation should yield cdist.core.pytypes.<type-name> +attribute function call result, or yield from () if type does not use other types

    • +
    • type_gencode: implementation should return a string consisting of lines +of shell code that will be executed at target host.

    cdist.core.pytypes.<type-name> attributes correspond to detected python types. Note that double underscore ('__') at the beginning of type name is removed.

    Example:

    -
    import os
    +
    import os
     import sys
     from cdist.core.pytypes import *
     
    @@ -728,15 +719,15 @@ class DummyConfig(PythonType):
     

    cdist.core.PythonType class provides the following methods:

      -
    • get_parameter: get type parameter
    • -
    • get_explorer_file: get path to file for specified explorer
    • -
    • get_explorer: get value for specified explorer
    • -
    • run_local: run specified command locally
    • -
    • run_remote: run specified command remotely
    • -
    • transfer: transfer specified source to the remote
    • -
    • die: raise error
    • -
    • send_message: send message
    • -
    • receive_message: get message.
    • +
    • get_parameter: get type parameter

    • +
    • get_explorer_file: get path to file for specified explorer

    • +
    • get_explorer: get value for specified explorer

    • +
    • run_local: run specified command locally

    • +
    • run_remote: run specified command remotely

    • +
    • transfer: transfer specified source to the remote

    • +
    • die: raise error

    • +
    • send_message: send message

    • +
    • receive_message: get message.

    When running python type, cdist will save output streams to gencode-py, stdout and stderr output files.

    diff --git a/src/extra/manual/beta/cdist-types.html b/src/extra/manual/beta/cdist-types.html index 94f913e3..2e690d44 100644 --- a/src/extra/manual/beta/cdist-types.html +++ b/src/extra/manual/beta/cdist-types.html @@ -8,7 +8,7 @@ - 16. cdist types — cdist 6.5.6 documentation + 16. cdist types — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
    - 6.5.6 + 6.6.0
    @@ -336,7 +327,7 @@
  • Docs »
  • -
  • 16. cdist types
  • +
  • 16. cdist types
  • @@ -356,7 +347,7 @@
    -

    16. cdist types

    +

    16. cdist types

    • 16.1. __acl
    • diff --git a/src/extra/manual/beta/cdist-upgrade.html b/src/extra/manual/beta/cdist-upgrade.html index 7480db14..cddc9aa8 100644 --- a/src/extra/manual/beta/cdist-upgrade.html +++ b/src/extra/manual/beta/cdist-upgrade.html @@ -8,7 +8,7 @@ - 5. How to upgrade cdist — cdist 6.5.6 documentation + 5. How to upgrade cdist — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -195,7 +186,7 @@
    • Docs »
    • -
    • 5. How to upgrade cdist
    • +
    • 5. How to upgrade cdist
    • @@ -215,25 +206,25 @@
      -

      5. How to upgrade cdist

      +

      5. How to upgrade cdist

      -

      5.1. Update the git installation

      +

      5.1. Update the git installation

      To upgrade cdist in the current branch use

      -
      git pull
      +
      git pull
       
       # Also update the manpages
       make man
       export MANPATH=$MANPATH:$(pwd -P)/doc/man
       
      -

      If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break. +

      If you stay on a version branch (i.e. 1.0, 1.1., ...), nothing should break. The master branch on the other hand is the development branch and may not be working, break your setup or eat the tree in your garden.

      -

      5.1.1. Safely upgrading to new versions

      +

      5.1.1. Safely upgrading to new versions

      To upgrade to any further cdist version, you can take the following procedure to do a safe upgrade:

      -
      # Create new branch to try out the update
      +
      # Create new branch to try out the update
       git checkout -b upgrade_cdist
       
       # Get latest cdist version in git database
      @@ -250,7 +241,7 @@ git merge origin/master
       

      Now you can ensure all custom types work with the new version. Assume that you need to go back to an older version during the migration/update, you can do so as follows:

      -
      # commit changes
      +
      # commit changes
       git commit -m ...
       
       # go back to original branch
      @@ -258,132 +249,132 @@ git checkout master
       

      After that, you can go back and continue the upgrade:

      -
      # git checkout upgrade_cdist
      +
      # git checkout upgrade_cdist
       
      -

      5.2. Update the python package

      -

      To upgrade to the lastet version do

      -
      pip install --upgrade cdist
      +

      5.2. Update the python package

      +

      To upgrade to the latest version do

      +
      pip install --upgrade cdist
       
      -

      5.3. General update instructions

      +

      5.3. General update instructions

      -

      5.3.1. Updating from 3.0 to 3.1

      +

      5.3.1. Updating from 3.0 to 3.1

      The type __ssh_authorized_keys now also manages existing keys, not only the ones added by cdist.

      -

      5.3.2. Updating from 2.3 to 3.0

      +

      5.3.2. Updating from 2.3 to 3.0

      The changed attribute of objects has been removed. Use messaging instead.

      -

      5.3.3. Updating from 2.2 to 2.3

      +

      5.3.3. Updating from 2.2 to 2.3

      No incompatibilities.

      -

      5.3.4. Updating from 2.1 to 2.2

      +

      5.3.4. Updating from 2.1 to 2.2

      Starting with 2.2, the syntax for requiring a singleton type changed: Old format:

      -
      require="__singleton_type/singleton" ...
      +
      require="__singleton_type/singleton" ...
       

      New format:

      -
      require="__singleton_type" ...
      +
      require="__singleton_type" ...
       

      Internally the "singleton" object id was dropped to make life more easy. You can probably fix your configuration by running the following code snippet (currently untested, please report back if it works for you):

      -
      find ~/.cdist/* -type f -exec sed -i 's,/singleton,,' {} \;
      +
      find ~/.cdist/* -type f -exec sed -i 's,/singleton,,' {} \;
       
      -

      5.3.5. Updating from 2.0 to 2.1

      +

      5.3.5. Updating from 2.0 to 2.1

      Have a look at the update guide for [[2.0 to 2.1|2.0-to-2.1]].

        -
      • Type __package* and __process use --state present or absent. +
      • Type __package* and __process use --state present or absent. The states removed/installed and stopped/running have been removed. -Support for the new states is already present in 2.0.

      • -
      • Type __directory: Parameter --parents and --recursive are now boolean -The old "yes/no" values need to be removed.
      • -
      • Type __rvm_ruby: Parameter --default is now boolean -The old "yes/no" values need to be removed.
      • -
      • Type __rvm_gemset: Parameter --default is now boolean -The old "yes/no" values need to be removed.
      • -
      • Type __addifnosuchline and __removeline have been replaced by __line
      • -
      • The conf directory is now located at cdist/conf. +Support for the new states is already present in 2.0.

      • +
      • Type __directory: Parameter --parents and --recursive are now boolean +The old "yes/no" values need to be removed.

      • +
      • Type __rvm_ruby: Parameter --default is now boolean +The old "yes/no" values need to be removed.

      • +
      • Type __rvm_gemset: Parameter --default is now boolean +The old "yes/no" values need to be removed.

      • +
      • Type __addifnosuchline and __removeline have been replaced by __line

      • +
      • The conf directory is now located at cdist/conf. You need to migrate your types, explorers and manifests -manually to the new location.

      • -
      • Replace the variable __self by __object_name -Support for the variable __object_name is already present in 2.0.
      • -
      • The types __autofs, __autofs_map and __autofs_reload have been removed -(no maintainer, no users)
      • -
      • Type __user: Parameter --groups removed (use the new __user_groups type)
      • -
      • -
        Type __ssh_authorized_key has been replaced by more flexible type
        -
        __ssh_authorized_keys
        +manually to the new location.

      • +
      • Replace the variable __self by __object_name +Support for the variable __object_name is already present in 2.0.

      • +
      • The types __autofs, __autofs_map and __autofs_reload have been removed +(no maintainer, no users)

      • +
      • Type __user: Parameter --groups removed (use the new __user_groups type)

      • +
      • +
        Type __ssh_authorized_key has been replaced by more flexible type

        __ssh_authorized_keys

        +
      -

      5.3.6. Updating from 1.7 to 2.0

      +

      5.3.6. Updating from 1.7 to 2.0

        -
      • Ensure python (>= 3.2) is installed on the source host
      • -
      • Use "cdist config host" instead of "cdist-deploy-to host"
      • -
      • Use "cdist config -p host1 host2" instead of "cdist-mass-deploy"
      • -
      • Use "cdist banner" for fun
      • -
      • Use __object_name instead of __self in manifests
      • +
      • Ensure python (>= 3.2) is installed on the source host

      • +
      • Use "cdist config host" instead of "cdist-deploy-to host"

      • +
      • Use "cdist config -p host1 host2" instead of "cdist-mass-deploy"

      • +
      • Use "cdist banner" for fun

      • +
      • Use __object_name instead of __self in manifests

      -

      5.3.7. Updating from 1.6 to 1.7

      +

      5.3.7. Updating from 1.6 to 1.7

        -
      • If you used the global explorer hardware_type, you need to change -your code to use machine instead.
      • +
      • If you used the global explorer hardware_type, you need to change +your code to use machine instead.

      -

      5.3.8. Updating from 1.5 to 1.6

      +

      5.3.8. Updating from 1.5 to 1.6

        -
      • If you used __package_apt --preseed, you need to use the new -type __debconf_set_selections instead.
      • -
      • The __package types accepted either --state deinstalled or ---state uninstaaled. Starting with 1.6, it was made consistently -to --state removed.
      • +
      • If you used __package_apt --preseed, you need to use the new +type __debconf_set_selections instead.

      • +
      • The __package types accepted either --state deinstalled or +--state uninstalled. Starting with 1.6, it was made consistently +to --state removed.

      -

      5.3.9. Updating from 1.3 to 1.5

      +

      5.3.9. Updating from 1.3 to 1.5

      No incompatibilities.

      -

      5.3.10. Updating from 1.2 to 1.3

      +

      5.3.10. Updating from 1.2 to 1.3

      Rename gencode of every type to gencode-remote.

      -

      5.3.11. Updating from 1.1 to 1.2

      +

      5.3.11. Updating from 1.1 to 1.2

      No incompatibilities.

      -

      5.3.12. Updating from 1.0 to 1.1

      +

      5.3.12. Updating from 1.0 to 1.1

      In 1.1 the type __file was split into __directory, __file and __link. The parameter --type was removed from __file. Thus you need to replace __file calls in your manifests:

        -
      • Remove --type from all __file calls
      • -
      • If type was symlink, use __link and --type symbolic
      • -
      • If type was directory, use __directory
      • +
      • Remove --type from all __file calls

      • +
      • If type was symlink, use __link and --type symbolic

      • +
      • If type was directory, use __directory

      diff --git a/src/extra/manual/beta/cdist-why.html b/src/extra/manual/beta/cdist-why.html index e6abed9b..aed0b118 100644 --- a/src/extra/manual/beta/cdist-why.html +++ b/src/extra/manual/beta/cdist-why.html @@ -8,7 +8,7 @@ - 1. Why should I use cdist? — cdist 6.5.6 documentation + 1. Why should I use cdist? — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -181,7 +172,7 @@
    • Docs »
    • -
    • 1. Why should I use cdist?
    • +
    • 1. Why should I use cdist?
    • @@ -201,11 +192,11 @@
      -

      1. Why should I use cdist?

      +

      1. Why should I use cdist?

      There are several motivations to use cdist, these are probably the most popular ones.

      -

      1.1. Known language

      +

      1.1. Known language

      Cdist is being configured in shell script. Shell script is used by UNIX system engineers for decades. @@ -214,22 +205,22 @@ So when cdist is introduced, your staff does not need to learn a new or programming language.

      -

      1.2. Powerful language

      +

      1.2. Powerful language

      Not only is shell scripting widely known by system engineers, but it is also a very powerful language. Here are some features which make daily work easy:

        -
      • Configuration can react dynamicly on explored values
      • -
      • High level string manipulation (using sed, awk, grep)
      • -
      • Conditional support (if, case)
      • -
      • Loop support (for, while)
      • -
      • Support for dependencies between cdist types
      • +
      • Configuration can react dynamically on explored values

      • +
      • High level string manipulation (using sed, awk, grep)

      • +
      • Conditional support (if, case)

      • +
      • Loop support (for, while)

      • +
      • Support for dependencies between cdist types

      -

      1.3. More than shell scripting

      +

      1.3. More than shell scripting

      If you compare regular shell scripting with cdist, there is one major difference: When using cdist types, the results are @@ -238,17 +229,17 @@ In practise that means it does not matter in which order you call cdist types, the result is always the same.

      -

      1.4. Zero dependency configuration management

      +

      1.4. Zero dependency configuration management

      Cdist requires very little on a target system. Even better, in almost all cases all dependencies are usually fulfilled. Cdist does not require an agent or high level programming languages on the target host: it will run on any host that -has a ssh server running and a posix compatible shell +has a ssh server running and a POSIX compatible shell (/bin/sh). Compared to other configuration management systems, it does not require to open up an additional port.

      -

      1.5. Push based distribution

      +

      1.5. Push based distribution

      Cdist uses the push based model for configuration. In this scenario, one (or more) computers connect to the target hosts and apply the configuration. That way the source host has @@ -261,7 +252,7 @@ need to connect back to the source host, which contains the full configuration.

      -

      1.6. Highly scalable

      +

      1.6. Highly scalable

      If at some point you manage more hosts than can be handled from a single source host, you can simply add more resources: Either add more cores to one host or add hosts. diff --git a/src/extra/manual/beta/genindex.html b/src/extra/manual/beta/genindex.html index c0d18125..e8b0c112 100644 --- a/src/extra/manual/beta/genindex.html +++ b/src/extra/manual/beta/genindex.html @@ -9,7 +9,7 @@ - Index — cdist 6.5.6 documentation + Index — cdist 6.6.0 documentation @@ -21,20 +21,11 @@ - - - - + + + + + @@ -71,7 +62,7 @@

      - 6.5.6 + 6.6.0
      diff --git a/src/extra/manual/beta/index.html b/src/extra/manual/beta/index.html index 5ada0785..81e219da 100644 --- a/src/extra/manual/beta/index.html +++ b/src/extra/manual/beta/index.html @@ -8,7 +8,7 @@ - cdist - usable configuration management — cdist 6.5.6 documentation + cdist - usable configuration management — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -71,7 +62,7 @@
      - 6.5.6 + 6.6.0
      diff --git a/src/extra/manual/beta/man1/cdist-dump.html b/src/extra/manual/beta/man1/cdist-dump.html index 1598c5c0..93e45caf 100644 --- a/src/extra/manual/beta/man1/cdist-dump.html +++ b/src/extra/manual/beta/man1/cdist-dump.html @@ -8,7 +8,7 @@ - 10. cdist-dump(1) — cdist 6.5.6 documentation + 10. cdist-dump(1) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -183,7 +174,7 @@
    • Docs »
    • -
    • 10. cdist-dump(1)
    • +
    • 10. cdist-dump(1)
    • @@ -203,19 +194,19 @@
      -

      10. cdist-dump(1)

      +

      10. cdist-dump(1)

      -

      10.1. NAME

      +

      10.1. NAME

      cdist-dump - Dump data from local cdist cache

      -

      10.2. SYNOPSIS

      -
      cdist-dump [options] [host...]
      +

      10.2. SYNOPSIS

      +
      cdist-dump [options] [host...]
       
      -

      10.3. DESCRIPTION

      +

      10.3. DESCRIPTION

      cdist-dump is a helper script that dumps data from local cdist cache for specified hosts. If host is not specified then all data from cache directory is dumped. Default cache directory is '~/.cdist/cache'.

      @@ -223,49 +214,49 @@ is dumped. Default cache directory is '~/.cdist/cache'.

      new types.

      -

      10.4. OPTIONS

      -
      -
      -a
      -
      dump all
      -
      -C CACHE-DIR
      -
      use specified CACHE-DIR (default: ~/.cdist/cache)
      -
      -c
      -
      dump code-*
      -
      -d DELIMITER
      -
      delimiter used for filename and line number prefix (default: ':')
      -
      -E
      -
      dump global explorers
      -
      -e
      -
      dump type explorers
      -
      -F
      -
      disable filename prefix (enabled by default)
      -
      -f
      -
      enable filename prefix (default)
      -
      -g
      -
      dump gencode-*
      -
      -h
      -
      show this help screen and exit
      -
      -L
      -
      disable line number prefix (default)
      -
      -l
      -
      enable line number prefix (disabled by default)
      -
      -m
      -
      dump messages
      -
      -o
      -
      dump executions' stdout
      -
      -p
      -
      dump parameters
      -
      -r
      -
      dump executions' stderr
      -
      -V
      -
      show version and exit
      -
      -v
      -
      increase verbosity
      +

      10.4. OPTIONS

      +
      +
      -a

      dump all

      +
      +
      -C CACHE-DIR

      use specified CACHE-DIR (default: ~/.cdist/cache)

      +
      +
      -c

      dump code-*

      +
      +
      -d DELIMITER

      delimiter used for filename and line number prefix (default: ':')

      +
      +
      -E

      dump global explorers

      +
      +
      -e

      dump type explorers

      +
      +
      -F

      disable filename prefix (enabled by default)

      +
      +
      -f

      enable filename prefix (default)

      +
      +
      -g

      dump gencode-*

      +
      +
      -h

      show this help screen and exit

      +
      +
      -L

      disable line number prefix (default)

      +
      +
      -l

      enable line number prefix (disabled by default)

      +
      +
      -m

      dump messages

      +
      +
      -o

      dump executions' stdout

      +
      +
      -p

      dump parameters

      +
      +
      -r

      dump executions' stderr

      +
      +
      -V

      show version and exit

      +
      +
      -v

      increase verbosity

      +
      -

      10.5. EXAMPLES

      -
      # Dump all
      +

      10.5. EXAMPLES

      +
      # Dump all
       % cdist-dump -a
       
       # Dump only code-* output
      @@ -274,15 +265,15 @@ new types.

      -

      10.6. SEE ALSO

      +

      10.6. SEE ALSO

      cdist(1)

      -

      10.7. AUTHORS

      +

      10.7. AUTHORS

      Darko Poljak <darko.poljak--@--ungleich.ch>

      -

      10.8. COPYING

      +

      10.8. COPYING

      Copyright (C) 2019 Darko Poljak. Free use of this software is granted under the terms of the GNU General Public License v3 or later (GPLv3+).

      diff --git a/src/extra/manual/beta/man1/cdist-new-type.html b/src/extra/manual/beta/man1/cdist-new-type.html index 142ce9da..589726c9 100644 --- a/src/extra/manual/beta/man1/cdist-new-type.html +++ b/src/extra/manual/beta/man1/cdist-new-type.html @@ -8,7 +8,7 @@ - 11. cdist-new-type(1) — cdist 6.5.6 documentation + 11. cdist-new-type(1) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -183,7 +174,7 @@
    • Docs »
    • -
    • 11. cdist-new-type(1)
    • +
    • 11. cdist-new-type(1)
    • @@ -203,46 +194,46 @@
      -

      11. cdist-new-type(1)

      +

      11. cdist-new-type(1)

      -

      11.1. NAME

      +

      11.1. NAME

      cdist-new-type - Create new type skeleton

      -

      11.2. SYNOPSIS

      -
      cdist-new-type TYPE-NAME AUTHOR-NAME AUTHOR-EMAIL [TYPE-BASE-PATH]
      +

      11.2. SYNOPSIS

      +
      cdist-new-type TYPE-NAME AUTHOR-NAME AUTHOR-EMAIL [TYPE-BASE-PATH]
       
      -

      11.3. DESCRIPTION

      +

      11.3. DESCRIPTION

      cdist-new-type is a helper script that creates new type skeleton. It is then up to the type author to finish the type.

      It creates skeletons for the following files:

        -
      • man.rst
      • -
      • manifest
      • -
      • gencode-remote.
      • +
      • man.rst

      • +
      • manifest

      • +
      • gencode-remote.

      Upon creation it prints the path to the newly created type directory.

      -

      11.4. ARGUMENTS

      -
      -
      TYPE-NAME
      -
      Name of the new type.
      -
      AUTHOR-NAME
      -
      Type author's full name.
      -
      AUTHOR-NAME
      -
      Type author's email.
      -
      TYPE-BASE-PATH
      -
      Path to the base directory of the type. If not set it defaults -to '$PWD/type'.
      +

      11.4. ARGUMENTS

      +
      +
      TYPE-NAME

      Name of the new type.

      +
      +
      AUTHOR-NAME

      Type author's full name.

      +
      +
      AUTHOR-NAME

      Type author's email.

      +
      +
      TYPE-BASE-PATH

      Path to the base directory of the type. If not set it defaults +to '$PWD/type'.

      +
      -

      11.5. EXAMPLES

      -
      # Create new type __foo in ~/.cdist directory.
      +

      11.5. EXAMPLES

      +
      # Create new type __foo in ~/.cdist directory.
       $ cd ~/.cdist
       $ cdist-new-type '__foo' 'Foo Bar' 'foo.bar at foobar.org'
       /home/foo/.cdist/type/__foo
      @@ -250,18 +241,18 @@ $ cdist-new-type '__foo' 'F
       
      -

      11.6. SEE ALSO

      +

      11.6. SEE ALSO

      cdist(1)

      -

      11.7. AUTHORS

      +

      11.7. AUTHORS

      -

      11.8. COPYING

      +

      11.8. COPYING

      Copyright (C) 2019 Steven Armstrong, Darko Poljak. Free use of this software is granted under the terms of the GNU General Public License v3 or later (GPLv3+).

      diff --git a/src/extra/manual/beta/man1/cdist.html b/src/extra/manual/beta/man1/cdist.html index eb3bc037..fbfe759b 100644 --- a/src/extra/manual/beta/man1/cdist.html +++ b/src/extra/manual/beta/man1/cdist.html @@ -8,7 +8,7 @@ - 9. cdist(1) — cdist 6.5.6 documentation + 9. cdist(1) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -209,7 +200,7 @@
    • Docs »
    • -
    • 9. cdist(1)
    • +
    • 9. cdist(1)
    • @@ -229,63 +220,62 @@
      -

      9. cdist(1)

      +

      9. cdist(1)

      -

      9.1. NAME

      +

      9.1. NAME

      cdist - Usable Configuration Management

      -

      9.2. SYNOPSIS

      -
      cdist [-h] [-V] {banner,config,install,inventory,preos,shell,info,trigger} ...
      +

      9.2. SYNOPSIS

      +
      cdist [-h] [-V] {banner,config,install,inventory,preos,shell,info,trigger} ...
       
       cdist banner [-h] [-l LOGLEVEL] [-q] [-v]
       
      -cdist config [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-g CONFIG_FILE] [-4]
      -             [-6] [-C CACHE_PATH_PATTERN] [-c CONF_DIR] [-i MANIFEST]
      -             [-j [JOBS]] [-n] [-o OUT_PATH] [-P]
      -             [-R [{tar,tgz,tbz2,txz}]] [-r REMOTE_OUT_PATH]
      -             [--remote-copy REMOTE_COPY] [--remote-exec REMOTE_EXEC]
      -             [-S] [-I INVENTORY_DIR] [-A] [-a] [-f HOSTFILE]
      -             [-p [HOST_MAX]] [-s] [-t]
      +cdist config [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN]
      +             [-g CONFIG_FILE] [-4] [-6] [-C CACHE_PATH_PATTERN]
      +             [-c CONF_DIR] [-i MANIFEST] [-j [JOBS]] [--log-server]
      +             [-n] [-o OUT_PATH] [-P] [-R [{tar,tgz,tbz2,txz}]]
      +             [-r REMOTE_OUT_PATH] [--remote-copy REMOTE_COPY]
      +             [--remote-exec REMOTE_EXEC] [-S] [-I INVENTORY_DIR] [-A]
      +             [-a] [-f HOSTFILE] [-p [HOST_MAX]] [-s] [-t]
                    [host [host ...]]
       
      -cdist install [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-g CONFIG_FILE] [-4]
      -              [-6] [-C CACHE_PATH_PATTERN] [-c CONF_DIR] [-i MANIFEST]
      -              [-j [JOBS]] [-n] [-o OUT_PATH] [-P]
      -              [-R [{tar,tgz,tbz2,txz}]] [-r REMOTE_OUT_PATH]
      -              [--remote-copy REMOTE_COPY] [--remote-exec REMOTE_EXEC]
      -              [-S] [-I INVENTORY_DIR] [-A] [-a] [-f HOSTFILE]
      -              [-p [HOST_MAX]] [-s] [-t]
      +cdist install [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN]
      +              [-g CONFIG_FILE] [-4] [-6] [-C CACHE_PATH_PATTERN]
      +              [-c CONF_DIR] [-i MANIFEST] [-j [JOBS]] [--log-server]
      +              [-n] [-o OUT_PATH] [-P] [-R [{tar,tgz,tbz2,txz}]]
      +              [-r REMOTE_OUT_PATH] [--remote-copy REMOTE_COPY]
      +              [--remote-exec REMOTE_EXEC] [-S] [-I INVENTORY_DIR] [-A]
      +              [-a] [-f HOSTFILE] [-p [HOST_MAX]] [-s] [-t]
                     [host [host ...]]
       
       cdist inventory [-h] {add-host,add-tag,del-host,del-tag,list} ...
       
      -cdist inventory add-host [-h] [-l LOGLEVEL] [-q] [-v] [-b]
      -                         [-g CONFIG_FILE] [-I INVENTORY_DIR]
      -                         [-f HOSTFILE]
      +cdist inventory add-host [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN]
      +                         [-g CONFIG_FILE] [-I INVENTORY_DIR] [-f HOSTFILE]
                                [host [host ...]]
       
      -cdist inventory add-tag [-h] [-l LOGLEVEL] [-q] [-v] [-b]
      -                        [-g CONFIG_FILE] [-I INVENTORY_DIR]
      -                        [-f HOSTFILE] [-T TAGFILE] [-t TAGLIST]
      +cdist inventory add-tag [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN]
      +                        [-g CONFIG_FILE] [-I INVENTORY_DIR] [-f HOSTFILE]
      +                        [-T TAGFILE] [-t TAGLIST]
                               [host [host ...]]
       
      -cdist inventory del-host [-h] [-l LOGLEVEL] [-q] [-v] [-b]
      +cdist inventory del-host [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN]
                                [-g CONFIG_FILE] [-I INVENTORY_DIR] [-a]
                                [-f HOSTFILE]
                                [host [host ...]]
       
      -cdist inventory del-tag [-h] [-l LOGLEVEL] [-q] [-v] [-b]
      +cdist inventory del-tag [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN]
                               [-g CONFIG_FILE] [-I INVENTORY_DIR] [-a]
                               [-f HOSTFILE] [-T TAGFILE] [-t TAGLIST]
                               [host [host ...]]
       
      -cdist inventory list [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-g CONFIG_FILE]
      -                     [-I INVENTORY_DIR] [-a] [-f HOSTFILE] [-H] [-t]
      +cdist inventory list [-h] [-l LOGLEVEL] [-q] [-v] [-b] [--colors WHEN]
      +                     [-g CONFIG_FILE] [-I INVENTORY_DIR] [-a] [-f HOSTFILE]
      +                     [-H] [-t]
                            [host [host ...]]
       
      -cdist preos [-h] [-l LOGLEVEL] [-q] [-v] [-c CONF_DIR] [-g CONFIG_FILE]
      -            [-L]
      +cdist preos [-h] [-l LOGLEVEL] [-q] [-v] [-c CONF_DIR] [-g CONFIG_FILE] [-L]
                   [preos] ...
       
       cdist preos [preos-options] debian [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-a ARCH] [-B]
      @@ -312,9 +302,10 @@
                                          [-y REMOTE_COPY]
                                          target_dir
       
      -cdist shell [-h] [-l LOGLEVEL] [-q] [-v] [-s SHELL]
      +cdist shell [-h] [-l LOGLEVEL] [-q] [-v] [--colors WHEN] [-s SHELL]
       
      -cdist info [-h] [-a] [-c CONF_DIR] [-e] [-F] [-f] [-g CONFIG_FILE] [-t] [pattern]
      +cdist info [-h] [-a] [-c CONF_DIR] [-e] [-F] [-f] [-g CONFIG_FILE] [-t]
      +           [pattern]
       
       cdist trigger [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-g CONFIG_FILE] [-4]
                     [-6] [-C CACHE_PATH_PATTERN] [-c CONF_DIR] [-i MANIFEST]
      @@ -326,125 +317,136 @@
       
      -

      9.3. DESCRIPTION

      +

      9.3. DESCRIPTION

      cdist is the frontend executable to the cdist configuration management. It supports different subcommands as explained below.

      It is written in Python so it requires python(1) to be installed. -It requires a minimal Python version 3.2.

      +It requires a minimal Python version 3.5.

      -

      9.4. GENERAL

      +

      9.4. GENERAL

      All commands accept the following options:

      -
      -
      -h, --help
      -
      Show the help screen.
      -
      -l LOGLEVEL, --log-level LOGLEVEL
      -
      Set the specified verbosity level. The levels, in +
      +
      -h, --help

      Show the help screen.

      +
      +
      --colors WHEN

      Colorize cdist's output. If enabled, cdist will use different colors for +different log levels. +WHEN recognizes the values 'always', 'never', and 'auto' (the default).

      +

      If the value is 'auto', colored output is enabled if stdout is a TTY +unless the NO_COLOR (https://no-color.org/) environment variable is defined.

      +
      +
      -l LOGLEVEL, --log-level LOGLEVEL

      Set the specified verbosity level. The levels, in order from the lowest to the highest, are: ERROR (-1), WARNING (0), INFO (1), VERBOSE (2), DEBUG (3), TRACE (4 or higher). If used along with -v then -v increases -last set value and -l overwrites last set value.

      -
      -q, --quiet
      -
      Quiet mode: disables logging, including WARNING and ERROR.
      -
      -v, --verbose
      -
      Increase the verbosity level. Every instance of -v +last set value and -l overwrites last set value.

      +
      +
      -q, --quiet

      Quiet mode: disables logging, including WARNING and ERROR.

      +
      +
      -v, --verbose

      Increase the verbosity level. Every instance of -v increments the verbosity level by one. Its default value is 0 which includes ERROR and WARNING levels. The levels, in order from the lowest to the highest, are: ERROR (-1), WARNING (0), INFO (1), VERBOSE (2), DEBUG (3), TRACE (4 or higher). If used along with -l then -l overwrites last set value and -v increases -last set value.

      -
      -V, --version
      -
      Show version and exit.
      +last set value.

      +
      +
      -V, --version

      Show version and exit.

      +
      -

      9.6. CONFIG/INSTALL

      +

      9.6. CONFIG/INSTALL

      Configure/install one or more hosts. Install command is currently in beta.

      -
      -
      -4, --force-ipv4
      -
      Force to use IPv4 addresses only. No influence for -custom remote commands.
      -
      -6, --force-ipv6
      -
      Force to use IPv6 addresses only. No influence for -custom remote commands.
      -
      -A, --all-tagged
      -
      Use all hosts present in tags db. Currently in beta.
      -
      -a, --all
      -
      List hosts that have all specified tags, if -t/--tag -is specified.
      -
      -b, --beta
      -
      Enable beta functionality.
      -
      -C CACHE_PATH_PATTERN, --cache-path-pattern CACHE_PATH_PATTERN
      -
      Specify custom cache path pattern. If it is not set then +
      +
      -4, --force-ipv4

      Force to use IPv4 addresses only. No influence for +custom remote commands.

      +
      +
      -6, --force-ipv6

      Force to use IPv6 addresses only. No influence for +custom remote commands.

      +
      +
      -A, --all-tagged

      Use all hosts present in tags db. Currently in beta.

      +
      +
      -a, --all

      List hosts that have all specified tags, if -t/--tag +is specified.

      +
      +
      -b, --beta

      Enable beta functionality.

      +
      +
      -C CACHE_PATH_PATTERN, --cache-path-pattern CACHE_PATH_PATTERN

      Specify custom cache path pattern. If it is not set then default hostdir is used. For more info on format see -CACHE PATH PATTERN FORMAT below.

      -
      -c CONF_DIR, --conf-dir CONF_DIR
      -
      Add a configuration directory. Can be specified multiple times. +CACHE PATH PATTERN FORMAT below.

      +
      +
      -c CONF_DIR, --conf-dir CONF_DIR

      Add a configuration directory. Can be specified multiple times. If configuration directories contain conflicting types, explorers or -manifests, then the last one found is used.

      -
      -f HOSTFILE, --file HOSTFILE
      -
      Read specified file for a list of additional hosts to operate on +manifests, then the last one found is used.

      +
      +
      -f HOSTFILE, --file HOSTFILE

      Read specified file for a list of additional hosts to operate on or if '-' is given, read stdin (one host per line). If no host or host file is specified then, by default, read hosts from stdin. For the file format see -HOSTFILE FORMAT below.

      -
      -g CONFIG_FILE, --config-file CONFIG_FILE
      -
      Use specified custom configuration file.
      -
      -I INVENTORY_DIR, --inventory INVENTORY_DIR
      -
      Use specified custom inventory directory. Inventory +HOSTFILE FORMAT below.

      +
      +
      -g CONFIG_FILE, --config-file CONFIG_FILE

      Use specified custom configuration file.

      +
      +
      -I INVENTORY_DIR, --inventory INVENTORY_DIR

      Use specified custom inventory directory. Inventory directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution -inventory directory is used.

      -
      -i MANIFEST, --initial-manifest MANIFEST
      -
      Path to a cdist manifest or - to read from stdin.
      -
      -j [JOBS], --jobs [JOBS]
      -
      Operate in parallel in specified maximum number of +inventory directory is used.

      +
      +
      -i MANIFEST, --initial-manifest MANIFEST

      Path to a cdist manifest or - to read from stdin.

      +
      +
      -j [JOBS], --jobs [JOBS]

      Operate in parallel in specified maximum number of jobs. Global explorers, object prepare and object run are supported. Without argument CPU count is used by -default.

      -
      -n, --dry-run
      -
      Do not execute code.
      -
      -o OUT_PATH, --out-dir OUT_PATH
      -
      Directory to save cdist output in.
      -
      -P, --timestamp
      -
      Timestamp log messages with the current local date and time -in the format: YYYYMMDDHHMMSS.us.
      -
      -p [HOST_MAX], --parallel [HOST_MAX]
      -
      Operate on multiple hosts in parallel for specified +default.

      +
      +
      --log-server

      Start a log server for sub processes to use. This is +mainly useful when running cdist nested from a code- +local script. Log server is always implicitly started +for 'install' command.

      +
      +
      -n, --dry-run

      Do not execute code.

      +
      +
      -o OUT_PATH, --out-dir OUT_PATH

      Directory to save cdist output in.

      +
      +
      -P, --timestamp

      Timestamp log messages with the current local date and time +in the format: YYYYMMDDHHMMSS.us.

      +
      +
      -p [HOST_MAX], --parallel [HOST_MAX]

      Operate on multiple hosts in parallel for specified maximum hosts at a time. Without argument CPU count is -used by default.

      -
      -R [{tar,tgz,tbz2,txz}], --use-archiving [{tar,tgz,tbz2,txz}]
      -
      Operate by using archiving with compression where +used by default.

      +
      +
      -R [{tar,tgz,tbz2,txz}], --use-archiving [{tar,tgz,tbz2,txz}]

      Operate by using archiving with compression where appropriate. Supported values are: tar - tar archive, tgz - gzip tar archive (the default), tbz2 - bzip2 tar -archive and txz - lzma tar archive. Currently in beta.

      -
      -r REMOTE_OUT_PATH, --remote-out-dir REMOTE_OUT_PATH
      -
      Directory to save cdist output in on the target host.
      -
      -S, --disable-saving-output-streams
      -
      Disable saving output streams.
      -
      -s, --sequential
      -
      Operate on multiple hosts sequentially (default).
      -
      --remote-copy REMOTE_COPY
      -
      Command to use for remote copy (should behave like scp).
      -
      --remote-exec REMOTE_EXEC
      -
      Command to use for remote execution (should behave like ssh).
      -
      -t, --tag
      -
      Host is specified by tag, not hostname/address; list +archive and txz - lzma tar archive. Currently in beta.

      +
      +
      -r REMOTE_OUT_PATH, --remote-out-dir REMOTE_OUT_PATH

      Directory to save cdist output in on the target host.

      +
      +
      -S, --disable-saving-output-streams

      Disable saving output streams.

      +
      +
      -s, --sequential

      Operate on multiple hosts sequentially (default).

      +
      +
      --remote-copy REMOTE_COPY

      Command to use for remote copy (should behave like scp).

      +
      +
      --remote-exec REMOTE_EXEC

      Command to use for remote execution (should behave like ssh).

      +
      +
      -t, --tag

      Host is specified by tag, not hostname/address; list all hosts that contain any of specified tags. -Currently in beta.

      +Currently in beta.

      +
      -

      9.6.1. HOSTFILE FORMAT

      +

      9.6.1. HOSTFILE FORMAT

      The HOSTFILE contains one host per line. A comment is started with '#' and continues to the end of the line. Any leading and trailing whitespace on a line is ignored. @@ -455,7 +457,7 @@ If such a line results in empty line it is ignored/skipped. Otherwise, host string is used.

      -

      9.6.2. CACHE PATH PATTERN FORMAT

      +

      9.6.2. CACHE PATH PATTERN FORMAT

      Cache path pattern specifies path for a cache directory subdirectory. In the path, '%N' will be substituted by the target host, '%h' will be substituted by the calculated host directory, '%P' will be substituted @@ -471,318 +473,318 @@ current host cache data are saved.

      -

      9.7. INVENTORY

      +

      9.7. INVENTORY

      Manage inventory database. Currently in beta with all sub-commands.

      -

      9.8. INVENTORY ADD-HOST

      +

      9.8. INVENTORY ADD-HOST

      Add host(s) to inventory database.

      -
      -
      host
      -
      Host(s) to add.
      -
      -b, --beta
      -
      Enable beta functionality.
      -
      -f HOSTFILE, --file HOSTFILE
      -
      Read additional hosts to add from specified file or +
      +
      host

      Host(s) to add.

      +
      +
      -b, --beta

      Enable beta functionality.

      +
      +
      -f HOSTFILE, --file HOSTFILE

      Read additional hosts to add from specified file or from stdin if '-' (each host on separate line). If no host or host file is specified then, by default, read -from stdin. Hostfile format is the same as config hostfile format.

      -
      -g CONFIG_FILE, --config-file CONFIG_FILE
      -
      Use specified custom configuration file.
      -
      -I INVENTORY_DIR, --inventory INVENTORY_DIR
      -
      Use specified custom inventory directory. Inventory +from stdin. Hostfile format is the same as config hostfile format.

      +
      +
      -g CONFIG_FILE, --config-file CONFIG_FILE

      Use specified custom configuration file.

      +
      +
      -I INVENTORY_DIR, --inventory INVENTORY_DIR

      Use specified custom inventory directory. Inventory directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution -inventory directory is used.

      +inventory directory is used.

      +
      -

      9.9. INVENTORY ADD-TAG

      +

      9.9. INVENTORY ADD-TAG

      Add tag(s) to inventory database.

      -
      -
      host
      -
      List of host(s) for which tags are added.
      -
      -b, --beta
      -
      Enable beta functionality.
      -
      -f HOSTFILE, --file HOSTFILE
      -
      Read additional hosts to add tags from specified file +
      +
      host

      List of host(s) for which tags are added.

      +
      +
      -b, --beta

      Enable beta functionality.

      +
      +
      -f HOSTFILE, --file HOSTFILE

      Read additional hosts to add tags from specified file or from stdin if '-' (each host on separate line). If no host or host file is specified then, by default, read from stdin. If no tags/tagfile nor hosts/hostfile are specified then tags are read from stdin and are -added to all hosts. Hostfile format is the same as config hostfile format.

      -
      -g CONFIG_FILE, --config-file CONFIG_FILE
      -
      Use specified custom configuration file.
      -
      -I INVENTORY_DIR, --inventory INVENTORY_DIR
      -
      Use specified custom inventory directory. Inventory +added to all hosts. Hostfile format is the same as config hostfile format.

      +
      +
      -g CONFIG_FILE, --config-file CONFIG_FILE

      Use specified custom configuration file.

      +
      +
      -I INVENTORY_DIR, --inventory INVENTORY_DIR

      Use specified custom inventory directory. Inventory directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution -inventory directory is used.

      -
      -T TAGFILE, --tag-file TAGFILE
      -
      Read additional tags to add from specified file or +inventory directory is used.

      +
      +
      -T TAGFILE, --tag-file TAGFILE

      Read additional tags to add from specified file or from stdin if '-' (each tag on separate line). If no tag or tag file is specified then, by default, read from stdin. If no tags/tagfile nor hosts/hostfile are specified then tags are read from stdin and are added -to all hosts. Tagfile format is the same as config hostfile format.

      -
      -t TAGLIST, --taglist TAGLIST
      -
      Tag list to be added for specified host(s), comma -separated values.
      +to all hosts. Tagfile format is the same as config hostfile format.

      +
      +
      -t TAGLIST, --taglist TAGLIST

      Tag list to be added for specified host(s), comma +separated values.

      +
      -

      9.10. INVENTORY DEL-HOST

      +

      9.10. INVENTORY DEL-HOST

      Delete host(s) from inventory database.

      -
      -
      host
      -
      Host(s) to delete.
      -
      -a, --all
      -
      Delete all hosts.
      -
      -b, --beta
      -
      Enable beta functionality.
      -
      -f HOSTFILE, --file HOSTFILE
      -
      Read additional hosts to delete from specified file or +
      +
      host

      Host(s) to delete.

      +
      +
      -a, --all

      Delete all hosts.

      +
      +
      -b, --beta

      Enable beta functionality.

      +
      +
      -f HOSTFILE, --file HOSTFILE

      Read additional hosts to delete from specified file or from stdin if '-' (each host on separate line). If no host or host file is specified then, by default, read -from stdin. Hostfile format is the same as config hostfile format.

      -
      -g CONFIG_FILE, --config-file CONFIG_FILE
      -
      Use specified custom configuration file.
      -
      -I INVENTORY_DIR, --inventory INVENTORY_DIR
      -
      Use specified custom inventory directory. Inventory +from stdin. Hostfile format is the same as config hostfile format.

      +
      +
      -g CONFIG_FILE, --config-file CONFIG_FILE

      Use specified custom configuration file.

      +
      +
      -I INVENTORY_DIR, --inventory INVENTORY_DIR

      Use specified custom inventory directory. Inventory directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution -inventory directory is used.

      +inventory directory is used.

      +
      -

      9.11. INVENTORY DEL-TAG

      +

      9.11. INVENTORY DEL-TAG

      Delete tag(s) from inventory database.

      -
      -
      host
      -
      List of host(s) for which tags are deleted.
      -
      -a, --all
      -
      Delete all tags for specified host(s).
      -
      -b, --beta
      -
      Enable beta functionality.
      -
      -f HOSTFILE, --file HOSTFILE
      -
      Read additional hosts to delete tags for from +
      +
      host

      List of host(s) for which tags are deleted.

      +
      +
      -a, --all

      Delete all tags for specified host(s).

      +
      +
      -b, --beta

      Enable beta functionality.

      +
      +
      -f HOSTFILE, --file HOSTFILE

      Read additional hosts to delete tags for from specified file or from stdin if '-' (each host on separate line). If no host or host file is specified then, by default, read from stdin. If no tags/tagfile nor hosts/hostfile are specified then tags are read from stdin and are deleted from all hosts. Hostfile -format is the same as config hostfile format.

      -
      -g CONFIG_FILE, --config-file CONFIG_FILE
      -
      Use specified custom configuration file.
      -
      -I INVENTORY_DIR, --inventory INVENTORY_DIR
      -
      Use specified custom inventory directory. Inventory +format is the same as config hostfile format.

      +
      +
      -g CONFIG_FILE, --config-file CONFIG_FILE

      Use specified custom configuration file.

      +
      +
      -I INVENTORY_DIR, --inventory INVENTORY_DIR

      Use specified custom inventory directory. Inventory directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution -inventory directory is used.

      -
      -T TAGFILE, --tag-file TAGFILE
      -
      Read additional tags from specified file or from stdin +inventory directory is used.

      +
      +
      -T TAGFILE, --tag-file TAGFILE

      Read additional tags from specified file or from stdin if '-' (each tag on separate line). If no tag or tag file is specified then, by default, read from stdin. If no tags/tagfile nor hosts/hostfile are specified then tags are read from stdin and are added to all -hosts. Tagfile format is the same as config hostfile format.

      -
      -t TAGLIST, --taglist TAGLIST
      -
      Tag list to be deleted for specified host(s), comma -separated values.
      +hosts. Tagfile format is the same as config hostfile format.

      +
      +
      -t TAGLIST, --taglist TAGLIST

      Tag list to be deleted for specified host(s), comma +separated values.

      +
      -

      9.12. INVENTORY LIST

      +

      9.12. INVENTORY LIST

      List inventory database.

      -
      -
      host
      -
      Host(s) to list.
      -
      -a, --all
      -
      List hosts that have all specified tags, if -t/--tag -is specified.
      -
      -b, --beta
      -
      Enable beta functionality.
      -
      -f HOSTFILE, --file HOSTFILE
      -
      Read additional hosts to list from specified file or +
      +
      host

      Host(s) to list.

      +
      +
      -a, --all

      List hosts that have all specified tags, if -t/--tag +is specified.

      +
      +
      -b, --beta

      Enable beta functionality.

      +
      +
      -f HOSTFILE, --file HOSTFILE

      Read additional hosts to list from specified file or from stdin if '-' (each host on separate line). If no host or host file is specified then, by default, list -all. Hostfile format is the same as config hostfile format.

      -
      -g CONFIG_FILE, --config-file CONFIG_FILE
      -
      Use specified custom configuration file.
      -
      -H, --host-only
      -
      Suppress tags listing.
      -
      -I INVENTORY_DIR, --inventory INVENTORY_DIR
      -
      Use specified custom inventory directory. Inventory +all. Hostfile format is the same as config hostfile format.

      +
      +
      -g CONFIG_FILE, --config-file CONFIG_FILE

      Use specified custom configuration file.

      +
      +
      -H, --host-only

      Suppress tags listing.

      +
      +
      -I INVENTORY_DIR, --inventory INVENTORY_DIR

      Use specified custom inventory directory. Inventory directory is set up by the following rules: if cdist configuration resolves this value then specified directory is used, if HOME env var is set then ~/.cdit/inventory is used, otherwise distribution -inventory directory is used.

      -
      -t, --tag
      -
      Host is specified by tag, not hostname/address; list -all hosts that contain any of specified tags.
      +inventory directory is used.

      +
      +
      -t, --tag

      Host is specified by tag, not hostname/address; list +all hosts that contain any of specified tags.

      +
      -

      9.13. PREOS

      +

      9.13. PREOS

      Create PreOS.

      -
      -
      -c CONF_DIR, --conf-dir CONF_DIR
      -
      Add configuration directory (one that contains "preos" subdirectory).
      -
      -g CONFIG_FILE, --config-file CONFIG_FILE
      -
      Use specified custom configuration file.
      -
      -L, --list-preoses
      -
      List available PreOS-es.
      +
      +
      -c CONF_DIR, --conf-dir CONF_DIR

      Add configuration directory (one that contains "preos" subdirectory).

      +
      +
      -g CONFIG_FILE, --config-file CONFIG_FILE

      Use specified custom configuration file.

      +
      +
      -L, --list-preoses

      List available PreOS-es.

      +

      Currently, the following PreOS-es are supported:

        -
      • debian
      • -
      • ubuntu
      • -
      • devuan
      • +
      • debian

      • +
      • ubuntu

      • +
      • devuan

      -

      9.14. PREOS DEBIAN/DEVUAN

      -
      -
      target_dir
      -
      target directory where PreOS will be bootstrapped
      -
      -a ARCH, --arch ARCH
      -
      target debootstrap architecture, by default 'amd64'
      -
      -B, --bootstrap
      -
      do bootstrap step
      -
      -b, --beta
      -
      Enable beta functionality.
      -
      -C, --configure
      -
      do configure step
      -
      -c CDIST_PARAMS, --cdist-params CDIST_PARAMS
      -
      parameters that will be passed to cdist config, by -default '-v' is used
      -
      -D DRIVE, --drive-boot DRIVE
      -
      create bootable PreOS on specified drive
      -
      -e REMOTE_EXEC, --remote-exec REMOTE_EXEC
      -
      remote exec that cdist config will use, by default -internal script is used
      -
      -i MANIFEST, --init-manifest MANIFEST
      -
      init manifest that cdist config will use, by default -internal init manifest is used
      -
      -k KEYFILE, --keyfile KEYFILE
      -
      ssh key files that will be added to cdist config; -'__ssh_authorized_keys root ...' type is appended to initial manifest
      -
      -m MIRROR, --mirror MIRROR
      -
      use specified mirror for debootstrap
      -
      -P ROOT_PASSWORD, --root-password ROOT_PASSWORD
      -
      Set specified password for root, generated by default
      -
      -p PXE_BOOT_DIR, --pxe-boot-dir PXE_BOOT_DIR
      -
      PXE boot directory
      -
      -r, --rm-bootstrap-dir
      -
      remove target directory after finishing
      -
      -S SCRIPT, --script SCRIPT
      -
      use specified script for debootstrap
      -
      -s SUITE, --suite SUITE
      -
      suite used for debootstrap, by default 'stable'
      -
      -t TRIGGER_COMMAND, --trigger-command TRIGGER_COMMAND
      -
      trigger command that will be added to cdist config; -'__cdist_preos_trigger http ...' type is appended to initial manifest
      -
      -y REMOTE_COPY, --remote-copy REMOTE_COPY
      -
      remote copy that cdist config will use, by default -internal script is used
      +

      9.14. PREOS DEBIAN/DEVUAN

      +
      +
      target_dir

      target directory where PreOS will be bootstrapped

      +
      +
      -a ARCH, --arch ARCH

      target debootstrap architecture, by default 'amd64'

      +
      +
      -B, --bootstrap

      do bootstrap step

      +
      +
      -b, --beta

      Enable beta functionality.

      +
      +
      -C, --configure

      do configure step

      +
      +
      -c CDIST_PARAMS, --cdist-params CDIST_PARAMS

      parameters that will be passed to cdist config, by +default '-v' is used

      +
      +
      -D DRIVE, --drive-boot DRIVE

      create bootable PreOS on specified drive

      +
      +
      -e REMOTE_EXEC, --remote-exec REMOTE_EXEC

      remote exec that cdist config will use, by default +internal script is used

      +
      +
      -i MANIFEST, --init-manifest MANIFEST

      init manifest that cdist config will use, by default +internal init manifest is used

      +
      +
      -k KEYFILE, --keyfile KEYFILE

      ssh key files that will be added to cdist config; +'__ssh_authorized_keys root ...' type is appended to initial manifest

      +
      +
      -m MIRROR, --mirror MIRROR

      use specified mirror for debootstrap

      +
      +
      -P ROOT_PASSWORD, --root-password ROOT_PASSWORD

      Set specified password for root, generated by default

      +
      +
      -p PXE_BOOT_DIR, --pxe-boot-dir PXE_BOOT_DIR

      PXE boot directory

      +
      +
      -r, --rm-bootstrap-dir

      remove target directory after finishing

      +
      +
      -S SCRIPT, --script SCRIPT

      use specified script for debootstrap

      +
      +
      -s SUITE, --suite SUITE

      suite used for debootstrap, by default 'stable'

      +
      +
      -t TRIGGER_COMMAND, --trigger-command TRIGGER_COMMAND

      trigger command that will be added to cdist config; +'__cdist_preos_trigger http ...' type is appended to initial manifest

      +
      +
      -y REMOTE_COPY, --remote-copy REMOTE_COPY

      remote copy that cdist config will use, by default +internal script is used

      +
      -

      9.15. PREOS UBUNTU

      -
      -
      target_dir
      -
      target directory where PreOS will be bootstrapped
      -
      -a ARCH, --arch ARCH
      -
      target debootstrap architecture, by default 'amd64'
      -
      -B, --bootstrap
      -
      do bootstrap step
      -
      -b, --beta
      -
      Enable beta functionality.
      -
      -C, --configure
      -
      do configure step
      -
      -c CDIST_PARAMS, --cdist-params CDIST_PARAMS
      -
      parameters that will be passed to cdist config, by -default '-v' is used
      -
      -D DRIVE, --drive-boot DRIVE
      -
      create bootable PreOS on specified drive
      -
      -e REMOTE_EXEC, --remote-exec REMOTE_EXEC
      -
      remote exec that cdist config will use, by default -internal script is used
      -
      -i MANIFEST, --init-manifest MANIFEST
      -
      init manifest that cdist config will use, by default -internal init manifest is used
      -
      -k KEYFILE, --keyfile KEYFILE
      -
      ssh key files that will be added to cdist config; -'__ssh_authorized_keys root ...' type is appended to initial manifest
      -
      -m MIRROR, --mirror MIRROR
      -
      use specified mirror for debootstrap
      -
      -P ROOT_PASSWORD, --root-password ROOT_PASSWORD
      -
      Set specified password for root, generated by default
      -
      -p PXE_BOOT_DIR, --pxe-boot-dir PXE_BOOT_DIR
      -
      PXE boot directory
      -
      -r, --rm-bootstrap-dir
      -
      remove target directory after finishing
      -
      -S SCRIPT, --script SCRIPT
      -
      use specified script for debootstrap
      -
      -s SUITE, --suite SUITE
      -
      suite used for debootstrap, by default 'xenial'
      -
      -t TRIGGER_COMMAND, --trigger-command TRIGGER_COMMAND
      -
      trigger command that will be added to cdist config; -'__cdist_preos_trigger http ...' type is appended to initial manifest
      -
      -y REMOTE_COPY, --remote-copy REMOTE_COPY
      -
      remote copy that cdist config will use, by default -internal script is used
      +

      9.15. PREOS UBUNTU

      +
      +
      target_dir

      target directory where PreOS will be bootstrapped

      +
      +
      -a ARCH, --arch ARCH

      target debootstrap architecture, by default 'amd64'

      +
      +
      -B, --bootstrap

      do bootstrap step

      +
      +
      -b, --beta

      Enable beta functionality.

      +
      +
      -C, --configure

      do configure step

      +
      +
      -c CDIST_PARAMS, --cdist-params CDIST_PARAMS

      parameters that will be passed to cdist config, by +default '-v' is used

      +
      +
      -D DRIVE, --drive-boot DRIVE

      create bootable PreOS on specified drive

      +
      +
      -e REMOTE_EXEC, --remote-exec REMOTE_EXEC

      remote exec that cdist config will use, by default +internal script is used

      +
      +
      -i MANIFEST, --init-manifest MANIFEST

      init manifest that cdist config will use, by default +internal init manifest is used

      +
      +
      -k KEYFILE, --keyfile KEYFILE

      ssh key files that will be added to cdist config; +'__ssh_authorized_keys root ...' type is appended to initial manifest

      +
      +
      -m MIRROR, --mirror MIRROR

      use specified mirror for debootstrap

      +
      +
      -P ROOT_PASSWORD, --root-password ROOT_PASSWORD

      Set specified password for root, generated by default

      +
      +
      -p PXE_BOOT_DIR, --pxe-boot-dir PXE_BOOT_DIR

      PXE boot directory

      +
      +
      -r, --rm-bootstrap-dir

      remove target directory after finishing

      +
      +
      -S SCRIPT, --script SCRIPT

      use specified script for debootstrap

      +
      +
      -s SUITE, --suite SUITE

      suite used for debootstrap, by default 'xenial'

      +
      +
      -t TRIGGER_COMMAND, --trigger-command TRIGGER_COMMAND

      trigger command that will be added to cdist config; +'__cdist_preos_trigger http ...' type is appended to initial manifest

      +
      +
      -y REMOTE_COPY, --remote-copy REMOTE_COPY

      remote copy that cdist config will use, by default +internal script is used

      +
      -

      9.16. SHELL

      +

      9.16. SHELL

      This command allows you to spawn a shell that enables access to the types as commands. It can be thought as an "interactive manifest" environment. See below for example usage. Its primary use is for debugging type parameters.

      -
      -
      -s SHELL, --shell SHELL
      -
      Select shell to use, defaults to current shell. Used shell should -be POSIX compatible shell.
      +
      +
      -s SHELL, --shell SHELL

      Select shell to use, defaults to current shell. Used shell should +be POSIX compatible shell.

      +
      -

      9.17. INFO

      +

      9.17. INFO

      Display information for cdist (global explorers, types).

      -
      -
      pattern
      -
      Glob pattern. If it contains special characters('?', '*', '[') then it is -used as specified, otherwise it is translated to *pattern*.
      -
      -h, --help
      -
      Show help message and exit.
      -
      -a, --all
      -
      Display all info. This is the default.
      -
      -c CONF_DIR, --conf-dir CONF_DIR
      -
      Add configuration directory (can be repeated).
      -
      -e, --global-explorers
      -
      Display info for global explorers.
      -
      -F, --fixed-string
      -
      Interpret pattern as a fixed string.
      -
      -f, --full
      -
      Display full details.
      -
      -g CONFIG_FILE, --config-file CONFIG_FILE
      -
      Use specified custom configuration file.
      -
      -t, --types
      -
      Display info for types.
      +
      +
      pattern

      Glob pattern. If it contains special characters('?', '*', '[') then it is +used as specified, otherwise it is translated to *pattern*.

      +
      +
      -h, --help

      Show help message and exit.

      +
      +
      -a, --all

      Display all info. This is the default.

      +
      +
      -c CONF_DIR, --conf-dir CONF_DIR

      Add configuration directory (can be repeated).

      +
      +
      -e, --global-explorers

      Display info for global explorers.

      +
      +
      -F, --fixed-string

      Interpret pattern as a fixed string.

      +
      +
      -f, --full

      Display full details.

      +
      +
      -g CONFIG_FILE, --config-file CONFIG_FILE

      Use specified custom configuration file.

      +
      +
      -t, --types

      Display info for types.

      +
      -

      9.18. TRIGGER

      +

      9.18. TRIGGER

      Start trigger (simple http server) that waits for connections. When host connects then it triggers config or install command and then cdist config/install is executed which configures/installs host. @@ -791,178 +793,180 @@ host name is dervied then it is used for running cdist config. If no host name is resolved then IP address is used. Request path recognizes following requests:

        -
      • /cdist/config/.* for config
      • -
      • /cdist/install/.* for install.
      • +
      • /cdist/config/.* for config

      • +
      • /cdist/install/.* for install.

      This command returns the following response codes to client requests:

        -
      • 200 for success
      • -
      • 599 for cdist run errors
      • -
      • 500 for cdist/server errors.
      • +
      • 200 for success

      • +
      • 599 for cdist run errors

      • +
      • 500 for cdist/server errors.

      -
      -
      -4, -force-ipv4
      -
      Force to use IPv4 addresses only. No influence for -custom remote commands.
      -
      -6, --force-ipv6
      -
      Force to use IPv6 addresses only. No influence for -custom remote commands.
      -
      -C CACHE_PATH_PATTERN, --cache-path-pattern CACHE_PATH_PATTERN
      -
      Specify custom cache path pattern. If it is not set -then default hostdir is used.
      -
      -c CONF_DIR, --conf-dir CONF_DIR
      -
      Add configuration directory (can be repeated, last one -wins).
      -
      -D DIRECTORY, --directory DIRECTORY
      -
      Where to create local files
      -
      -g CONFIG_FILE, --config-file CONFIG_FILE
      -
      Use specified custom configuration file.
      -
      -H HTTP_PORT, --http-port HTTP_PORT
      -
      Create trigger listener via http on specified port
      -
      -i MANIFEST, --initial-manifest MANIFEST
      -
      Path to a cdist manifest or '-' to read from stdin.
      -
      --ipv6
      -
      Listen to both IPv4 and IPv6 (instead of only IPv4)
      -
      -j [JOBS], --jobs [JOBS]
      -
      Operate in parallel in specified maximum number of +
      +
      -4, -force-ipv4

      Force to use IPv4 addresses only. No influence for +custom remote commands.

      +
      +
      -6, --force-ipv6

      Force to use IPv6 addresses only. No influence for +custom remote commands.

      +
      +
      -C CACHE_PATH_PATTERN, --cache-path-pattern CACHE_PATH_PATTERN

      Specify custom cache path pattern. If it is not set +then default hostdir is used.

      +
      +
      -c CONF_DIR, --conf-dir CONF_DIR

      Add configuration directory (can be repeated, last one +wins).

      +
      +
      -D DIRECTORY, --directory DIRECTORY

      Where to create local files

      +
      +
      -g CONFIG_FILE, --config-file CONFIG_FILE

      Use specified custom configuration file.

      +
      +
      -H HTTP_PORT, --http-port HTTP_PORT

      Create trigger listener via http on specified port

      +
      +
      -i MANIFEST, --initial-manifest MANIFEST

      Path to a cdist manifest or '-' to read from stdin.

      +
      +
      --ipv6

      Listen to both IPv4 and IPv6 (instead of only IPv4)

      +
      +
      -j [JOBS], --jobs [JOBS]

      Operate in parallel in specified maximum number of jobs. Global explorers, object prepare and object run are supported. Without argument CPU count is used by -default. Currently in beta.

      -
      -n, --dry-run
      -
      Do not execute code.
      -
      -O SOURCE, --source SOURCE
      -
      Which file to copy for creation
      -
      -o OUT_PATH, --out-dir OUT_PATH
      -
      Directory to save cdist output in.
      -
      -P, --timestamp
      -
      Timestamp log messages with the current local date and -time in the format: YYYYMMDDHHMMSS.us.
      -
      -R [{tar,tgz,tbz2,txz}], --use-archiving [{tar,tgz,tbz2,txz}]
      -
      Operate by using archiving with compression where +default. Currently in beta.

      +
      +
      -n, --dry-run

      Do not execute code.

      +
      +
      -O SOURCE, --source SOURCE

      Which file to copy for creation

      +
      +
      -o OUT_PATH, --out-dir OUT_PATH

      Directory to save cdist output in.

      +
      +
      -P, --timestamp

      Timestamp log messages with the current local date and +time in the format: YYYYMMDDHHMMSS.us.

      +
      +
      -R [{tar,tgz,tbz2,txz}], --use-archiving [{tar,tgz,tbz2,txz}]

      Operate by using archiving with compression where appropriate. Supported values are: tar - tar archive, tgz - gzip tar archive (the default), tbz2 - bzip2 tar -archive and txz - lzma tar archive. Currently in beta.

      -
      -r REMOTE_OUT_PATH, --remote-out-dir REMOTE_OUT_PATH
      -
      Directory to save cdist output in on the target host.
      -
      --remote-copy REMOTE_COPY
      -
      Command to use for remote copy (should behave like -scp).
      -
      --remote-exec REMOTE_EXEC
      -
      Command to use for remote execution (should behave -like ssh).
      -
      -S, --disable-saving-output-streams
      -
      Disable saving output streams.
      +archive and txz - lzma tar archive. Currently in beta.

      +
      +
      -r REMOTE_OUT_PATH, --remote-out-dir REMOTE_OUT_PATH

      Directory to save cdist output in on the target host.

      +
      +
      --remote-copy REMOTE_COPY

      Command to use for remote copy (should behave like +scp).

      +
      +
      --remote-exec REMOTE_EXEC

      Command to use for remote execution (should behave +like ssh).

      +
      +
      -S, --disable-saving-output-streams

      Disable saving output streams.

      +
      -

      9.19. CONFIGURATION

      +

      9.19. CONFIGURATION

      cdist obtains configuration data from the following sources in the following order (from higher to lower precedence):

        -
      1. command-line options
      2. -
      3. configuration file specified at command-line
      4. -
      5. configuration file specified in CDIST_CONFIG_FILE environment variable
      6. -
      7. environment variables
      8. -
      9. user's configuration file (first one found of ~/.cdist.cfg, $XDG_CONFIG_HOME/cdist/cdist.cfg, in specified order)
      10. -
      11. system-wide configuration file (/etc/cdist.cfg).
      12. +
      13. command-line options

      14. +
      15. configuration file specified at command-line

      16. +
      17. configuration file specified in CDIST_CONFIG_FILE environment variable

      18. +
      19. environment variables

      20. +
      21. user's configuration file (first one found of ~/.cdist.cfg, $XDG_CONFIG_HOME/cdist/cdist.cfg, in specified order)

      22. +
      23. system-wide configuration file (/etc/cdist.cfg).

      -

      9.19.1. CONFIGURATION FILE FORMAT

      +

      9.19.1. CONFIGURATION FILE FORMAT

      cdist configuration file is in the INI file format. Currently it supports only [GLOBAL] section. The possible keywords and their meanings are as follows:

      -
      -
      archiving
      -
      Use specified archiving. Valid values include: -'none', 'tar', 'tgz', 'tbz2' and 'txz'.
      -
      beta
      -
      Enable beta functionality. It recognizes boolean values from -'yes'/'no', 'on'/'off', 'true'/'false' and '1'/'0'.
      -
      cache_path_pattern
      -
      Specify cache path pattern.
      -
      conf_dir
      -
      List of configuration directories separated with the character conventionally +
      +
      archiving

      Use specified archiving. Valid values include: +'none', 'tar', 'tgz', 'tbz2' and 'txz'.

      +
      +
      beta

      Enable beta functionality. It recognizes boolean values from +'yes'/'no', 'on'/'off', 'true'/'false' and '1'/'0'.

      +
      +
      cache_path_pattern

      Specify cache path pattern.

      +
      +
      colored_output

      Colorize cdist's output. cf. the --colors option.

      +
      +
      conf_dir

      List of configuration directories separated with the character conventionally used by the operating system to separate search path components (as in PATH), such as ':' for POSIX or ';' for Windows. If also specified at command line then values from command line are -appended to this value.

      -
      init_manifest
      -
      Specify default initial manifest.
      -
      inventory_dir
      -
      Specify inventory directory.
      -
      jobs
      -
      Specify number of jobs for parallel processing. If -1 then the default, +appended to this value.

      +
      +
      init_manifest

      Specify default initial manifest.

      +
      +
      inventory_dir

      Specify inventory directory.

      +
      +
      jobs

      Specify number of jobs for parallel processing. If -1 then the default, number of CPU's in the system is used. If 0 then parallel processing in jobs is disabled. If set to positive number then specified maximum -number of processes will be used.

      -
      local_shell
      -
      Shell command used for local execution.
      -
      out_path
      -
      Directory to save cdist output in.
      -
      parallel
      -
      Process hosts in parallel. If -1 then the default, number of CPU's in +number of processes will be used.

      +
      +
      local_shell

      Shell command used for local execution.

      +
      +
      out_path

      Directory to save cdist output in.

      +
      +
      parallel

      Process hosts in parallel. If -1 then the default, number of CPU's in the system is used. If 0 then parallel processing of hosts is disabled. If set to positive number then specified maximum number of processes -will be used.

      -
      remote_copy
      -
      Command to use for remote copy (should behave like scp).
      -
      remote_exec
      -
      Command to use for remote execution (should behave like ssh).
      -
      remote_out_path
      -
      Directory to save cdist output in on the target host.
      -
      remote_shell
      -
      Shell command at remote host used for remote execution.
      -
      save_output_streams
      -
      Enable/disable saving output streams (enabled by default). +will be used.

      +
      +
      remote_copy

      Command to use for remote copy (should behave like scp).

      +
      +
      remote_exec

      Command to use for remote execution (should behave like ssh).

      +
      +
      remote_out_path

      Directory to save cdist output in on the target host.

      +
      +
      remote_shell

      Shell command at remote host used for remote execution.

      +
      +
      save_output_streams

      Enable/disable saving output streams (enabled by default). It recognizes boolean values from 'yes'/'no', 'on'/'off', 'true'/'false' -and '1'/'0'.

      -
      timestamp
      -
      Timestamp log messages with the current local date and time -in the format: YYYYMMDDHHMMSS.us.
      -
      verbosity
      -
      Set verbosity level. Valid values are: -'ERROR', 'WARNING', 'INFO', 'VERBOSE', 'DEBUG', 'TRACE' and 'OFF'.
      +and '1'/'0'.

      +
      +
      timestamp

      Timestamp log messages with the current local date and time +in the format: YYYYMMDDHHMMSS.us.

      +
      +
      verbosity

      Set verbosity level. Valid values are: +'ERROR', 'WARNING', 'INFO', 'VERBOSE', 'DEBUG', 'TRACE' and 'OFF'.

      +
      -

      9.20. FILES

      -
      -
      ~/.cdist
      -
      Your personal cdist config directory. If exists it will be -automatically used.
      -
      ~/.cdist/cache
      -
      Local cache directory.
      -
      ~/.cdist/inventory
      -
      The home inventory directory. If ~/.cdist exists it will be used as -default inventory directory.
      -
      ~/.cdist/preos
      -
      PreOS plugins directory, if existing.
      -
      cdist/conf
      -
      The distribution configuration directory. It contains official types and -explorers. This path is relative to cdist installation directory.
      -
      cdist/inventory
      -
      The distribution inventory directory. -This path is relative to cdist installation directory.
      -
      cdist/preos
      -
      The distribution PreOS plugins directory.
      -
      /etc/cdist.cfg
      -
      Global cdist configuration file, if exists.
      -
      ~/.cdist.cfg or $XDG_CONFIG_HOME/cdist/cdist.cfg
      -
      Local cdist configuration file, if exists.
      +

      9.20. FILES

      +
      +
      ~/.cdist

      Your personal cdist config directory. If exists it will be +automatically used.

      +
      +
      ~/.cdist/cache

      Local cache directory.

      +
      +
      ~/.cdist/inventory

      The home inventory directory. If ~/.cdist exists it will be used as +default inventory directory.

      +
      +
      ~/.cdist/preos

      PreOS plugins directory, if existing.

      +
      +
      cdist/conf

      The distribution configuration directory. It contains official types and +explorers. This path is relative to cdist installation directory.

      +
      +
      cdist/inventory

      The distribution inventory directory. +This path is relative to cdist installation directory.

      +
      +
      cdist/preos

      The distribution PreOS plugins directory.

      +
      +
      /etc/cdist.cfg

      Global cdist configuration file, if exists.

      +
      +
      ~/.cdist.cfg or $XDG_CONFIG_HOME/cdist/cdist.cfg

      Local cdist configuration file, if exists.

      +
      -

      9.21. NOTES

      +

      9.21. NOTES

      cdist detects if host is specified by IPv6 address. If so then remote_copy command is executed with host address enclosed in square brackets (see scp(1)).

      -

      9.22. EXAMPLES

      -
      # Configure ikq05.ethz.ch with debug enabled
      +

      9.22. EXAMPLES

      +
      # Configure ikq05.ethz.ch with debug enabled
       % cdist config -vvv ikq05.ethz.ch
       
       # Configure hosts in parallel and use a different configuration directory
      @@ -1059,52 +1063,54 @@ $ cdist preos ubuntu /mnt -B -C \
       
      -

      9.23. ENVIRONMENT

      -
      -
      TMPDIR, TEMP, TMP
      -
      Setup the base directory for the temporary directory. +

      9.23. ENVIRONMENT

      +
      +
      TMPDIR, TEMP, TMP

      Setup the base directory for the temporary directory. See http://docs.python.org/py3k/library/tempfile.html for more information. This is rather useful, if the standard -directory used does not allow executables.

      -
      CDIST_PATH
      -
      Colon delimited list of config directories.
      -
      CDIST_LOCAL_SHELL
      -
      Selects shell for local script execution, defaults to /bin/sh.
      -
      CDIST_REMOTE_SHELL
      -
      Selects shell for remote script execution, defaults to /bin/sh.
      -
      CDIST_OVERRIDE
      -
      Allow overwriting type parameters.
      -
      CDIST_ORDER_DEPENDENCY
      -
      Create dependencies based on the execution order. +directory used does not allow executables.

      +
      +
      CDIST_PATH

      Colon delimited list of config directories.

      +
      +
      CDIST_LOCAL_SHELL

      Selects shell for local script execution, defaults to /bin/sh.

      +
      +
      CDIST_REMOTE_SHELL

      Selects shell for remote script execution, defaults to /bin/sh.

      +
      +
      CDIST_OVERRIDE

      Allow overwriting type parameters.

      +
      +
      CDIST_ORDER_DEPENDENCY

      Create dependencies based on the execution order. Note that in version 6.2.0 semantic of this processing mode is -finally fixed and well defined.

      -
      CDIST_REMOTE_EXEC
      -
      Use this command for remote execution (should behave like ssh).
      -
      CDIST_REMOTE_COPY
      -
      Use this command for remote copy (should behave like scp).
      -
      CDIST_INVENTORY_DIR
      -
      Use this directory as inventory directory.
      -
      CDIST_BETA
      -
      Enable beta functionality.
      -
      CDIST_CACHE_PATH_PATTERN
      -
      Custom cache path pattern.
      -
      CDIST_CONFIG_FILE
      -
      Custom configuration file.
      +finally fixed and well defined.

      +
      +
      CDIST_REMOTE_EXEC

      Use this command for remote execution (should behave like ssh).

      +
      +
      CDIST_REMOTE_COPY

      Use this command for remote copy (should behave like scp).

      +
      +
      CDIST_INVENTORY_DIR

      Use this directory as inventory directory.

      +
      +
      CDIST_BETA

      Enable beta functionality.

      +
      +
      CDIST_CACHE_PATH_PATTERN

      Custom cache path pattern.

      +
      +
      CDIST_COLORED_OUTPUT

      Colorize cdist's output. cf. the --colors option.

      +
      +
      CDIST_CONFIG_FILE

      Custom configuration file.

      +
      -

      9.24. EXIT STATUS

      +

      9.24. EXIT STATUS

      The following exit values shall be returned:

      0 Successful completion.

      1 One or more host configurations failed.

      -

      9.25. AUTHORS

      +

      9.25. AUTHORS

      Originally written by Nico Schottelius <nico-cdist--@--schottelius.org> and Steven Armstrong <steven-cdist--@--armstrong.cc>.

      -

      9.26. CAVEATS

      +

      9.26. CAVEATS

      When operating in parallel, either by operating in parallel for each host (-p/--parallel) or by parallel jobs within a host (-j/--jobs), and depending on target SSH server and its configuration you may encounter connection drops. @@ -1121,7 +1127,7 @@ dependencies correctly. This happens because cdist cannot prepare all objects fi and run all objects afterwards. Some object can depend on the result of type explorer(s) and explorers are executed during object run. cdist will detect such case and display a warning message. An example of such a case:

      -
      init manifest:
      +
      init manifest:
           __a a
           require="__e/e" __b b
           require="__f/f" __c c
      @@ -1143,8 +1149,8 @@ Warning message:
       
      -

      9.27. COPYING

      -

      Copyright (C) 2011-2019 Nico Schottelius. Free use of this software is +

      9.27. COPYING

      +

      Copyright (C) 2011-2020 Nico Schottelius. Free use of this software is granted under the terms of the GNU General Public License v3 or later (GPLv3+).

      diff --git a/src/extra/manual/beta/man7/cdist-type__acl.html b/src/extra/manual/beta/man7/cdist-type__acl.html index ad5b3fca..f269e694 100644 --- a/src/extra/manual/beta/man7/cdist-type__acl.html +++ b/src/extra/manual/beta/man7/cdist-type__acl.html @@ -8,7 +8,7 @@ - 16.1. cdist-type__acl(7) — cdist 6.5.6 documentation + 16.1. cdist-type__acl(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.1. cdist-type__acl(7)
    • +
    • 16.1. cdist-type__acl(7)
    • @@ -369,58 +360,58 @@
      -

      16.1. cdist-type__acl(7)

      +

      16.1. cdist-type__acl(7)

      -

      16.1.1. NAME

      +

      16.1.1. NAME

      cdist-type__acl - Set ACL entries

      -

      16.1.2. DESCRIPTION

      +

      16.1.2. DESCRIPTION

      Fully supported and tested on Linux (ext4 filesystem), partial support for FreeBSD.

      -

      See setfacl and acl manpages for more details.

      +

      See setfacl and acl manpages for more details.

      -

      16.1.3. REQUIRED MULTIPLE PARAMETERS

      -
      -
      entry
      -
      Set ACL entry following getfacl output syntax.
      +

      16.1.3. REQUIRED MULTIPLE PARAMETERS

      +
      +
      entry

      Set ACL entry following getfacl output syntax.

      +
      -

      16.1.4. OPTIONAL PARAMETERS

      -
      -
      source
      -
      Read ACL entries from stdin or file. +

      16.1.4. OPTIONAL PARAMETERS

      +
      +
      source

      Read ACL entries from stdin or file. Ordering of entries is not important. -When reading from file, comments and empty lines are ignored.

      -
      file
      -
      Create/change file with __file using user:group:mode pattern.
      -
      directory
      -
      Create/change directory with __directory using user:group:mode pattern.
      +When reading from file, comments and empty lines are ignored.

      +
      +
      file

      Create/change file with __file using user:group:mode pattern.

      +
      +
      directory

      Create/change directory with __directory using user:group:mode pattern.

      +
      -

      16.1.5. BOOLEAN PARAMETERS

      -
      -
      default
      -
      Set all ACL entries as default too. +

      16.1.5. BOOLEAN PARAMETERS

      +
      +
      default

      Set all ACL entries as default too. Only directories can have default ACLs. -Setting default ACL in FreeBSD is currently not supported.

      -
      recursive
      -
      Make setfacl recursive (Linux only), but not getfacl in explorer.
      -
      remove
      -
      Remove undefined ACL entries. -mask and other entries can't be removed, but only changed.
      +Setting default ACL in FreeBSD is currently not supported.

      +
      +
      recursive

      Make setfacl recursive (Linux only), but not getfacl in explorer.

      +
      +
      remove

      Remove undefined ACL entries. +mask and other entries can't be removed, but only changed.

      +
      -

      16.1.6. DEPRECATED PARAMETERS

      -

      Parameters acl, user, group, mask and other are deprecated and they -will be removed in future versions. Please use entry parameter instead.

      +

      16.1.6. DEPRECATED PARAMETERS

      +

      Parameters acl, user, group, mask and other are deprecated and they +will be removed in future versions. Please use entry parameter instead.

      -

      16.1.7. EXAMPLES

      -
      __acl /srv/project \
      +

      16.1.7. EXAMPLES

      +
      __acl /srv/project \
           --default \
           --recursive \
           --remove \
      @@ -460,11 +451,11 @@ __acl /path/to/directory \
       
      -

      16.1.8. AUTHORS

      +

      16.1.8. AUTHORS

      Ander Punnar <ander-at-kvlt-dot-ee>

      -

      16.1.9. COPYING

      +

      16.1.9. COPYING

      Copyright (C) 2018 Ander Punnar. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__apt_default_release.html b/src/extra/manual/beta/man7/cdist-type__apt_default_release.html index 72c6aa64..ebccbbd1 100644 --- a/src/extra/manual/beta/man7/cdist-type__apt_default_release.html +++ b/src/extra/manual/beta/man7/cdist-type__apt_default_release.html @@ -8,7 +8,7 @@ - 16.2. cdist-type__apt_default_release(7) — cdist 6.5.6 documentation + 16.2. cdist-type__apt_default_release(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.2. cdist-type__apt_default_release(7)
    • +
    • 16.2. cdist-type__apt_default_release(7)
    • @@ -367,42 +358,41 @@
      -

      16.2. cdist-type__apt_default_release(7)

      +

      16.2. cdist-type__apt_default_release(7)

      -

      16.2.1. NAME

      +

      16.2.1. NAME

      cdist-type__apt_default_release - Configure the default release for apt

      -

      16.2.2. DESCRIPTION

      +

      16.2.2. DESCRIPTION

      Configure the default release for apt, using the APT::Default-Release configuration value.

      -

      16.2.3. REQUIRED PARAMETERS

      -
      -
      release
      -

      The value to set APT::Default-Release to.

      -

      This can contain release name, codename or release version. Examples: +

      16.2.3. REQUIRED PARAMETERS

      +
      +
      release

      The value to set APT::Default-Release to.

      +

      This can contain release name, codename or release version. Examples: 'stable', 'testing', 'unstable', 'stretch', 'buster', '4.0', '5.0*'.

      -

      16.2.4. OPTIONAL PARAMETERS

      +

      16.2.4. OPTIONAL PARAMETERS

      None.

      -

      16.2.5. EXAMPLES

      -
      __apt_default_release --release stretch
      +

      16.2.5. EXAMPLES

      +
      __apt_default_release --release stretch
       
      -

      16.2.6. AUTHORS

      +

      16.2.6. AUTHORS

      Matthijs Kooijman <matthijs--@--stdin.nl>

      -

      16.2.7. COPYING

      +

      16.2.7. COPYING

      Copyright (C) 2017 Matthijs Kooijman. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__apt_key.html b/src/extra/manual/beta/man7/cdist-type__apt_key.html index b9e9a7b2..4bf5245f 100644 --- a/src/extra/manual/beta/man7/cdist-type__apt_key.html +++ b/src/extra/manual/beta/man7/cdist-type__apt_key.html @@ -8,7 +8,7 @@ - 16.3. cdist-type__apt_key(7) — cdist 6.5.6 documentation + 16.3. cdist-type__apt_key(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.3. cdist-type__apt_key(7)
    • +
    • 16.3. cdist-type__apt_key(7)
    • @@ -367,38 +358,38 @@
      -

      16.3. cdist-type__apt_key(7)

      +

      16.3. cdist-type__apt_key(7)

      -

      16.3.1. NAME

      +

      16.3.1. NAME

      cdist-type__apt_key - Manage the list of keys used by apt

      -

      16.3.2. DESCRIPTION

      +

      16.3.2. DESCRIPTION

      Manages the list of keys used by apt to authenticate packages.

      -

      16.3.3. REQUIRED PARAMETERS

      +

      16.3.3. REQUIRED PARAMETERS

      None.

      -

      16.3.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      'present' or 'absent'. Defaults to 'present'
      -
      keyid
      -
      the id of the key to add. Defaults to __object_id
      -
      keyserver
      -
      the keyserver from which to fetch the key. If omitted the default set -in ./parameter/default/keyserver is used.
      -
      keydir
      -
      key save location, defaults to /etc/apt/trusted.pgp.d
      -
      uri
      -
      the URI from which to download the key
      +

      16.3.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present' or 'absent'. Defaults to 'present'

      +
      +
      keyid

      the id of the key to add. Defaults to __object_id

      +
      +
      keyserver

      the keyserver from which to fetch the key. If omitted the default set +in ./parameter/default/keyserver is used.

      +
      +
      keydir

      key save location, defaults to /etc/apt/trusted.pgp.d

      +
      +
      uri

      the URI from which to download the key

      +
      -

      16.3.5. EXAMPLES

      -
      # Add Ubuntu Archive Automatic Signing Key
      +

      16.3.5. EXAMPLES

      +
      # Add Ubuntu Archive Automatic Signing Key
       __apt_key 437D05B5
       # Same thing
       __apt_key 437D05B5 --state present
      @@ -418,12 +409,12 @@ __apt_key rabbitmq \
       
      -

      16.3.6. AUTHORS

      +

      16.3.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc> Ander Punnar <ander-at-kvlt-dot-ee>

      -

      16.3.7. COPYING

      +

      16.3.7. COPYING

      Copyright (C) 2011-2019 Steven Armstrong and Ander Punnar. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__apt_key_uri.html b/src/extra/manual/beta/man7/cdist-type__apt_key_uri.html index dd74d4a2..9d69a92b 100644 --- a/src/extra/manual/beta/man7/cdist-type__apt_key_uri.html +++ b/src/extra/manual/beta/man7/cdist-type__apt_key_uri.html @@ -8,7 +8,7 @@ - 16.4. cdist-type__apt_key_uri(7) — cdist 6.5.6 documentation + 16.4. cdist-type__apt_key_uri(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.4. cdist-type__apt_key_uri(7)
    • +
    • 16.4. cdist-type__apt_key_uri(7)
    • @@ -367,35 +358,35 @@
      -

      16.4. cdist-type__apt_key_uri(7)

      +

      16.4. cdist-type__apt_key_uri(7)

      -

      16.4.1. NAME

      +

      16.4.1. NAME

      cdist-type__apt_key_uri - Add apt key from uri

      -

      16.4.2. DESCRIPTION

      +

      16.4.2. DESCRIPTION

      Download a key from an uri and add it to the apt keyring.

      -

      16.4.3. REQUIRED PARAMETERS

      -
      -
      uri
      -
      the uri from which to download the key
      +

      16.4.3. REQUIRED PARAMETERS

      +
      +
      uri

      the uri from which to download the key

      +
      -

      16.4.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      'present' or 'absent', defaults to 'present'
      -
      name
      -
      a name for this key, used when testing if it is already installed. -Defaults to __object_id
      +

      16.4.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present' or 'absent', defaults to 'present'

      +
      +
      name

      a name for this key, used when testing if it is already installed. +Defaults to __object_id

      +
      -

      16.4.5. EXAMPLES

      -
      __apt_key_uri rabbitmq \
      +

      16.4.5. EXAMPLES

      +
      __apt_key_uri rabbitmq \
          --name 'RabbitMQ Release Signing Key <info@rabbitmq.com>' \
          --uri http://www.rabbitmq.com/rabbitmq-signing-key-public.asc \
          --state present
      @@ -403,11 +394,11 @@ Defaults to __object_id
       
      -

      16.4.6. AUTHORS

      +

      16.4.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.4.7. COPYING

      +

      16.4.7. COPYING

      Copyright (C) 2011-2014 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__apt_mark.html b/src/extra/manual/beta/man7/cdist-type__apt_mark.html index 68d120bc..d3783f0e 100644 --- a/src/extra/manual/beta/man7/cdist-type__apt_mark.html +++ b/src/extra/manual/beta/man7/cdist-type__apt_mark.html @@ -8,7 +8,7 @@ - 16.5. cdist-type__apt_mark(7) — cdist 6.5.6 documentation + 16.5. cdist-type__apt_mark(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.5. cdist-type__apt_mark(7)
    • +
    • 16.5. cdist-type__apt_mark(7)
    • @@ -367,32 +358,32 @@
      -

      16.5. cdist-type__apt_mark(7)

      +

      16.5. cdist-type__apt_mark(7)

      -

      16.5.1. NAME

      +

      16.5.1. NAME

      cdist-type__apt_mark - set package state as 'hold' or 'unhold'

      -

      16.5.2. DESCRIPTION

      +

      16.5.2. DESCRIPTION

      See apt-mark(8) for details.

      -

      16.5.3. REQUIRED PARAMETERS

      -
      -
      state
      -
      Either "hold" or "unhold".
      +

      16.5.3. REQUIRED PARAMETERS

      +
      +
      state

      Either "hold" or "unhold".

      +
      -

      16.5.4. OPTIONAL PARAMETERS

      -
      -
      name
      -
      If supplied, use the name and not the object id as the package name.
      +

      16.5.4. OPTIONAL PARAMETERS

      +
      +
      name

      If supplied, use the name and not the object id as the package name.

      +
      -

      16.5.5. EXAMPLES

      -
      # hold package
      +

      16.5.5. EXAMPLES

      +
      # hold package
       __apt_mark quagga --state hold
       # unhold package
       __apt_mark quagga --state unhold
      @@ -400,11 +391,11 @@ __apt_mark quagga --state unhold
       
      -

      16.5.6. AUTHORS

      +

      16.5.6. AUTHORS

      Ander Punnar <cdist--@--kvlt.ee>

      -

      16.5.7. COPYING

      +

      16.5.7. COPYING

      Copyright (C) 2016 Ander Punnar. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__apt_norecommends.html b/src/extra/manual/beta/man7/cdist-type__apt_norecommends.html index 6c0fc006..518a6247 100644 --- a/src/extra/manual/beta/man7/cdist-type__apt_norecommends.html +++ b/src/extra/manual/beta/man7/cdist-type__apt_norecommends.html @@ -8,7 +8,7 @@ - 16.6. cdist-type__apt_norecommends(7) — cdist 6.5.6 documentation + 16.6. cdist-type__apt_norecommends(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.6. cdist-type__apt_norecommends(7)
    • +
    • 16.6. cdist-type__apt_norecommends(7)
    • @@ -367,35 +358,35 @@
      -

      16.6. cdist-type__apt_norecommends(7)

      +

      16.6. cdist-type__apt_norecommends(7)

      -

      16.6.1. NAME

      +

      16.6.1. NAME

      cdist-type__apt_norecommends - Configure apt to not install recommended packages

      -

      16.6.2. DESCRIPTION

      +

      16.6.2. DESCRIPTION

      Configure apt to not install any recommended or suggested packages.

      -

      16.6.3. REQUIRED PARAMETERS

      +

      16.6.3. REQUIRED PARAMETERS

      None.

      -

      16.6.4. OPTIONAL PARAMETERS

      +

      16.6.4. OPTIONAL PARAMETERS

      None.

      -

      16.6.5. EXAMPLES

      -
      __apt_norecommends
      +

      16.6.5. EXAMPLES

      +
      __apt_norecommends
       
      -

      16.6.6. AUTHORS

      +

      16.6.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.6.7. COPYING

      +

      16.6.7. COPYING

      Copyright (C) 2014 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__apt_ppa.html b/src/extra/manual/beta/man7/cdist-type__apt_ppa.html index e98685e8..1853e192 100644 --- a/src/extra/manual/beta/man7/cdist-type__apt_ppa.html +++ b/src/extra/manual/beta/man7/cdist-type__apt_ppa.html @@ -8,7 +8,7 @@ - 16.7. cdist-type__apt_ppa(7) — cdist 6.5.6 documentation + 16.7. cdist-type__apt_ppa(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.7. cdist-type__apt_ppa(7)
    • +
    • 16.7. cdist-type__apt_ppa(7)
    • @@ -367,30 +358,30 @@
      -

      16.7. cdist-type__apt_ppa(7)

      +

      16.7. cdist-type__apt_ppa(7)

      -

      16.7.1. NAME

      +

      16.7.1. NAME

      cdist-type__apt_ppa - Manage ppa repositories

      -

      16.7.2. DESCRIPTION

      +

      16.7.2. DESCRIPTION

      This cdist type allows manage ubuntu ppa repositories.

      -

      16.7.3. REQUIRED PARAMETERS

      -
      -
      state
      -
      The state the ppa should be in, either 'present' or 'absent'. -Defaults to 'present'
      +

      16.7.3. REQUIRED PARAMETERS

      +
      +
      state

      The state the ppa should be in, either 'present' or 'absent'. +Defaults to 'present'

      +
      -

      16.7.4. OPTIONAL PARAMETERS

      +

      16.7.4. OPTIONAL PARAMETERS

      None.

      -

      16.7.5. EXAMPLES

      -
      # Enable a ppa repository
      +

      16.7.5. EXAMPLES

      +
      # Enable a ppa repository
       __apt_ppa ppa:sans-intern/missing-bits
       # same as
       __apt_ppa ppa:sans-intern/missing-bits --state present
      @@ -401,11 +392,11 @@ __apt_ppa ppa:sans-intern/missing-bits --state absent
       
      -

      16.7.6. AUTHORS

      +

      16.7.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.7.7. COPYING

      +

      16.7.7. COPYING

      Copyright (C) 2011-2014 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__apt_source.html b/src/extra/manual/beta/man7/cdist-type__apt_source.html index 4b2c5cb1..8168cd3a 100644 --- a/src/extra/manual/beta/man7/cdist-type__apt_source.html +++ b/src/extra/manual/beta/man7/cdist-type__apt_source.html @@ -8,7 +8,7 @@ - 16.8. cdist-type__apt_source(7) — cdist 6.5.6 documentation + 16.8. cdist-type__apt_source(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.8. cdist-type__apt_source(7)
    • +
    • 16.8. cdist-type__apt_source(7)
    • @@ -368,47 +359,47 @@
      -

      16.8. cdist-type__apt_source(7)

      +

      16.8. cdist-type__apt_source(7)

      -

      16.8.1. NAME

      +

      16.8.1. NAME

      cdist-type__apt_source - Manage apt sources

      -

      16.8.2. DESCRIPTION

      +

      16.8.2. DESCRIPTION

      This cdist type allows you to manage apt sources. It invokes index update internally when needed so call of index updating type is not needed.

      -

      16.8.3. REQUIRED PARAMETERS

      -
      -
      uri
      -
      the uri to the apt repository
      +

      16.8.3. REQUIRED PARAMETERS

      +
      +
      uri

      the uri to the apt repository

      +
      -

      16.8.4. OPTIONAL PARAMETERS

      -
      -
      arch
      -
      set this if you need to force and specific arch (ubuntu specific)
      -
      state
      -
      'present' or 'absent', defaults to 'present'
      -
      distribution
      -
      the distribution codename to use. Defaults to DISTRIB_CODENAME from -the targets /etc/lsb-release
      -
      component
      -
      space delimited list of components to enable. Defaults to an empty string.
      +

      16.8.4. OPTIONAL PARAMETERS

      +
      +
      arch

      set this if you need to force and specific arch (ubuntu specific)

      +
      +
      state

      'present' or 'absent', defaults to 'present'

      +
      +
      distribution

      the distribution codename to use. Defaults to DISTRIB_CODENAME from +the targets /etc/lsb-release

      +
      +
      component

      space delimited list of components to enable. Defaults to an empty string.

      +
      -

      16.8.5. BOOLEAN PARAMETERS

      -
      -
      include-src
      -
      include deb-src entries
      +

      16.8.5. BOOLEAN PARAMETERS

      +
      +
      include-src

      include deb-src entries

      +
      -

      16.8.6. EXAMPLES

      -
      __apt_source rabbitmq \
      +

      16.8.6. EXAMPLES

      +
      __apt_source rabbitmq \
          --uri http://www.rabbitmq.com/debian/ \
          --distribution testing \
          --component main \
      @@ -422,11 +413,11 @@ __apt_source canonical_partner \
       
      -

      16.8.7. AUTHORS

      +

      16.8.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.8.8. COPYING

      +

      16.8.8. COPYING

      Copyright (C) 2011-2018 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__apt_unattended_upgrades.html b/src/extra/manual/beta/man7/cdist-type__apt_unattended_upgrades.html index fd0ae112..3f83baa8 100644 --- a/src/extra/manual/beta/man7/cdist-type__apt_unattended_upgrades.html +++ b/src/extra/manual/beta/man7/cdist-type__apt_unattended_upgrades.html @@ -8,7 +8,7 @@ - 16.9. cdist-type__apt_unattended_upgrades(7) — cdist 6.5.6 documentation + 16.9. cdist-type__apt_unattended_upgrades(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -344,9 +335,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.9. cdist-type__apt_unattended_upgrades(7)
    • +
    • 16.9. cdist-type__apt_unattended_upgrades(7)
    • @@ -366,49 +357,48 @@
      -

      16.9. cdist-type__apt_unattended_upgrades(7)

      +

      16.9. cdist-type__apt_unattended_upgrades(7)

      -

      16.9.1. NAME

      +

      16.9.1. NAME

      cdist-type__apt_unattended_upgrades - automatic installation of updates

      -

      16.9.2. DESCRIPTION

      +

      16.9.2. DESCRIPTION

      Install and configure unattended-upgrades package.

      For more information see https://wiki.debian.org/UnattendedUpgrades.

      -

      16.9.3. OPTIONAL MULTIPLE PARAMETERS

      -
      -
      option
      -

      Set options for unattended-upgrades. See examples.

      +

      16.9.3. OPTIONAL MULTIPLE PARAMETERS

      +
      +
      option

      Set options for unattended-upgrades. See examples.

      Supported options with default values (as of 2020-01-17) are:

      -
        -
      • AutoFixInterruptedDpkg, default is "true"
      • -
      • MinimalSteps, default is "true"
      • -
      • InstallOnShutdown, default is "false"
      • -
      • Mail, default is "" (empty)
      • -
      • MailOnlyOnError, default is "false"
      • -
      • Remove-Unused-Kernel-Packages, default is "true"
      • -
      • Remove-New-Unused-Dependencies, default is "true"
      • -
      • Remove-Unused-Dependencies, default is "false"
      • -
      • Automatic-Reboot, default is "false"
      • -
      • Automatic-Reboot-WithUsers, default is "true"
      • -
      • Automatic-Reboot-Time, default is "02:00"
      • -
      • SyslogEnable, default is "false"
      • -
      • SyslogFacility, default is "daemon"
      • -
      • OnlyOnACPower, default is "true"
      • -
      • Skip-Updates-On-Metered-Connections, default is "true"
      • -
      • Verbose, default is "false"
      • -
      • Debug, default is "false"
      • +
          +
        • AutoFixInterruptedDpkg, default is "true"

        • +
        • MinimalSteps, default is "true"

        • +
        • InstallOnShutdown, default is "false"

        • +
        • Mail, default is "" (empty)

        • +
        • MailOnlyOnError, default is "false"

        • +
        • Remove-Unused-Kernel-Packages, default is "true"

        • +
        • Remove-New-Unused-Dependencies, default is "true"

        • +
        • Remove-Unused-Dependencies, default is "false"

        • +
        • Automatic-Reboot, default is "false"

        • +
        • Automatic-Reboot-WithUsers, default is "true"

        • +
        • Automatic-Reboot-Time, default is "02:00"

        • +
        • SyslogEnable, default is "false"

        • +
        • SyslogFacility, default is "daemon"

        • +
        • OnlyOnACPower, default is "true"

        • +
        • Skip-Updates-On-Metered-Connections, default is "true"

        • +
        • Verbose, default is "false"

        • +
        • Debug, default is "false"

      -
      blacklist
      -
      Python regular expressions, matching packages to exclude from upgrading.
      +
      blacklist

      Python regular expressions, matching packages to exclude from upgrading.

      +
      -

      16.9.4. EXAMPLES

      -
      __apt_unattended_upgrades \
      +

      16.9.4. EXAMPLES

      +
      __apt_unattended_upgrades \
           --option Mail=root \
           --option MailOnlyOnError=true \
           --blacklist multipath-tools \
      @@ -417,11 +407,11 @@
       
      -

      16.9.5. AUTHORS

      +

      16.9.5. AUTHORS

      Ander Punnar <ander-at-kvlt-dot-ee>

      -

      16.9.6. COPYING

      +

      16.9.6. COPYING

      Copyright (C) 2020 Ander Punnar. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any diff --git a/src/extra/manual/beta/man7/cdist-type__apt_update_index.html b/src/extra/manual/beta/man7/cdist-type__apt_update_index.html index 15dad0e5..94c743a3 100644 --- a/src/extra/manual/beta/man7/cdist-type__apt_update_index.html +++ b/src/extra/manual/beta/man7/cdist-type__apt_update_index.html @@ -8,7 +8,7 @@ - 16.10. cdist-type__apt_update_index(7) — cdist 6.5.6 documentation + 16.10. cdist-type__apt_update_index(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.10. cdist-type__apt_update_index(7)
    • +
    • 16.10. cdist-type__apt_update_index(7)
    • @@ -367,35 +358,35 @@
      -

      16.10. cdist-type__apt_update_index(7)

      +

      16.10. cdist-type__apt_update_index(7)

      -

      16.10.1. NAME

      +

      16.10.1. NAME

      cdist-type__apt_update_index - Update apt's package index

      -

      16.10.2. DESCRIPTION

      +

      16.10.2. DESCRIPTION

      This cdist type runs apt-get update whenever any apt sources have changed.

      -

      16.10.3. REQUIRED PARAMETERS

      +

      16.10.3. REQUIRED PARAMETERS

      None.

      -

      16.10.4. OPTIONAL PARAMETERS

      +

      16.10.4. OPTIONAL PARAMETERS

      None.

      -

      16.10.5. EXAMPLES

      -
      __apt_update_index
      +

      16.10.5. EXAMPLES

      +
      __apt_update_index
       
      -

      16.10.6. AUTHORS

      +

      16.10.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.10.7. COPYING

      +

      16.10.7. COPYING

      Copyright (C) 2011 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__block.html b/src/extra/manual/beta/man7/cdist-type__block.html index adaab3b5..68be6edb 100644 --- a/src/extra/manual/beta/man7/cdist-type__block.html +++ b/src/extra/manual/beta/man7/cdist-type__block.html @@ -8,7 +8,7 @@ - 16.11. cdist-type__block(7) — cdist 6.5.6 documentation + 16.11. cdist-type__block(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.11. cdist-type__block(7)
    • +
    • 16.11. cdist-type__block(7)
    • @@ -368,56 +359,56 @@
      -

      16.11. cdist-type__block(7)

      +

      16.11. cdist-type__block(7)

      -

      16.11.1. NAME

      +

      16.11.1. NAME

      cdist-type__block - Manage blocks of text in files

      -

      16.11.2. DESCRIPTION

      +

      16.11.2. DESCRIPTION

      Manage a block of text in an existing file. The block is identified using the prefix and suffix parameters. Everything between prefix and suffix is considered to be a managed block of text.

      -

      16.11.3. REQUIRED PARAMETERS

      -
      -
      text
      -
      the text to manage. -If text is '-' (dash), take what was written to stdin as the text.
      +

      16.11.3. REQUIRED PARAMETERS

      +
      +
      text

      the text to manage. +If text is '-' (dash), take what was written to stdin as the text.

      +
      -

      16.11.4. OPTIONAL PARAMETERS

      -
      -
      file
      -
      the file in which to manage the text block. -Defaults to object_id.
      -
      prefix
      -
      the prefix to add before the text. -Defaults to #cdist:__block/$__object_id
      -
      suffix
      -
      the suffix to add after the text. -Defaults to #/cdist:__block/$__object_id
      -
      state
      -
      'present' or 'absent', defaults to 'present'
      +

      16.11.4. OPTIONAL PARAMETERS

      +
      +
      file

      the file in which to manage the text block. +Defaults to object_id.

      +
      +
      prefix

      the prefix to add before the text. +Defaults to #cdist:__block/$__object_id

      +
      +
      suffix

      the suffix to add after the text. +Defaults to #/cdist:__block/$__object_id

      +
      +
      state

      'present' or 'absent', defaults to 'present'

      +
      -

      16.11.5. MESSAGES

      -
      -
      add
      -
      block was added
      -
      update
      -
      block was updated/changed
      -
      remove
      -
      block was removed
      +

      16.11.5. MESSAGES

      +
      +
      add

      block was added

      +
      +
      update

      block was updated/changed

      +
      +
      remove

      block was removed

      +
      -

      16.11.6. EXAMPLES

      -
      # text from argument
      +

      16.11.6. EXAMPLES

      +
      # text from argument
       __block /path/to/file \
          --prefix '#start' \
          --suffix '#end' \
      @@ -434,11 +425,11 @@ __block some-id \
       
      -

      16.11.7. AUTHORS

      +

      16.11.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.11.8. COPYING

      +

      16.11.8. COPYING

      Copyright (C) 2013 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__ccollect_source.html b/src/extra/manual/beta/man7/cdist-type__ccollect_source.html index cb87ac9e..513150ca 100644 --- a/src/extra/manual/beta/man7/cdist-type__ccollect_source.html +++ b/src/extra/manual/beta/man7/cdist-type__ccollect_source.html @@ -8,7 +8,7 @@ - 16.12. cdist-type__ccollect_source(7) — cdist 6.5.6 documentation + 16.12. cdist-type__ccollect_source(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -348,9 +339,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.12. cdist-type__ccollect_source(7)
    • +
    • 16.12. cdist-type__ccollect_source(7)
    • @@ -370,52 +361,52 @@
      -

      16.12. cdist-type__ccollect_source(7)

      +

      16.12. cdist-type__ccollect_source(7)

      -

      16.12.1. NAME

      +

      16.12.1. NAME

      cdist-type__ccollect_source - Manage ccollect sources

      -

      16.12.2. DESCRIPTION

      +

      16.12.2. DESCRIPTION

      This cdist type allows you to create or delete ccollect sources.

      -

      16.12.3. REQUIRED PARAMETERS

      -
      -
      source
      -
      The source from which to backup
      -
      destination
      -
      The destination directory
      +

      16.12.3. REQUIRED PARAMETERS

      +
      +
      source

      The source from which to backup

      +
      +
      destination

      The destination directory

      +
      -

      16.12.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      'present' or 'absent', defaults to 'present'
      -
      ccollectconf
      -
      The CCOLLECT_CONF directory. Defaults to /etc/ccollect.
      +

      16.12.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present' or 'absent', defaults to 'present'

      +
      +
      ccollectconf

      The CCOLLECT_CONF directory. Defaults to /etc/ccollect.

      +
      -

      16.12.5. OPTIONAL MULTIPLE PARAMETERS

      -
      -
      exclude
      -
      Paths to exclude of backup
      +

      16.12.5. OPTIONAL MULTIPLE PARAMETERS

      +
      +
      exclude

      Paths to exclude of backup

      +
      -

      16.12.6. BOOLEAN PARAMETERS

      -
      -
      verbose
      -
      Whether to report backup verbosely
      -
      create-destination
      -
      Create the directory specified in the destination parameter on the remote host
      +

      16.12.6. BOOLEAN PARAMETERS

      +
      +
      verbose

      Whether to report backup verbosely

      +
      +
      create-destination

      Create the directory specified in the destination parameter on the remote host

      +
      -

      16.12.7. EXAMPLES

      -
      __ccollect_source doc.ungleich.ch \
      +

      16.12.7. EXAMPLES

      +
      __ccollect_source doc.ungleich.ch \
           --source doc.ungleich.ch:/ \
           --destination /backup/doc.ungleich.ch \
           --exclude '/proc/*' --exclude '/sys/*' \
      @@ -431,15 +422,15 @@ __ccollect_source doc.ungleich.ch \
       
      -

      16.12.8. SEE ALSO

      +

      16.12.8. SEE ALSO

      ccollect(1)

      -

      16.12.9. AUTHORS

      +

      16.12.9. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.12.10. COPYING

      +

      16.12.10. COPYING

      Copyright (C) 2014 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__cdist.html b/src/extra/manual/beta/man7/cdist-type__cdist.html index 2478d45a..08366595 100644 --- a/src/extra/manual/beta/man7/cdist-type__cdist.html +++ b/src/extra/manual/beta/man7/cdist-type__cdist.html @@ -8,7 +8,7 @@ - 16.13. cdist-type__cdist(7) — cdist 6.5.6 documentation + 16.13. cdist-type__cdist(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.13. cdist-type__cdist(7)
    • +
    • 16.13. cdist-type__cdist(7)
    • @@ -367,13 +358,13 @@
      -

      16.13. cdist-type__cdist(7)

      +

      16.13. cdist-type__cdist(7)

      -

      16.13.1. NAME

      +

      16.13.1. NAME

      cdist-type__cdist - Manage cdist installations

      -

      16.13.2. DESCRIPTION

      +

      16.13.2. DESCRIPTION

      This cdist type allows you to easily setup cdist on another box, to allow the other box to configure systems.

      @@ -383,25 +374,25 @@ other hosts.

      This type will use git to clone

      -

      16.13.3. REQUIRED PARAMETERS

      +

      16.13.3. REQUIRED PARAMETERS

      -

      16.13.4. OPTIONAL PARAMETERS

      -
      -
      username
      -
      Select the user to create for the cdist installation. -Defaults to "cdist".
      -
      source
      -
      Select the source from which to clone cdist from. -Defaults to "git@code.ungleich.ch:ungleich-public/cdist.git".
      -
      branch
      -
      Select the branch to checkout from. -Defaults to "master".
      +

      16.13.4. OPTIONAL PARAMETERS

      +
      +
      username

      Select the user to create for the cdist installation. +Defaults to "cdist".

      +
      +
      source

      Select the source from which to clone cdist from. +Defaults to "git@code.ungleich.ch:ungleich-public/cdist.git".

      +
      +
      branch

      Select the branch to checkout from. +Defaults to "master".

      +
      -

      16.13.5. EXAMPLES

      -
      # Install cdist for user cdist in her home as subfolder cdist
      +

      16.13.5. EXAMPLES

      +
      # Install cdist for user cdist in her home as subfolder cdist
       __cdist /home/cdist/cdist
       
       # Use alternative source
      @@ -410,11 +401,11 @@ __cdist --source "git@code.ungleich.ch:ungleich-public/cdi
       
      -

      16.13.6. AUTHORS

      +

      16.13.6. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.13.7. COPYING

      +

      16.13.7. COPYING

      Copyright (C) 2013 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__cdist_preos_trigger.html b/src/extra/manual/beta/man7/cdist-type__cdist_preos_trigger.html index a73597b7..e858daae 100644 --- a/src/extra/manual/beta/man7/cdist-type__cdist_preos_trigger.html +++ b/src/extra/manual/beta/man7/cdist-type__cdist_preos_trigger.html @@ -8,7 +8,7 @@ - 16.14. cdist-type__cdist_preos_trigger(7) — cdist 6.5.6 documentation + 16.14. cdist-type__cdist_preos_trigger(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.14. cdist-type__cdist_preos_trigger(7)
    • +
    • 16.14. cdist-type__cdist_preos_trigger(7)
    • @@ -367,40 +358,40 @@
      -

      16.14. cdist-type__cdist_preos_trigger(7)

      +

      16.14. cdist-type__cdist_preos_trigger(7)

      -

      16.14.1. NAME

      +

      16.14.1. NAME

      cdist-type__cdist_preos_trigger - configure cdist preos trigger

      -

      16.14.2. DESCRIPTION

      +

      16.14.2. DESCRIPTION

      Create cdist PreOS trigger by creating systemd unit file that will be started at boot and will execute trigger command - connect to specified host and port.

      -

      16.14.3. REQUIRED PARAMETERS

      -
      -
      trigger-command
      -
      Command that will be executed as a PreOS cdist trigger.
      +

      16.14.3. REQUIRED PARAMETERS

      +
      +
      trigger-command

      Command that will be executed as a PreOS cdist trigger.

      +
      -

      16.14.4. OPTIONAL PARAMETERS

      +

      16.14.4. OPTIONAL PARAMETERS

      None

      -

      16.14.5. EXAMPLES

      -
      # Configure default curl trigger for host cdist.ungleich.ch at port 80.
      +

      16.14.5. EXAMPLES

      +
      # Configure default curl trigger for host cdist.ungleich.ch at port 80.
       __cdist_preos_trigger http --trigger-command '/usr/bin/curl cdist.ungleich.ch:80'
       
      -

      16.14.6. AUTHORS

      +

      16.14.6. AUTHORS

      Darko Poljak <darko.poljak--@--ungleich.ch>

      -

      16.14.7. COPYING

      +

      16.14.7. COPYING

      Copyright (C) 2016 Darko Poljak. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__cdistmarker.html b/src/extra/manual/beta/man7/cdist-type__cdistmarker.html index 4c3435f9..19abefa5 100644 --- a/src/extra/manual/beta/man7/cdist-type__cdistmarker.html +++ b/src/extra/manual/beta/man7/cdist-type__cdistmarker.html @@ -8,7 +8,7 @@ - 16.15. cdist-type__cdistmarker(7) — cdist 6.5.6 documentation + 16.15. cdist-type__cdistmarker(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.15. cdist-type__cdistmarker(7)
    • +
    • 16.15. cdist-type__cdistmarker(7)
    • @@ -367,36 +358,36 @@
      -

      16.15. cdist-type__cdistmarker(7)

      +

      16.15. cdist-type__cdistmarker(7)

      -

      16.15.1. NAME

      +

      16.15.1. NAME

      cdist-type__cdistmarker - Add a timestamped cdist marker.

      -

      16.15.2. DESCRIPTION

      +

      16.15.2. DESCRIPTION

      This type is used to add a common marker file which indicates that a given machine is being managed by cdist. The contents of this file consist of a timestamp, which can be used to determine the most recent time at which cdist was run against the machine in question.

      -

      16.15.3. REQUIRED PARAMETERS

      +

      16.15.3. REQUIRED PARAMETERS

      None.

      -

      16.15.4. OPTIONAL PARAMETERS

      -
      -
      destination
      -
      The path and filename of the marker. -Default: /etc/cdist-configured
      -
      format
      -
      The format of the timestamp. This is passed directly to system 'date'. -Default: -u
      +

      16.15.4. OPTIONAL PARAMETERS

      +
      +
      destination

      The path and filename of the marker. +Default: /etc/cdist-configured

      +
      +
      format

      The format of the timestamp. This is passed directly to system 'date'. +Default: -u

      +
      -

      16.15.5. EXAMPLES

      -
      # Creates the marker as normal.
      +

      16.15.5. EXAMPLES

      +
      # Creates the marker as normal.
       __cdistmarker
       
       # Creates the marker differently.
      @@ -405,11 +396,11 @@ __cdistmarker --destination /tmp/cdist_marker --format '+%s
       
      -

      16.15.6. AUTHORS

      +

      16.15.6. AUTHORS

      Daniel Maher <phrawzty+cdist--@--gmail.com>

      -

      16.15.7. COPYING

      +

      16.15.7. COPYING

      Copyright (C) 2011 Daniel Maher. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__check_messages.html b/src/extra/manual/beta/man7/cdist-type__check_messages.html index a1190d4f..2746fc31 100644 --- a/src/extra/manual/beta/man7/cdist-type__check_messages.html +++ b/src/extra/manual/beta/man7/cdist-type__check_messages.html @@ -8,7 +8,7 @@ - 16.16. cdist-type__check_messages(7) — cdist 6.5.6 documentation + 16.16. cdist-type__check_messages(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -344,9 +335,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.16. cdist-type__check_messages(7)
    • +
    • 16.16. cdist-type__check_messages(7)
    • @@ -366,13 +357,13 @@
      -

      16.16. cdist-type__check_messages(7)

      +

      16.16. cdist-type__check_messages(7)

      -

      16.16.1. NAME

      +

      16.16.1. NAME

      cdist-type__check_messages - Check messages for pattern and execute command on match.

      -

      16.16.2. DESCRIPTION

      +

      16.16.2. DESCRIPTION

      Check messages for pattern and execute command on match.

      This type is useful if you chain together multiple related types using dependencies and want to restart service if at least one type changes @@ -382,28 +373,28 @@ something.

      cdist manifest documentation.

      -

      16.16.3. REQUIRED PARAMETERS

      -
      -
      pattern
      -
      Extended regular expression pattern for search (passed to grep -E).
      -
      execute
      -
      Command to execute on pattern match.
      +

      16.16.3. REQUIRED PARAMETERS

      +
      +
      pattern

      Extended regular expression pattern for search (passed to grep -E).

      +
      +
      execute

      Command to execute on pattern match.

      +
      -

      16.16.4. EXAMPLES

      -
      __check_messages munin \
      +

      16.16.4. EXAMPLES

      +
      __check_messages munin \
           --pattern '^__(file|link|line)/etc/munin/' \
           --execute 'service munin-node restart'
       
      -

      16.16.5. AUTHORS

      +

      16.16.5. AUTHORS

      Ander Punnar <ander-at-kvlt-dot-ee>

      -

      16.16.6. COPYING

      +

      16.16.6. COPYING

      Copyright (C) 2019 Ander Punnar. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__chroot_mount.html b/src/extra/manual/beta/man7/cdist-type__chroot_mount.html index 09879844..4ef500a1 100644 --- a/src/extra/manual/beta/man7/cdist-type__chroot_mount.html +++ b/src/extra/manual/beta/man7/cdist-type__chroot_mount.html @@ -8,7 +8,7 @@ - 16.17. cdist-type__chroot_mount(7) — cdist 6.5.6 documentation + 16.17. cdist-type__chroot_mount(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.17. cdist-type__chroot_mount(7)
    • +
    • 16.17. cdist-type__chroot_mount(7)
    • @@ -368,37 +359,37 @@
      -

      16.17. cdist-type__chroot_mount(7)

      +

      16.17. cdist-type__chroot_mount(7)

      -

      16.17.1. NAME

      +

      16.17.1. NAME

      cdist-type__chroot_mount - mount a chroot

      -

      16.17.2. DESCRIPTION

      +

      16.17.2. DESCRIPTION

      Mount and prepare a chroot for running commands within it.

      -

      16.17.3. REQUIRED PARAMETERS

      +

      16.17.3. REQUIRED PARAMETERS

      None

      -

      16.17.4. OPTIONAL PARAMETERS

      -
      -
      manage-resolv-conf
      -
      manage /etc/resolv.conf inside the chroot. +

      16.17.4. OPTIONAL PARAMETERS

      +
      +
      manage-resolv-conf

      manage /etc/resolv.conf inside the chroot. Use the value of this parameter as the suffix to save a copy of the current /etc/resolv.conf to /etc/resolv.conf.$suffix. This is used by the __chroot_umount type to restore the initial -file content when unmounting the chroot.

      +file content when unmounting the chroot.

      +
      -

      16.17.5. BOOLEAN PARAMETERS

      +

      16.17.5. BOOLEAN PARAMETERS

      None.

      -

      16.17.6. EXAMPLES

      -
      __chroot_mount /path/to/chroot
      +

      16.17.6. EXAMPLES

      +
      __chroot_mount /path/to/chroot
       
       __chroot_mount /path/to/chroot \
         --manage-resolv-conf "some-known-string"
      @@ -406,11 +397,11 @@ __chroot_mount /path/to/chroot \
       
      -

      16.17.7. AUTHORS

      +

      16.17.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.17.8. COPYING

      +

      16.17.8. COPYING

      Copyright (C) 2012-2017 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__chroot_umount.html b/src/extra/manual/beta/man7/cdist-type__chroot_umount.html index bfdbaedd..86f3aa79 100644 --- a/src/extra/manual/beta/man7/cdist-type__chroot_umount.html +++ b/src/extra/manual/beta/man7/cdist-type__chroot_umount.html @@ -8,7 +8,7 @@ - 16.18. cdist-type__chroot_umount(7) — cdist 6.5.6 documentation + 16.18. cdist-type__chroot_umount(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.18. cdist-type__chroot_umount(7)
    • +
    • 16.18. cdist-type__chroot_umount(7)
    • @@ -369,37 +360,37 @@
      -

      16.18. cdist-type__chroot_umount(7)

      +

      16.18. cdist-type__chroot_umount(7)

      -

      16.18.1. NAME

      +

      16.18.1. NAME

      cdist-type__chroot_umount - unmount a chroot mounted by __chroot_mount

      -

      16.18.2. DESCRIPTION

      +

      16.18.2. DESCRIPTION

      Undo what __chroot_mount did.

      -

      16.18.3. REQUIRED PARAMETERS

      +

      16.18.3. REQUIRED PARAMETERS

      None

      -

      16.18.4. OPTIONAL PARAMETERS

      -
      -
      manage-resolv-conf
      -
      manage /etc/resolv.conf inside the chroot. +

      16.18.4. OPTIONAL PARAMETERS

      +
      +
      manage-resolv-conf

      manage /etc/resolv.conf inside the chroot. Use the value of this parameter as the suffix to find the backup file that was saved by the __chroot_mount. This is used by the to restore the initial file content when unmounting -the chroot.

      +the chroot.

      +
      -

      16.18.5. BOOLEAN PARAMETERS

      +

      16.18.5. BOOLEAN PARAMETERS

      None.

      -

      16.18.6. EXAMPLES

      -
      __chroot_umount /path/to/chroot
      +

      16.18.6. EXAMPLES

      +
      __chroot_umount /path/to/chroot
       
       __chroot_umount /path/to/chroot \
         --manage-resolv-conf "some-known-string"
      @@ -407,15 +398,15 @@ __chroot_umount /path/to/chroot \
       
      -

      16.18.7. SEE ALSO

      +

      16.18.7. SEE ALSO

      cdist-type__chroot_mount(7)

      -

      16.18.8. AUTHORS

      +

      16.18.8. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.18.9. COPYING

      +

      16.18.9. COPYING

      Copyright (C) 2012-2017 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__clean_path.html b/src/extra/manual/beta/man7/cdist-type__clean_path.html index d87aaeae..ca7768f3 100644 --- a/src/extra/manual/beta/man7/cdist-type__clean_path.html +++ b/src/extra/manual/beta/man7/cdist-type__clean_path.html @@ -8,7 +8,7 @@ - 16.19. cdist-type__clean_path(7) — cdist 6.5.6 documentation + 16.19. cdist-type__clean_path(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.19. cdist-type__clean_path(7)
    • +
    • 16.19. cdist-type__clean_path(7)
    • @@ -367,39 +358,47 @@
      -

      16.19. cdist-type__clean_path(7)

      +

      16.19. cdist-type__clean_path(7)

      -

      16.19.1. NAME

      +

      16.19.1. NAME

      cdist-type__clean_path - Remove files and directories which match the pattern.

      -

      16.19.2. DESCRIPTION

      +

      16.19.2. DESCRIPTION

      Remove files and directories which match the pattern.

      -

      Provided path (as __object_id) must be a directory.

      -

      Patterns are passed to find's -regex - see find(1) for more details.

      -

      Look up of files and directories is non-recursive (-maxdepth 1).

      -

      Parent directory is excluded (-mindepth 1).

      +

      Provided path must be a directory.

      +

      Patterns are passed to find's -regex - see find(1) for more details.

      +

      Look up of files and directories is non-recursive (-maxdepth 1).

      +

      Parent directory is excluded (-mindepth 1).

      This type is not POSIX compatible (sorry, Solaris users).

      -

      16.19.3. REQUIRED PARAMETERS

      -
      -
      pattern
      -
      Pattern of files which are removed from path.
      +

      16.19.3. REQUIRED PARAMETERS

      +
      +
      pattern

      Pattern of files which are removed from path.

      +
      -

      16.19.4. OPTIONAL PARAMETERS

      -
      -
      exclude
      -
      Pattern of files which are excluded from removal.
      -
      onchange
      -
      The code to run if files or directories were removed.
      +

      16.19.4. OPTIONAL PARAMETERS

      +
      +
      path

      Path which will be cleaned. Defaults to $__object_id.

      +
      +
      exclude

      Pattern of files which are excluded from removal.

      +
      +
      onchange

      The code to run if files or directories were removed.

      +
      -

      16.19.5. EXAMPLES

      -
      __clean_path /etc/apache2/conf-enabled \
      +

      16.19.5. EXAMPLES

      +
      __clean_path /etc/apache2/conf-enabled \
      +    --pattern '.+' \
      +    --exclude '.+\(charset\.conf\|security\.conf\)' \
      +    --onchange 'service apache2 restart'
      +
      +__clean_path apache2-conf-enabled \
      +    --path /etc/apache2/conf-enabled \
           --pattern '.+' \
           --exclude '.+\(charset\.conf\|security\.conf\)' \
           --onchange 'service apache2 restart'
      @@ -407,11 +406,11 @@
       
      -

      16.19.6. AUTHORS

      +

      16.19.6. AUTHORS

      Ander Punnar <ander-at-kvlt-dot-ee>

      -

      16.19.7. COPYING

      +

      16.19.7. COPYING

      Copyright (C) 2019 Ander Punnar. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__config_file.html b/src/extra/manual/beta/man7/cdist-type__config_file.html index d758fa7c..ccc62d35 100644 --- a/src/extra/manual/beta/man7/cdist-type__config_file.html +++ b/src/extra/manual/beta/man7/cdist-type__config_file.html @@ -8,7 +8,7 @@ - 16.20. cdist-type__config_file(7) — cdist 6.5.6 documentation + 16.20. cdist-type__config_file(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.20. cdist-type__config_file(7)
    • +
    • 16.20. cdist-type__config_file(7)
    • @@ -368,41 +359,41 @@
      -

      16.20. cdist-type__config_file(7)

      +

      16.20. cdist-type__config_file(7)

      -

      16.20.1. NAME

      +

      16.20.1. NAME

      cdist-type__config_file - _Manages config files

      -

      16.20.2. DESCRIPTION

      +

      16.20.2. DESCRIPTION

      Deploy config files using the file type. Run the given code if the files changes.

      -

      16.20.3. REQUIRED PARAMETERS

      +

      16.20.3. REQUIRED PARAMETERS

      None.

      -

      16.20.4. OPTIONAL PARAMETERS

      -
      -
      group
      -
      see cdist-type__file
      -
      mode
      -
      see cdist-type__file
      -
      onchange
      -
      the code to run if the file changes
      -
      owner
      -
      see cdist-type__file
      -
      source
      -
      Path to the config file. -If source is '-' (dash), take what was written to stdin as the config file content.
      -
      state
      -
      see cdist-type__file
      +

      16.20.4. OPTIONAL PARAMETERS

      +
      +
      group

      see cdist-type__file

      +
      +
      mode

      see cdist-type__file

      +
      +
      onchange

      the code to run if the file changes

      +
      +
      owner

      see cdist-type__file

      +
      +
      source

      Path to the config file. +If source is '-' (dash), take what was written to stdin as the config file content.

      +
      +
      state

      see cdist-type__file

      +
      -

      16.20.5. EXAMPLES

      -
      __config_file /etc/consul/conf.d/watch_foo.json \
      +

      16.20.5. EXAMPLES

      +
      __config_file /etc/consul/conf.d/watch_foo.json \
          --owner root --group consul --mode 640 \
          --source "$__type/files/watch_foo.json" \
          --state present \
      @@ -411,15 +402,15 @@ If source is '-' (dash), take what was written to stdin as the config file conte
       
      -

      16.20.6. SEE ALSO

      +

      16.20.6. SEE ALSO

      cdist-type__file(7)

      -

      16.20.7. AUTHORS

      +

      16.20.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.20.8. COPYING

      +

      16.20.8. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul.html b/src/extra/manual/beta/man7/cdist-type__consul.html index 17e0b876..834e9cbe 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul.html +++ b/src/extra/manual/beta/man7/cdist-type__consul.html @@ -8,7 +8,7 @@ - 16.21. cdist-type__consul(7) — cdist 6.5.6 documentation + 16.21. cdist-type__consul(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.21. cdist-type__consul(7)
    • +
    • 16.21. cdist-type__consul(7)
    • @@ -369,51 +360,51 @@
      -

      16.21. cdist-type__consul(7)

      +

      16.21. cdist-type__consul(7)

      -

      16.21.1. NAME

      +

      16.21.1. NAME

      cdist-type__consul - Install consul

      -

      16.21.2. DESCRIPTION

      +

      16.21.2. DESCRIPTION

      Downloads and installs the consul binary from https://dl.bintray.com/mitchellh/consul. Note that the consul binary is downloaded on the server (the machine running cdist) and then deployed to the target host using the __file type unless --direct parameter is used.

      -

      16.21.3. REQUIRED PARAMETERS

      +

      16.21.3. REQUIRED PARAMETERS

      None.

      -

      16.21.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      either 'present' or 'absent'. Defaults to 'present'
      -
      version
      -
      which version of consul to install. See ./files/versions for a list of -supported versions. Defaults to the latest known version.
      +

      16.21.4. OPTIONAL PARAMETERS

      +
      +
      state

      either 'present' or 'absent'. Defaults to 'present'

      +
      +
      version

      which version of consul to install. See ./files/versions for a list of +supported versions. Defaults to the latest known version.

      +
      -

      16.21.5. BOOLEAN PARAMETERS

      -
      -
      direct
      -
      Download and deploy consul binary directly on the target machine.
      +

      16.21.5. BOOLEAN PARAMETERS

      +
      +
      direct

      Download and deploy consul binary directly on the target machine.

      +
      -

      16.21.6. MESSAGES

      +

      16.21.6. MESSAGES

      If consul binary is created using __staged_file then underlaying __file type messages are emitted.

      If consul binary is created by direct method then the following messages are emitted:

      -
      -
      /usr/local/bin/consul created
      -
      consul binary was created
      +
      +
      /usr/local/bin/consul created

      consul binary was created

      +
      -

      16.21.7. EXAMPLES

      -
      # just install using defaults
      +

      16.21.7. EXAMPLES

      +
      # just install using defaults
       __consul
       
       # install by downloading consul binary directly on the target machine
      @@ -426,14 +417,14 @@ __consul \
       
      -

      16.21.8. AUTHORS

      +

      16.21.8. AUTHORS

      -

      16.21.9. COPYING

      +

      16.21.9. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_agent.html b/src/extra/manual/beta/man7/cdist-type__consul_agent.html index be8f6caf..db736eb9 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_agent.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_agent.html @@ -8,7 +8,7 @@ - 16.22. cdist-type__consul_agent(7) — cdist 6.5.6 documentation + 16.22. cdist-type__consul_agent(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.22. cdist-type__consul_agent(7)
    • +
    • 16.22. cdist-type__consul_agent(7)
    • @@ -369,101 +360,101 @@
      -

      16.22. cdist-type__consul_agent(7)

      +

      16.22. cdist-type__consul_agent(7)

      -

      16.22.1. NAME

      +

      16.22.1. NAME

      cdist-type__consul_agent - Manage the consul agent

      -

      16.22.2. DESCRIPTION

      +

      16.22.2. DESCRIPTION

      Configure and manage the consul agent.

      -

      16.22.3. REQUIRED PARAMETERS

      +

      16.22.3. REQUIRED PARAMETERS

      None.

      -

      16.22.4. OPTIONAL PARAMETERS

      -
      -
      acl-datacenter
      -
      only used by servers. This designates the datacenter which is authoritative -for ACL information.
      -
      acl-default-policy
      -
      either "allow" or "deny"; defaults to "allow". The default policy controls the -behavior of a token when there is no matching rule.
      -
      acl-down-policy
      -
      either "allow", "deny" or "extend-cache"; "extend-cache" is the default.
      -
      acl-master-token
      -
      only used for servers in the acl_datacenter. This token will be created with +

      16.22.4. OPTIONAL PARAMETERS

      +
      +
      acl-datacenter

      only used by servers. This designates the datacenter which is authoritative +for ACL information.

      +
      +
      acl-default-policy

      either "allow" or "deny"; defaults to "allow". The default policy controls the +behavior of a token when there is no matching rule.

      +
      +
      acl-down-policy

      either "allow", "deny" or "extend-cache"; "extend-cache" is the default.

      +
      +
      acl-master-token

      only used for servers in the acl_datacenter. This token will be created with management-level permissions if it does not exist. It allows operators to -bootstrap the ACL system with a token ID that is well-known.

      -
      acl-token
      -
      when provided, the agent will use this token when making requests to the -Consul servers.
      -
      acl-ttl
      -
      used to control Time-To-Live caching of ACLs.
      -
      bind-addr
      -
      sets the bind address for cluster communication
      -
      bootstrap-expect
      -
      sets server to expect bootstrap mode
      -
      ca-file-source
      -
      path to a PEM encoded certificate authority file which will be uploaded and -configure using the ca_file config option.
      -
      cert-file-source
      -
      path to a PEM encoded certificate file which will be uploaded and -configure using the cert_file config option.
      -
      client-addr
      -
      sets the address to bind for client access
      -
      datacenter
      -
      datacenter of the agent
      -
      encrypt
      -
      provides the gossip encryption key
      -
      group
      -
      the primary group for the agent
      -
      json-config
      -
      path to a partial json config file without leading { and trailing }. -If json-config is '-' (dash), take what was written to stdin as the file content.
      -
      key-file-source
      -
      path to a PEM encoded private key file which will be uploaded and -configure using the key_file config option.
      -
      node-name
      -
      name of this node. Must be unique in the cluster
      -
      retry-join
      -
      address to attempt joining every retry_interval until at least one join works. -Can be specified multiple times.
      -
      user
      -
      the user to run the agent as
      -
      state
      -
      if the agent is 'present' or 'absent'. Defaults to 'present'. -Currently state=absent is not working due to some dependency issues.
      +bootstrap the ACL system with a token ID that is well-known.

      +
      +
      acl-token

      when provided, the agent will use this token when making requests to the +Consul servers.

      +
      +
      acl-ttl

      used to control Time-To-Live caching of ACLs.

      +
      +
      bind-addr

      sets the bind address for cluster communication

      +
      +
      bootstrap-expect

      sets server to expect bootstrap mode

      +
      +
      ca-file-source

      path to a PEM encoded certificate authority file which will be uploaded and +configure using the ca_file config option.

      +
      +
      cert-file-source

      path to a PEM encoded certificate file which will be uploaded and +configure using the cert_file config option.

      +
      +
      client-addr

      sets the address to bind for client access

      +
      +
      datacenter

      datacenter of the agent

      +
      +
      encrypt

      provides the gossip encryption key

      +
      +
      group

      the primary group for the agent

      +
      +
      json-config

      path to a partial json config file without leading { and trailing }. +If json-config is '-' (dash), take what was written to stdin as the file content.

      +
      +
      key-file-source

      path to a PEM encoded private key file which will be uploaded and +configure using the key_file config option.

      +
      +
      node-name

      name of this node. Must be unique in the cluster

      +
      +
      retry-join

      address to attempt joining every retry_interval until at least one join works. +Can be specified multiple times.

      +
      +
      user

      the user to run the agent as

      +
      +
      state

      if the agent is 'present' or 'absent'. Defaults to 'present'. +Currently state=absent is not working due to some dependency issues.

      +
      -

      16.22.5. BOOLEAN PARAMETERS

      -
      -
      disable-remote-exec
      -
      disables support for remote execution. When set to true, the agent will ignore any incoming remote exec requests.
      -
      disable-update-check
      -
      disables automatic checking for security bulletins and new version releases
      -
      leave-on-terminate
      -
      gracefully leave cluster on SIGTERM
      -
      rejoin-after-leave
      -
      rejoin the cluster using the previous state after leaving
      -
      server
      -
      used to control if an agent is in server or client mode
      -
      enable-syslog
      -
      enables logging to syslog
      -
      verify-incoming
      -
      enforce the use of TLS and verify a client's authenticity on incoming connections
      -
      verify-outgoing
      -
      enforce the use of TLS and verify the peers authenticity on outgoing connections
      -
      use-distribution-package
      -
      uses distribution package instead of upstream binary
      +

      16.22.5. BOOLEAN PARAMETERS

      +
      +
      disable-remote-exec

      disables support for remote execution. When set to true, the agent will ignore any incoming remote exec requests.

      +
      +
      disable-update-check

      disables automatic checking for security bulletins and new version releases

      +
      +
      leave-on-terminate

      gracefully leave cluster on SIGTERM

      +
      +
      rejoin-after-leave

      rejoin the cluster using the previous state after leaving

      +
      +
      server

      used to control if an agent is in server or client mode

      +
      +
      enable-syslog

      enables logging to syslog

      +
      +
      verify-incoming

      enforce the use of TLS and verify a client's authenticity on incoming connections

      +
      +
      verify-outgoing

      enforce the use of TLS and verify the peers authenticity on outgoing connections

      +
      +
      use-distribution-package

      uses distribution package instead of upstream binary

      +
      -

      16.22.6. EXAMPLES

      -
      # configure as server, bootstrap and rejoin
      +

      16.22.6. EXAMPLES

      +
      # configure as server, bootstrap and rejoin
       hostname="$(cat "$__global/explorer/hostname")"
       __consul_agent \
          --datacenter dc1 \
      @@ -506,15 +497,15 @@ __consul_agent \
       
      -

      16.22.7. SEE ALSO

      +

      16.22.7. SEE ALSO

      consul documentation at: <http://www.consul.io/docs/agent/options.html>.

      -

      16.22.8. AUTHORS

      +

      16.22.8. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.22.9. COPYING

      +

      16.22.9. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_check.html b/src/extra/manual/beta/man7/cdist-type__consul_check.html index ed47234e..f607563b 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_check.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_check.html @@ -8,7 +8,7 @@ - 16.23. cdist-type__consul_check(7) — cdist 6.5.6 documentation + 16.23. cdist-type__consul_check(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.23. cdist-type__consul_check(7)
    • +
    • 16.23. cdist-type__consul_check(7)
    • @@ -368,60 +359,60 @@
      -

      16.23. cdist-type__consul_check(7)

      +

      16.23. cdist-type__consul_check(7)

      -

      16.23.1. NAME

      +

      16.23.1. NAME

      cdist-type__consul_check - Manages consul checks

      -

      16.23.2. DESCRIPTION

      +

      16.23.2. DESCRIPTION

      Generate and deploy check definitions for a consul agent. See http://www.consul.io/docs/agent/checks.html for parameter documentation.

      Use either script together with interval, or use ttl.

      -

      16.23.3. REQUIRED PARAMETERS

      +

      16.23.3. REQUIRED PARAMETERS

      None.

      -

      16.23.4. OPTIONAL PARAMETERS

      -
      -
      docker-container-id
      -
      the id of the docker container to run
      -
      http
      -
      the url to check
      -
      id
      -
      The id of this check.
      -
      interval
      -
      the interval in which the check should run
      -
      name
      -
      The name of this check. Defaults to __object_id
      -
      notes
      -
      human readable description
      -
      script
      -
      the shell command to run
      -
      service-id
      -
      the id of the service this check is bound to
      -
      shell
      -
      the shell to run inside the docker container
      -
      state
      -
      if this check is 'present' or 'absent'. Defaults to 'present'.
      -
      status
      -
      specify the initial state of this health check
      -
      tcp
      -
      the host and port to check
      -
      timeout
      -
      after how long to timeout checks which take to long
      -
      token
      -
      ACL token to use for interacting with the catalog
      -
      ttl
      -
      how long a TTL check is considered healthy without being updated through the -HTTP interface
      +

      16.23.4. OPTIONAL PARAMETERS

      +
      +
      docker-container-id

      the id of the docker container to run

      +
      +
      http

      the url to check

      +
      +
      id

      The id of this check.

      +
      +
      interval

      the interval in which the check should run

      +
      +
      name

      The name of this check. Defaults to __object_id

      +
      +
      notes

      human readable description

      +
      +
      script

      the shell command to run

      +
      +
      service-id

      the id of the service this check is bound to

      +
      +
      shell

      the shell to run inside the docker container

      +
      +
      state

      if this check is 'present' or 'absent'. Defaults to 'present'.

      +
      +
      status

      specify the initial state of this health check

      +
      +
      tcp

      the host and port to check

      +
      +
      timeout

      after how long to timeout checks which take to long

      +
      +
      token

      ACL token to use for interacting with the catalog

      +
      +
      ttl

      how long a TTL check is considered healthy without being updated through the +HTTP interface

      +
      -

      16.23.5. EXAMPLES

      -
      __consul_check redis \
      +

      16.23.5. EXAMPLES

      +
      __consul_check redis \
          --script /usr/local/bin/check_redis.py \
          --interval 10s
       
      @@ -434,15 +425,15 @@ __consul_check some-object-id \
       
      -

      16.23.6. SEE ALSO

      +

      16.23.6. SEE ALSO

      cdist-type__consul_agent(7)

      -

      16.23.7. AUTHORS

      +

      16.23.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.23.8. COPYING

      +

      16.23.8. COPYING

      Copyright (C) 2015-2016 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_reload.html b/src/extra/manual/beta/man7/cdist-type__consul_reload.html index 5d086a4c..3132ce82 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_reload.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_reload.html @@ -8,7 +8,7 @@ - 16.24. cdist-type__consul_reload(7) — cdist 6.5.6 documentation + 16.24. cdist-type__consul_reload(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.24. cdist-type__consul_reload(7)
    • +
    • 16.24. cdist-type__consul_reload(7)
    • @@ -367,35 +358,35 @@
      -

      16.24. cdist-type__consul_reload(7)

      +

      16.24. cdist-type__consul_reload(7)

      -

      16.24.1. NAME

      +

      16.24.1. NAME

      cdist-type__consul_reload - Reload consul

      -

      16.24.2. DESCRIPTION

      +

      16.24.2. DESCRIPTION

      Reload consul after configuration changes.

      -

      16.24.3. REQUIRED PARAMETERS

      +

      16.24.3. REQUIRED PARAMETERS

      None.

      -

      16.24.4. OPTIONAL PARAMETERS

      +

      16.24.4. OPTIONAL PARAMETERS

      None.

      -

      16.24.5. EXAMPLES

      -
      __consul_reload
      +

      16.24.5. EXAMPLES

      +
      __consul_reload
       
      -

      16.24.6. AUTHORS

      +

      16.24.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.24.7. COPYING

      +

      16.24.7. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_service.html b/src/extra/manual/beta/man7/cdist-type__consul_service.html index 5eeba7cf..a4c1d520 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_service.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_service.html @@ -8,7 +8,7 @@ - 16.25. cdist-type__consul_service(7) — cdist 6.5.6 documentation + 16.25. cdist-type__consul_service(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.25. cdist-type__consul_service(7)
    • +
    • 16.25. cdist-type__consul_service(7)
    • @@ -368,48 +359,48 @@
      -

      16.25. cdist-type__consul_service(7)

      +

      16.25. cdist-type__consul_service(7)

      -

      16.25.1. NAME

      +

      16.25.1. NAME

      cdist-type__consul_service - Manages consul services

      -

      16.25.2. DESCRIPTION

      +

      16.25.2. DESCRIPTION

      Generate and deploy service definitions for a consul agent. See http://www.consul.io/docs/agent/services.html for parameter documentation.

      Use either script together with interval, or use ttl.

      -

      16.25.3. REQUIRED PARAMETERS

      +

      16.25.3. REQUIRED PARAMETERS

      None.

      -

      16.25.4. OPTIONAL PARAMETERS

      -
      -
      check-interval
      -
      the interval in which the script given with --check-script should be run
      -
      check-http
      -
      the URL to check for HTTP 200-ish status every --check-interval
      -
      check-script
      -
      the shell command to run every --check-interval
      -
      check-ttl
      -
      how long a service is considered healthy without being updated through the -HTTP interfave
      -
      id
      -
      Defaults to --name
      -
      name
      -
      The name of this service. Defaults to __object_id
      -
      port
      -
      the port at which this service can be reached
      -
      state
      -
      if this service is 'present' or 'absent'. Defaults to 'present'.
      -
      tag
      -
      a tag to add to this service. Can be specified multiple times.
      +

      16.25.4. OPTIONAL PARAMETERS

      +
      +
      check-interval

      the interval in which the script given with --check-script should be run

      +
      +
      check-http

      the URL to check for HTTP 200-ish status every --check-interval

      +
      +
      check-script

      the shell command to run every --check-interval

      +
      +
      check-ttl

      how long a service is considered healthy without being updated through the +HTTP interfave

      +
      +
      id

      Defaults to --name

      +
      +
      name

      The name of this service. Defaults to __object_id

      +
      +
      port

      the port at which this service can be reached

      +
      +
      state

      if this service is 'present' or 'absent'. Defaults to 'present'.

      +
      +
      tag

      a tag to add to this service. Can be specified multiple times.

      +
      -

      16.25.5. EXAMPLES

      -
      __consul_service redis \
      +

      16.25.5. EXAMPLES

      +
      __consul_service redis \
          --tag master \
          --tag production \
          --port 8000 \
      @@ -423,15 +414,15 @@ __consul_service webapp \
       
      -

      16.25.6. SEE ALSO

      +

      16.25.6. SEE ALSO

      cdist-type__consul_agent(7)

      -

      16.25.7. AUTHORS

      +

      16.25.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.25.8. COPYING

      +

      16.25.8. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_template.html b/src/extra/manual/beta/man7/cdist-type__consul_template.html index 80868569..04f6d165 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_template.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_template.html @@ -8,7 +8,7 @@ - 16.26. cdist-type__consul_template(7) — cdist 6.5.6 documentation + 16.26. cdist-type__consul_template(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.26. cdist-type__consul_template(7)
    • +
    • 16.26. cdist-type__consul_template(7)
    • @@ -369,13 +360,13 @@
      -

      16.26. cdist-type__consul_template(7)

      +

      16.26. cdist-type__consul_template(7)

      -

      16.26.1. NAME

      +

      16.26.1. NAME

      cdist-type__consul_template - Manage the consul-template service

      -

      16.26.2. DESCRIPTION

      +

      16.26.2. DESCRIPTION

      Downloads and installs the consul-template binary from https://github.com/hashicorp/consul-template/releases/download/. Generates a global config file and creates directory for per template config files. @@ -383,81 +374,81 @@ Note that the consul-template binary is downloaded on the server (the machine ru cdist) and then deployed to the target host using the __file type.

      -

      16.26.3. REQUIRED PARAMETERS

      +

      16.26.3. REQUIRED PARAMETERS

      None.

      -

      16.26.4. OPTIONAL PARAMETERS

      -
      -
      auth-username
      -
      specify a username for basic authentication.
      -
      auth-password
      -
      specify a password for basic authentication.
      -
      batch-size
      -
      the size of the batch when polling multiple dependencies.
      -
      consul
      -
      the location of the Consul instance to query (may be an IP address or FQDN) with port. -Defaults to 'localhost:8500'.
      -
      log-level
      -
      The log level for output. This applies to the stdout/stderr logging as well +

      16.26.4. OPTIONAL PARAMETERS

      +
      +
      auth-username

      specify a username for basic authentication.

      +
      +
      auth-password

      specify a password for basic authentication.

      +
      +
      batch-size

      the size of the batch when polling multiple dependencies.

      +
      +
      consul

      the location of the Consul instance to query (may be an IP address or FQDN) with port. +Defaults to 'localhost:8500'.

      +
      +
      log-level

      The log level for output. This applies to the stdout/stderr logging as well as syslog logging (if enabled). Valid values are "debug", "info", "warn", -and "err". The default value is "warn".

      -
      max-stale
      -
      the maximum staleness of a query. If specified, Consul will distribute work among all -servers instead of just the leader.
      -
      retry
      -
      the amount of time to wait if Consul returns an error when communicating -with the API.
      -
      state
      -
      either 'present' or 'absent'. Defaults to 'present'
      -
      ssl-cert
      -
      Path to an SSL client certificate to use to authenticate to the consul server. -Useful if the consul server "verify_incoming" option is set.
      -
      ssl-ca-cert
      -
      Path to a CA certificate file, containing one or more CA certificates to +and "err". The default value is "warn".

      +
      +
      max-stale

      the maximum staleness of a query. If specified, Consul will distribute work among all +servers instead of just the leader.

      +
      +
      retry

      the amount of time to wait if Consul returns an error when communicating +with the API.

      +
      +
      state

      either 'present' or 'absent'. Defaults to 'present'

      +
      +
      ssl-cert

      Path to an SSL client certificate to use to authenticate to the consul server. +Useful if the consul server "verify_incoming" option is set.

      +
      +
      ssl-ca-cert

      Path to a CA certificate file, containing one or more CA certificates to use to validate the certificate sent by the consul server to us. This is a -handy alternative to setting --ssl-no-verify if you are using your own CA.

      -
      syslog-facility
      -
      The facility to use when sending to syslog. This requires the use of --syslog. -The default value is LOCAL0.
      -
      token
      -
      the Consul API token.
      -
      vault-address
      -
      the location of the Vault instance to query (may be an IP address or FQDN) with port.
      -
      vault-token
      -
      the Vault API token.
      -
      vault-ssl-cert
      -
      Path to an SSL client certificate to use to authenticate to the vault server.
      -
      vault-ssl-ca-cert
      -
      Path to a CA certificate file, containing one or more CA certificates to -use to validate the certificate sent by the vault server to us.
      -
      version
      -
      which version of consul-template to install. See ./files/versions for a list of -supported versions. Defaults to the latest known version.
      -
      wait
      -
      the minimum(:maximum) to wait before rendering a new template to disk and +handy alternative to setting --ssl-no-verify if you are using your own CA.

      +
      +
      syslog-facility

      The facility to use when sending to syslog. This requires the use of --syslog. +The default value is LOCAL0.

      +
      +
      token

      the Consul API token.

      +
      +
      vault-address

      the location of the Vault instance to query (may be an IP address or FQDN) with port.

      +
      +
      vault-token

      the Vault API token.

      +
      +
      vault-ssl-cert

      Path to an SSL client certificate to use to authenticate to the vault server.

      +
      +
      vault-ssl-ca-cert

      Path to a CA certificate file, containing one or more CA certificates to +use to validate the certificate sent by the vault server to us.

      +
      +
      version

      which version of consul-template to install. See ./files/versions for a list of +supported versions. Defaults to the latest known version.

      +
      +
      wait

      the minimum(:maximum) to wait before rendering a new template to disk and triggering a command, separated by a colon (:). If the optional maximum -value is omitted, it is assumed to be 4x the required minimum value.

      +value is omitted, it is assumed to be 4x the required minimum value.

      +
      -

      16.26.5. BOOLEAN PARAMETERS

      -
      -
      ssl
      -
      use HTTPS while talking to Consul. Requires the Consul server to be configured to serve secure connections.
      -
      ssl-no-verify
      -
      ignore certificate warnings. Only used if ssl is enabled.
      -
      syslog
      -
      Send log output to syslog (in addition to stdout and stderr).
      -
      vault-ssl
      -
      use HTTPS while talking to Vault. Requires the Vault server to be configured to serve secure connections.
      -
      vault-ssl-no-verify
      -
      ignore certificate warnings. Only used if vault is enabled.
      +

      16.26.5. BOOLEAN PARAMETERS

      +
      +
      ssl

      use HTTPS while talking to Consul. Requires the Consul server to be configured to serve secure connections.

      +
      +
      ssl-no-verify

      ignore certificate warnings. Only used if ssl is enabled.

      +
      +
      syslog

      Send log output to syslog (in addition to stdout and stderr).

      +
      +
      vault-ssl

      use HTTPS while talking to Vault. Requires the Vault server to be configured to serve secure connections.

      +
      +
      vault-ssl-no-verify

      ignore certificate warnings. Only used if vault is enabled.

      +
      -

      16.26.6. EXAMPLES

      -
      __consul_template \
      +

      16.26.6. EXAMPLES

      +
      __consul_template \
          --consul consul.service.consul:8500 \
          --retry 30s
       
      @@ -469,15 +460,15 @@ __consul_template \
       
      -

      16.26.7. SEE ALSO

      +

      16.26.7. SEE ALSO

      consul documentation at: <https://github.com/hashicorp/consul-template>.

      -

      16.26.8. AUTHORS

      +

      16.26.8. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.26.9. COPYING

      +

      16.26.9. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_template_template.html b/src/extra/manual/beta/man7/cdist-type__consul_template_template.html index ac311d3b..f84b32ab 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_template_template.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_template_template.html @@ -8,7 +8,7 @@ - 16.27. cdist-type__consul_template_template(7) — cdist 6.5.6 documentation + 16.27. cdist-type__consul_template_template(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.27. cdist-type__consul_template_template(7)
    • +
    • 16.27. cdist-type__consul_template_template(7)
    • @@ -368,51 +359,51 @@
      -

      16.27. cdist-type__consul_template_template(7)

      +

      16.27. cdist-type__consul_template_template(7)

      -

      16.27.1. NAME

      +

      16.27.1. NAME

      cdist-type__consul_template_template - Manage consul-template templates

      -

      16.27.2. DESCRIPTION

      +

      16.27.2. DESCRIPTION

      Generate and deploy template definitions for a consul-template. See https://github.com/hashicorp/consul-template#examples for documentation. Templates are written in the Go template format. Either the --source or the --source-file parameter must be given.

      -

      16.27.3. REQUIRED PARAMETERS

      -
      -
      destination
      -
      the destination where the generated file should go.
      +

      16.27.3. REQUIRED PARAMETERS

      +
      +
      destination

      the destination where the generated file should go.

      +
      -

      16.27.4. OPTIONAL PARAMETERS

      -
      -
      command
      -
      an optional command to run after rendering the template to its destination.
      -
      source
      -
      path to the template source. Conflicts --source-file.
      -
      source-file
      -
      path to a local file which is uploaded using the __file type and configured +

      16.27.4. OPTIONAL PARAMETERS

      +
      +
      command

      an optional command to run after rendering the template to its destination.

      +
      +
      source

      path to the template source. Conflicts --source-file.

      +
      +
      source-file

      path to a local file which is uploaded using the __file type and configured as the source. If source is '-' (dash), take what was written to stdin as the file content. -Conflicts --source.

      -
      state
      -
      if this template is 'present' or 'absent'. Defaults to 'present'.
      -
      wait
      -
      The minimum(:maximum) time to wait before rendering a new template to +Conflicts --source.

      +
      +
      state

      if this template is 'present' or 'absent'. Defaults to 'present'.

      +
      +
      wait

      The minimum(:maximum) time to wait before rendering a new template to disk and triggering a command, separated by a colon (:). If the optional maximum value is omitted, it is assumed to be 4x the required minimum value. This is a numeric time with a unit suffix ("5s"). There is no default value. The wait value for a template takes precedence over any globally-configured -wait.

      +wait.

      +
      -

      16.27.5. EXAMPLES

      -
      # configure template on the target
      +

      16.27.5. EXAMPLES

      +
      # configure template on the target
       __consul_template_template nginx \
          --source /etc/my-consul-templates/nginx.ctmpl \
          --destination /etc/nginx/nginx.conf \
      @@ -429,15 +420,15 @@ __consul_template_template nginx \
       
      -

      16.27.6. SEE ALSO

      +

      16.27.6. SEE ALSO

      cdist-type__consul_template(7), cdist-type__consul_template_config(7)

      -

      16.27.7. AUTHORS

      +

      16.27.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.27.8. COPYING

      +

      16.27.8. COPYING

      Copyright (C) 2015-2016 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_watch_checks.html b/src/extra/manual/beta/man7/cdist-type__consul_watch_checks.html index 39aadc65..64a186b5 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_watch_checks.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_watch_checks.html @@ -8,7 +8,7 @@ - 16.28. cdist-type__consul_watch_checks(7) — cdist 6.5.6 documentation + 16.28. cdist-type__consul_watch_checks(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.28. cdist-type__consul_watch_checks(7)
    • +
    • 16.28. cdist-type__consul_watch_checks(7)
    • @@ -368,41 +359,41 @@
      -

      16.28. cdist-type__consul_watch_checks(7)

      +

      16.28. cdist-type__consul_watch_checks(7)

      -

      16.28.1. NAME

      +

      16.28.1. NAME

      cdist-type__consul_watch_checks - Manages consul checks watches

      -

      16.28.2. DESCRIPTION

      +

      16.28.2. DESCRIPTION

      Generate and deploy watch definitions of type 'checks' for a consul agent. See http://www.consul.io/docs/agent/watches.html for parameter documentation.

      -

      16.28.3. REQUIRED PARAMETERS

      -
      -
      handler
      -
      the handler to invoke when the data view updates
      +

      16.28.3. REQUIRED PARAMETERS

      +
      +
      handler

      the handler to invoke when the data view updates

      +
      -

      16.28.4. OPTIONAL PARAMETERS

      -
      -
      datacenter
      -
      can be provided to override the agent's default datacenter
      -
      filter-service
      -
      filter to a specific service. Conflicts with --filter-state.
      -
      filter-state
      -
      filter to a specific state. Conflicts with --filter-service.
      -
      state
      -
      if this watch is 'present' or 'absent'. Defaults to 'present'.
      -
      token
      -
      can be provided to override the agent's default ACL token
      +

      16.28.4. OPTIONAL PARAMETERS

      +
      +
      datacenter

      can be provided to override the agent's default datacenter

      +
      +
      filter-service

      filter to a specific service. Conflicts with --filter-state.

      +
      +
      filter-state

      filter to a specific state. Conflicts with --filter-service.

      +
      +
      state

      if this watch is 'present' or 'absent'. Defaults to 'present'.

      +
      +
      token

      can be provided to override the agent's default ACL token

      +
      -

      16.28.5. EXAMPLES

      -
      __consul_watch_checks some-id \
      +

      16.28.5. EXAMPLES

      +
      __consul_watch_checks some-id \
          --handler /usr/bin/my-handler.sh
       
       __consul_watch_checks some-id \
      @@ -416,16 +407,16 @@ __consul_watch_checks some-id \
       
      -

      16.28.6. SEE ALSO

      +

      16.28.6. SEE ALSO

      cdist-type__consul_agent(7)

      consul documentation at: <http://www.consul.io/docs/agent/watches.html>.

      -

      16.28.7. AUTHORS

      +

      16.28.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.28.8. COPYING

      +

      16.28.8. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_watch_event.html b/src/extra/manual/beta/man7/cdist-type__consul_watch_event.html index c0c95619..f53d7ead 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_watch_event.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_watch_event.html @@ -8,7 +8,7 @@ - 16.29. cdist-type__consul_watch_event(7) — cdist 6.5.6 documentation + 16.29. cdist-type__consul_watch_event(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.29. cdist-type__consul_watch_event(7)
    • +
    • 16.29. cdist-type__consul_watch_event(7)
    • @@ -368,39 +359,39 @@
      -

      16.29. cdist-type__consul_watch_event(7)

      +

      16.29. cdist-type__consul_watch_event(7)

      -

      16.29.1. NAME

      +

      16.29.1. NAME

      cdist-type__consul_watch_event - Manages consul event watches

      -

      16.29.2. DESCRIPTION

      +

      16.29.2. DESCRIPTION

      Generate and deploy watch definitions of type 'event' for a consul agent. See http://www.consul.io/docs/agent/watches.html for parameter documentation.

      -

      16.29.3. REQUIRED PARAMETERS

      -
      -
      handler
      -
      the handler to invoke when the data view updates
      +

      16.29.3. REQUIRED PARAMETERS

      +
      +
      handler

      the handler to invoke when the data view updates

      +
      -

      16.29.4. OPTIONAL PARAMETERS

      -
      -
      datacenter
      -
      can be provided to override the agent's default datacenter
      -
      name
      -
      restrict the watch to only events with the given name
      -
      state
      -
      if this watch is 'present' or 'absent'. Defaults to 'present'.
      -
      token
      -
      can be provided to override the agent's default ACL token
      +

      16.29.4. OPTIONAL PARAMETERS

      +
      +
      datacenter

      can be provided to override the agent's default datacenter

      +
      +
      name

      restrict the watch to only events with the given name

      +
      +
      state

      if this watch is 'present' or 'absent'. Defaults to 'present'.

      +
      +
      token

      can be provided to override the agent's default ACL token

      +
      -

      16.29.5. EXAMPLES

      -
      __consul_watch_event some-id \
      +

      16.29.5. EXAMPLES

      +
      __consul_watch_event some-id \
          --handler /usr/bin/my-handler.sh
       
       __consul_watch_event some-id \
      @@ -410,16 +401,16 @@ __consul_watch_event some-id \
       
      -

      16.29.6. SEE ALSO

      +

      16.29.6. SEE ALSO

      cdist-type__consul_agent(7)

      consul documentation at: <http://www.consul.io/docs/agent/watches.html>.

      -

      16.29.7. AUTHORS

      +

      16.29.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.29.8. COPYING

      +

      16.29.8. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_watch_key.html b/src/extra/manual/beta/man7/cdist-type__consul_watch_key.html index 91c1cff5..19ce1eff 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_watch_key.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_watch_key.html @@ -8,7 +8,7 @@ - 16.30. cdist-type__consul_watch_key(7) — cdist 6.5.6 documentation + 16.30. cdist-type__consul_watch_key(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.30. cdist-type__consul_watch_key(7)
    • +
    • 16.30. cdist-type__consul_watch_key(7)
    • @@ -368,55 +359,55 @@
      -

      16.30. cdist-type__consul_watch_key(7)

      +

      16.30. cdist-type__consul_watch_key(7)

      -

      16.30.1. NAME

      +

      16.30.1. NAME

      cdist-type__consul_watch_key - Manages consul key watches

      -

      16.30.2. DESCRIPTION

      +

      16.30.2. DESCRIPTION

      Generate and deploy watch definitions of type 'key' for a consul agent. See http://www.consul.io/docs/agent/watches.html for parameter documentation.

      -

      16.30.3. REQUIRED PARAMETERS

      -
      -
      handler
      -
      the handler to invoke when the data view updates
      -
      key
      -
      the key to watch for changes
      +

      16.30.3. REQUIRED PARAMETERS

      +
      +
      handler

      the handler to invoke when the data view updates

      +
      +
      key

      the key to watch for changes

      +
      -

      16.30.4. OPTIONAL PARAMETERS

      -
      -
      datacenter
      -
      can be provided to override the agent's default datacenter
      -
      state
      -
      if this watch is 'present' or 'absent'. Defaults to 'present'.
      -
      token
      -
      can be provided to override the agent's default ACL token
      +

      16.30.4. OPTIONAL PARAMETERS

      +
      +
      datacenter

      can be provided to override the agent's default datacenter

      +
      +
      state

      if this watch is 'present' or 'absent'. Defaults to 'present'.

      +
      +
      token

      can be provided to override the agent's default ACL token

      +
      -

      16.30.5. EXAMPLES

      -
      __consul_watch_key some-id \
      +

      16.30.5. EXAMPLES

      +
      __consul_watch_key some-id \
          --key foo/bar/baz \
          --handler /usr/bin/my-key-handler.sh
       
      -

      16.30.6. SEE ALSO

      +

      16.30.6. SEE ALSO

      cdist-type__consul_agent(7)

      consul documentation at: <http://www.consul.io/docs/agent/watches.html>.

      -

      16.30.7. AUTHORS

      +

      16.30.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.30.8. COPYING

      +

      16.30.8. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_watch_keyprefix.html b/src/extra/manual/beta/man7/cdist-type__consul_watch_keyprefix.html index 44da8bba..f4101148 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_watch_keyprefix.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_watch_keyprefix.html @@ -8,7 +8,7 @@ - 16.31. cdist-type__consul_watch_keyprefix(7) — cdist 6.5.6 documentation + 16.31. cdist-type__consul_watch_keyprefix(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.31. cdist-type__consul_watch_keyprefix(7)
    • +
    • 16.31. cdist-type__consul_watch_keyprefix(7)
    • @@ -368,55 +359,55 @@
      -

      16.31. cdist-type__consul_watch_keyprefix(7)

      +

      16.31. cdist-type__consul_watch_keyprefix(7)

      -

      16.31.1. NAME

      +

      16.31.1. NAME

      cdist-type__consul_watch_keyprefix - Manages consul keyprefix watches

      -

      16.31.2. DESCRIPTION

      +

      16.31.2. DESCRIPTION

      Generate and deploy watch definitions of type 'keyprefix' for a consul agent. See http://www.consul.io/docs/agent/watches.html for parameter documentation.

      -

      16.31.3. REQUIRED PARAMETERS

      -
      -
      handler
      -
      the handler to invoke when the data view updates
      -
      prefix
      -
      the prefix of keys to watch for changes
      +

      16.31.3. REQUIRED PARAMETERS

      +
      +
      handler

      the handler to invoke when the data view updates

      +
      +
      prefix

      the prefix of keys to watch for changes

      +
      -

      16.31.4. OPTIONAL PARAMETERS

      -
      -
      datacenter
      -
      can be provided to override the agent's default datacenter
      -
      state
      -
      if this watch is 'present' or 'absent'. Defaults to 'present'.
      -
      token
      -
      can be provided to override the agent's default ACL token
      +

      16.31.4. OPTIONAL PARAMETERS

      +
      +
      datacenter

      can be provided to override the agent's default datacenter

      +
      +
      state

      if this watch is 'present' or 'absent'. Defaults to 'present'.

      +
      +
      token

      can be provided to override the agent's default ACL token

      +
      -

      16.31.5. EXAMPLES

      -
      __consul_watch_keyprefix some-id \
      +

      16.31.5. EXAMPLES

      +
      __consul_watch_keyprefix some-id \
          --prefix foo/ \
          --handler /usr/bin/my-prefix-handler.sh
       
      -

      16.31.6. SEE ALSO

      +

      16.31.6. SEE ALSO

      cdist-type__consul_agent(7)

      consul documentation at: <http://www.consul.io/docs/agent/watches.html>.

      -

      16.31.7. AUTHORS

      +

      16.31.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.31.8. COPYING

      +

      16.31.8. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_watch_nodes.html b/src/extra/manual/beta/man7/cdist-type__consul_watch_nodes.html index 6e411c64..a03355e7 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_watch_nodes.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_watch_nodes.html @@ -8,7 +8,7 @@ - 16.32. cdist-type__consul_watch_nodes(7) — cdist 6.5.6 documentation + 16.32. cdist-type__consul_watch_nodes(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.32. cdist-type__consul_watch_nodes(7)
    • +
    • 16.32. cdist-type__consul_watch_nodes(7)
    • @@ -368,52 +359,52 @@
      -

      16.32. cdist-type__consul_watch_nodes(7)

      +

      16.32. cdist-type__consul_watch_nodes(7)

      -

      16.32.1. NAME

      +

      16.32.1. NAME

      cdist-type__consul_watch_nodes - Manages consul nodes watches

      -

      16.32.2. DESCRIPTION

      +

      16.32.2. DESCRIPTION

      Generate and deploy watch definitions of type 'nodes' for a consul agent. See http://www.consul.io/docs/agent/watches.html for parameter documentation.

      -

      16.32.3. REQUIRED PARAMETERS

      -
      -
      handler
      -
      the handler to invoke when the data view updates
      +

      16.32.3. REQUIRED PARAMETERS

      +
      +
      handler

      the handler to invoke when the data view updates

      +
      -

      16.32.4. OPTIONAL PARAMETERS

      -
      -
      datacenter
      -
      can be provided to override the agent's default datacenter
      -
      state
      -
      if this watch is 'present' or 'absent'. Defaults to 'present'.
      -
      token
      -
      can be provided to override the agent's default ACL token
      +

      16.32.4. OPTIONAL PARAMETERS

      +
      +
      datacenter

      can be provided to override the agent's default datacenter

      +
      +
      state

      if this watch is 'present' or 'absent'. Defaults to 'present'.

      +
      +
      token

      can be provided to override the agent's default ACL token

      +
      -

      16.32.5. EXAMPLES

      -
      __consul_watch_nodes some-id \
      +

      16.32.5. EXAMPLES

      +
      __consul_watch_nodes some-id \
          --handler /usr/bin/my-key-handler.sh
       
      -

      16.32.6. SEE ALSO

      +

      16.32.6. SEE ALSO

      cdist-type__consul_agent(7)

      consul documentation at: <http://www.consul.io/docs/agent/watches.html>.

      -

      16.32.7. AUTHORS

      +

      16.32.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.32.8. COPYING

      +

      16.32.8. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_watch_service.html b/src/extra/manual/beta/man7/cdist-type__consul_watch_service.html index cc5fe129..4dd3a5b9 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_watch_service.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_watch_service.html @@ -8,7 +8,7 @@ - 16.33. cdist-type__consul_watch_service(7) — cdist 6.5.6 documentation + 16.33. cdist-type__consul_watch_service(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.33. cdist-type__consul_watch_service(7)
    • +
    • 16.33. cdist-type__consul_watch_service(7)
    • @@ -369,48 +360,48 @@
      -

      16.33. cdist-type__consul_watch_service(7)

      +

      16.33. cdist-type__consul_watch_service(7)

      -

      16.33.1. NAME

      +

      16.33.1. NAME

      cdist-type__consul_watch_service - Manages consul service watches

      -

      16.33.2. DESCRIPTION

      +

      16.33.2. DESCRIPTION

      Generate and deploy watch definitions of type 'service' for a consul agent. See http://www.consul.io/docs/agent/watches.html for parameter documentation.

      -

      16.33.3. REQUIRED PARAMETERS

      -
      -
      handler
      -
      the handler to invoke when the data view updates
      -
      service
      -
      the service to watch for changes
      +

      16.33.3. REQUIRED PARAMETERS

      +
      +
      handler

      the handler to invoke when the data view updates

      +
      +
      service

      the service to watch for changes

      +
      -

      16.33.4. OPTIONAL PARAMETERS

      -
      -
      datacenter
      -
      can be provided to override the agent's default datacenter
      -
      state
      -
      if this watch is 'present' or 'absent'. Defaults to 'present'.
      -
      token
      -
      can be provided to override the agent's default ACL token
      -
      tag
      -
      filter by tag
      +

      16.33.4. OPTIONAL PARAMETERS

      +
      +
      datacenter

      can be provided to override the agent's default datacenter

      +
      +
      state

      if this watch is 'present' or 'absent'. Defaults to 'present'.

      +
      +
      token

      can be provided to override the agent's default ACL token

      +
      +
      tag

      filter by tag

      +
      -

      16.33.5. BOOLEAN PARAMETERS

      -
      -
      passingonly
      -
      specifies if only hosts passing all checks are displayed
      +

      16.33.5. BOOLEAN PARAMETERS

      +
      +
      passingonly

      specifies if only hosts passing all checks are displayed

      +
      -

      16.33.6. EXAMPLES

      -
      __consul_watch_service some-id \
      +

      16.33.6. EXAMPLES

      +
      __consul_watch_service some-id \
          --service consul \
          --handler /usr/bin/my-handler.sh
       
      @@ -428,16 +419,16 @@ __consul_watch_service some-id \
       
      -

      16.33.7. SEE ALSO

      +

      16.33.7. SEE ALSO

      cdist-type__consul_agent(7)

      consul documentation at: <http://www.consul.io/docs/agent/watches.html>.

      -

      16.33.8. AUTHORS

      +

      16.33.8. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.33.9. COPYING

      +

      16.33.9. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__consul_watch_services.html b/src/extra/manual/beta/man7/cdist-type__consul_watch_services.html index 01316800..decd4091 100644 --- a/src/extra/manual/beta/man7/cdist-type__consul_watch_services.html +++ b/src/extra/manual/beta/man7/cdist-type__consul_watch_services.html @@ -8,7 +8,7 @@ - 16.34. cdist-type__consul_watch_services(7) — cdist 6.5.6 documentation + 16.34. cdist-type__consul_watch_services(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.34. cdist-type__consul_watch_services(7)
    • +
    • 16.34. cdist-type__consul_watch_services(7)
    • @@ -368,52 +359,52 @@
      -

      16.34. cdist-type__consul_watch_services(7)

      +

      16.34. cdist-type__consul_watch_services(7)

      -

      16.34.1. NAME

      +

      16.34.1. NAME

      cdist-type__consul_watch_services - Manages consul services watches

      -

      16.34.2. DESCRIPTION

      +

      16.34.2. DESCRIPTION

      Generate and deploy watch definitions of type 'services' for a consul agent. See http://www.consul.io/docs/agent/watches.html for parameter documentation.

      -

      16.34.3. REQUIRED PARAMETERS

      -
      -
      handler
      -
      the handler to invoke when the data view updates
      +

      16.34.3. REQUIRED PARAMETERS

      +
      +
      handler

      the handler to invoke when the data view updates

      +
      -

      16.34.4. OPTIONAL PARAMETERS

      -
      -
      datacenter
      -
      can be provided to override the agent's default datacenter
      -
      state
      -
      if this watch is 'present' or 'absent'. Defaults to 'present'.
      -
      token
      -
      can be provided to override the agent's default ACL token
      +

      16.34.4. OPTIONAL PARAMETERS

      +
      +
      datacenter

      can be provided to override the agent's default datacenter

      +
      +
      state

      if this watch is 'present' or 'absent'. Defaults to 'present'.

      +
      +
      token

      can be provided to override the agent's default ACL token

      +
      -

      16.34.5. EXAMPLES

      -
      __consul_watch_services some-id \
      +

      16.34.5. EXAMPLES

      +
      __consul_watch_services some-id \
          --handler /usr/bin/my-key-handler.sh
       
      -

      16.34.6. SEE ALSO

      +

      16.34.6. SEE ALSO

      cdist-type__consul_agent(7)

      consul documentation at: <http://www.consul.io/docs/agent/watches.html>.

      -

      16.34.7. AUTHORS

      +

      16.34.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.34.8. COPYING

      +

      16.34.8. COPYING

      Copyright (C) 2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__cron.html b/src/extra/manual/beta/man7/cdist-type__cron.html index 36bb7c41..10329424 100644 --- a/src/extra/manual/beta/man7/cdist-type__cron.html +++ b/src/extra/manual/beta/man7/cdist-type__cron.html @@ -8,7 +8,7 @@ - 16.35. cdist-type__cron(7) — cdist 6.5.6 documentation + 16.35. cdist-type__cron(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.35. cdist-type__cron(7)
    • +
    • 16.35. cdist-type__cron(7)
    • @@ -368,58 +359,58 @@
      -

      16.35. cdist-type__cron(7)

      +

      16.35. cdist-type__cron(7)

      -

      16.35.1. NAME

      +

      16.35.1. NAME

      cdist-type__cron - Installs and manages cron jobs

      -

      16.35.2. DESCRIPTION

      +

      16.35.2. DESCRIPTION

      This cdist type allows you to manage entries in a users crontab.

      -

      16.35.3. REQUIRED PARAMETERS

      -
      -
      user
      -
      The user who's crontab is edited
      -
      command
      -
      The command to run.
      +

      16.35.3. REQUIRED PARAMETERS

      +
      +
      user

      The user who's crontab is edited

      +
      +
      command

      The command to run.

      +
      -

      16.35.4. OPTIONAL PARAMETERS

      -

      NOTE: All time-related parameters (--minute, --hour, --day_of_month ---month and --day_of_week) defaults to *, which means to execute it -always. If you set --hour 0 to execute the cronjob only at midnight, it +

      16.35.4. OPTIONAL PARAMETERS

      +

      NOTE: All time-related parameters (--minute, --hour, --day_of_month +--month and --day_of_week) defaults to *, which means to execute it +always. If you set --hour 0 to execute the cronjob only at midnight, it will execute every minute in the first hour of the morning all days.

      -
      -
      state
      -
      Either present or absent. Defaults to present.
      -
      minute
      -
      See crontab(5). Defaults to *
      -
      hour
      -
      See crontab(5). Defaults to *
      -
      day_of_month
      -
      See crontab(5). Defaults to *
      -
      month
      -
      See crontab(5). Defaults to *
      -
      day_of_week
      -
      See crontab(5). Defaults to *
      -
      raw
      -
      Take whatever the user has given instead of time and date fields. +
      +
      state

      Either present or absent. Defaults to present.

      +
      +
      minute

      See crontab(5). Defaults to *

      +
      +
      hour

      See crontab(5). Defaults to *

      +
      +
      day_of_month

      See crontab(5). Defaults to *

      +
      +
      month

      See crontab(5). Defaults to *

      +
      +
      day_of_week

      See crontab(5). Defaults to *

      +
      +
      raw

      Take whatever the user has given instead of time and date fields. If given, all other time and date fields are ignored. Can for example be used to specify cron EXTENSIONS like reboot, yearly etc. See crontab(5) for the extensions if any that your cron implementation -implements.

      -
      raw_command
      -
      Take whatever the user has given in the command and ignore everything else. +implements.

      +
      +
      raw_command

      Take whatever the user has given in the command and ignore everything else. If given, the command will be added to crontab. -Can for example be used to define variables like SHELL or MAILTO.

      +Can for example be used to define variables like SHELL or MAILTO.

      +
      -

      16.35.5. EXAMPLES

      -
      # run Monday to Saturday at 23:15
      +

      16.35.5. EXAMPLES

      +
      # run Monday to Saturday at 23:15
       __cron some-id --user root --command "/path/to/script" \
          --hour 23 --minute 15 --day_of_week 1-6
       
      @@ -437,15 +428,15 @@ __cron some-id --user root --raw_command --command "SHELL=
       
      -

      16.35.6. SEE ALSO

      +

      16.35.6. SEE ALSO

      crontab(5)

      -

      16.35.7. AUTHORS

      +

      16.35.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.35.8. COPYING

      +

      16.35.8. COPYING

      Copyright (C) 2011-2013 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__daemontools.html b/src/extra/manual/beta/man7/cdist-type__daemontools.html index 26ebecb5..8147b655 100644 --- a/src/extra/manual/beta/man7/cdist-type__daemontools.html +++ b/src/extra/manual/beta/man7/cdist-type__daemontools.html @@ -8,7 +8,7 @@ - 16.36. cdist-type__daemontools(7) — cdist 6.5.6 documentation + 16.36. cdist-type__daemontools(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.36. cdist-type__daemontools(7)
    • +
    • 16.36. cdist-type__daemontools(7)
    • @@ -369,51 +360,51 @@
      -

      16.36. cdist-type__daemontools(7)

      +

      16.36. cdist-type__daemontools(7)

      -

      16.36.1. NAME

      +

      16.36.1. NAME

      cdist-type__daemontools - Install daemontools

      -

      16.36.2. DESCRIPTION

      +

      16.36.2. DESCRIPTION

      Install djb daemontools and (optionally) an init script.

      -

      16.36.3. REQUIRED PARAMETERS

      +

      16.36.3. REQUIRED PARAMETERS

      None.

      -

      16.36.4. OPTIONAL PARAMETERS

      -
      -
      from-package
      -
      Package to install. Must be compatible with the original daemontools. Example: daemontools-encore. Default: daemontools.
      -
      servicedir
      -
      Directory to scan for services. Default: /service
      +

      16.36.4. OPTIONAL PARAMETERS

      +
      +
      from-package

      Package to install. Must be compatible with the original daemontools. Example: daemontools-encore. Default: daemontools.

      +
      +
      servicedir

      Directory to scan for services. Default: /service

      +
      -

      16.36.5. BOOLEAN PARAMETERS

      -
      -
      install-init-script
      -
      Add an init script and set it to start on boot.
      +

      16.36.5. BOOLEAN PARAMETERS

      +
      +
      install-init-script

      Add an init script and set it to start on boot.

      +
      -

      16.36.6. EXAMPLES

      -
      __daemontools --from-package daemontools-encore  # if you prefer
      +

      16.36.6. EXAMPLES

      +
      __daemontools --from-package daemontools-encore  # if you prefer
       
      -

      16.36.7. SEE ALSO

      +

      16.36.7. SEE ALSO

      cdist-type__daemontools_service(7)

      -

      16.36.8. AUTHORS

      +

      16.36.8. AUTHORS

      Kamila Součková <kamila--@--ksp.sk>

      -

      16.36.9. COPYING

      +

      16.36.9. COPYING

      Copyright (C) 2017 Kamila Součková. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__daemontools_service.html b/src/extra/manual/beta/man7/cdist-type__daemontools_service.html index bc58d927..3f34629b 100644 --- a/src/extra/manual/beta/man7/cdist-type__daemontools_service.html +++ b/src/extra/manual/beta/man7/cdist-type__daemontools_service.html @@ -8,7 +8,7 @@ - 16.37. cdist-type__daemontools_service(7) — cdist 6.5.6 documentation + 16.37. cdist-type__daemontools_service(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.37. cdist-type__daemontools_service(7)
    • +
    • 16.37. cdist-type__daemontools_service(7)
    • @@ -369,65 +360,63 @@
      -

      16.37. cdist-type__daemontools_service(7)

      +

      16.37. cdist-type__daemontools_service(7)

      -

      16.37.1. NAME

      +

      16.37.1. NAME

      cdist-type__daemontools_service - Create a daemontools-compatible service dir.

      -

      16.37.2. DESCRIPTION

      +

      16.37.2. DESCRIPTION

      Create a directory structure compatible with daemontools-like service management.

      Note that svc must be present on the target system.

      The object ID will be used as the service name.

      -

      16.37.3. REQUIRED PARAMETERS

      +

      16.37.3. REQUIRED PARAMETERS

      None.

      -

      16.37.4. OPTIONAL PARAMETERS

      -
      -
      run
      -

      Command to run. exec-ing and stderr redirection will be added. One of run, run-file must be specified.

      -

      Example: my-program

      +

      16.37.4. OPTIONAL PARAMETERS

      +
      +
      run

      Command to run. exec-ing and stderr redirection will be added. One of run, run-file must be specified.

      +

      Example: my-program

      -
      run-file
      -

      File to save as <servicedir>/run. One of run, run-file must be specified.

      -

      Example:

      +
      run-file

      File to save as <servicedir>/run. One of run, run-file must be specified.

      +

      Example:

      -
      #!/bin/sh
      +
      #!/bin/sh
       exec 2>&1
       exec my_program
       
      -
      -
      log-run
      -
      Command to run for log consumption. Default: multilog t ./main
      -
      servicedir
      -
      Directory to install into. Default: /service
      +
      +
      log-run

      Command to run for log consumption. Default: multilog t ./main

      +
      +
      servicedir

      Directory to install into. Default: /service

      +
      -

      16.37.5. BOOLEAN PARAMETERS

      +

      16.37.5. BOOLEAN PARAMETERS

      None.

      -

      16.37.6. EXAMPLES

      -
      require="__daemontools" __daemontools_service prometheus --run "setuidgid prometheus $GOBIN/prometheus $FLAGS"
      +

      16.37.6. EXAMPLES

      +
      require="__daemontools" __daemontools_service prometheus --run "setuidgid prometheus $GOBIN/prometheus $FLAGS"
       
      -

      16.37.7. SEE ALSO

      +

      16.37.7. SEE ALSO

      cdist-type__daemontools(7)

      -

      16.37.8. AUTHORS

      +

      16.37.8. AUTHORS

      Kamila Součková <kamila--@--ksp.sk>

      -

      16.37.9. COPYING

      +

      16.37.9. COPYING

      Copyright (C) 2017 Kamila Součková. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__debconf_set_selections.html b/src/extra/manual/beta/man7/cdist-type__debconf_set_selections.html index b76a5c62..6efd0738 100644 --- a/src/extra/manual/beta/man7/cdist-type__debconf_set_selections.html +++ b/src/extra/manual/beta/man7/cdist-type__debconf_set_selections.html @@ -8,7 +8,7 @@ - 16.38. cdist-type__debconf_set_selections(7) — cdist 6.5.6 documentation + 16.38. cdist-type__debconf_set_selections(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.38. cdist-type__debconf_set_selections(7)
    • +
    • 16.38. cdist-type__debconf_set_selections(7)
    • @@ -367,27 +358,27 @@
      -

      16.38. cdist-type__debconf_set_selections(7)

      +

      16.38. cdist-type__debconf_set_selections(7)

      -

      16.38.1. NAME

      +

      16.38.1. NAME

      cdist-type__debconf_set_selections - Setup debconf selections

      -

      16.38.2. DESCRIPTION

      +

      16.38.2. DESCRIPTION

      On Debian and alike systems debconf-set-selections(1) can be used to setup configuration parameters.

      -

      16.38.3. REQUIRED PARAMETERS

      -
      -
      file
      -
      Use the given filename as input for debconf-set-selections(1) -If filename is "-", read from stdin.
      +

      16.38.3. REQUIRED PARAMETERS

      +
      +
      file

      Use the given filename as input for debconf-set-selections(1) +If filename is "-", read from stdin.

      +
      -

      16.38.4. EXAMPLES

      -
      # Setup configuration for nslcd
      +

      16.38.4. EXAMPLES

      +
      # Setup configuration for nslcd
       __debconf_set_selections nslcd --file /path/to/file
       
       # Setup configuration for nslcd from another type
      @@ -400,15 +391,15 @@ __debconf_set_selections nslcd --file - << eof
       
      -

      16.38.5. SEE ALSO

      +

      16.38.5. SEE ALSO

      debconf-set-selections(1), cdist-type__update_alternatives(7)

      -

      16.38.6. AUTHORS

      +

      16.38.6. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.38.7. COPYING

      +

      16.38.7. COPYING

      Copyright (C) 2011-2014 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__directory.html b/src/extra/manual/beta/man7/cdist-type__directory.html index 7454564c..b7732593 100644 --- a/src/extra/manual/beta/man7/cdist-type__directory.html +++ b/src/extra/manual/beta/man7/cdist-type__directory.html @@ -8,7 +8,7 @@ - 16.39. cdist-type__directory(7) — cdist 6.5.6 documentation + 16.39. cdist-type__directory(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.39. cdist-type__directory(7)
    • +
    • 16.39. cdist-type__directory(7)
    • @@ -369,79 +360,77 @@
      -

      16.39. cdist-type__directory(7)

      +

      16.39. cdist-type__directory(7)

      -

      16.39.1. NAME

      +

      16.39.1. NAME

      cdist-type__directory - Manage a directory

      -

      16.39.2. DESCRIPTION

      +

      16.39.2. DESCRIPTION

      This cdist type allows you to create or remove directories on the target.

      -

      16.39.3. REQUIRED PARAMETERS

      +

      16.39.3. REQUIRED PARAMETERS

      None.

      -

      16.39.4. OPTIONAL PARAMETERS

      -
      -
      state
      -

      'present', 'absent', 'exists' or 'pre-exists', defaults to 'present' where:

      -
      -
      present
      -
      the directory exists and the given attributes are set.
      -
      absent
      -
      the directory does not exist.
      -
      exists
      -
      the directory exists, but its attributes are not altered if it already -existed.
      -
      pre-exists
      -
      check that the directory exists and is indeed a directory, but do not -create or modify it.
      +

      16.39.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present', 'absent', 'exists' or 'pre-exists', defaults to 'present' where:

      +
      +
      present

      the directory exists and the given attributes are set.

      +
      +
      absent

      the directory does not exist.

      +
      +
      exists

      the directory exists, but its attributes are not altered if it already +existed.

      +
      +
      pre-exists

      check that the directory exists and is indeed a directory, but do not +create or modify it.

      +
      -
      group
      -
      Group to chgrp to.
      -
      mode
      -
      Unix permissions, suitable for chmod.
      -
      owner
      -
      User to chown to.
      +
      group

      Group to chgrp to.

      +
      +
      mode

      Unix permissions, suitable for chmod.

      +
      +
      owner

      User to chown to.

      +
      -

      16.39.5. BOOLEAN PARAMETERS

      -
      -
      parents
      -

      Whether to create parents as well (mkdir -p behaviour). +

      16.39.5. BOOLEAN PARAMETERS

      +
      +
      parents

      Whether to create parents as well (mkdir -p behaviour). Warning: all intermediate directory permissions default to whatever mkdir -p does.

      -

      Usually this means root:root, 0700.

      +

      Usually this means root:root, 0700.

      +
      +
      recursive

      If supplied the chgrp and chown call will run recursively. +This does not influence the behaviour of chmod.

      -
      recursive
      -
      If supplied the chgrp and chown call will run recursively. -This does not influence the behaviour of chmod.
      -

      16.39.6. MESSAGES

      -
      -
      chgrp <group>
      -
      Changed group membership
      -
      chown <owner>
      -
      Changed owner
      -
      chmod <mode>
      -
      Changed mode
      -
      create
      -
      Empty directory was created
      -
      remove
      -
      Directory exists, but state is absent, directory will be removed by generated code.
      -
      remove non directory
      -
      Something other than a directory with the same name exists and was removed prior to create.
      +

      16.39.6. MESSAGES

      +
      +
      chgrp <group>

      Changed group membership

      +
      +
      chown <owner>

      Changed owner

      +
      +
      chmod <mode>

      Changed mode

      +
      +
      create

      Empty directory was created

      +
      +
      remove

      Directory exists, but state is absent, directory will be removed by generated code.

      +
      +
      remove non directory

      Something other than a directory with the same name exists and was removed prior to create.

      +
      -

      16.39.7. EXAMPLES

      -
      # A silly example
      +

      16.39.7. EXAMPLES

      +
      # A silly example
       __directory /tmp/foobar
       
       # Remove a directory
      @@ -466,11 +455,11 @@ __directory /home/services/kvm --recursive --parents \
       
      -

      16.39.8. AUTHORS

      +

      16.39.8. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.39.9. COPYING

      +

      16.39.9. COPYING

      Copyright (C) 2011 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__docker.html b/src/extra/manual/beta/man7/cdist-type__docker.html index 5fc2f195..2773c3d6 100644 --- a/src/extra/manual/beta/man7/cdist-type__docker.html +++ b/src/extra/manual/beta/man7/cdist-type__docker.html @@ -8,7 +8,7 @@ - 16.40. cdist-type__docker(7) — cdist 6.5.6 documentation + 16.40. cdist-type__docker(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.40. cdist-type__docker(7)
    • +
    • 16.40. cdist-type__docker(7)
    • @@ -368,36 +359,36 @@
      -

      16.40. cdist-type__docker(7)

      +

      16.40. cdist-type__docker(7)

      -

      16.40.1. NAME

      +

      16.40.1. NAME

      cdist-type__docker - install Docker CE

      -

      16.40.2. DESCRIPTION

      +

      16.40.2. DESCRIPTION

      Installs latest Docker Community Edition package.

      -

      16.40.3. REQUIRED PARAMETERS

      +

      16.40.3. REQUIRED PARAMETERS

      None.

      -

      16.40.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      'present' or 'absent', defaults to 'present'
      -
      version
      -
      The specific version to install. Defaults to the special value 'latest', -meaning the version the package manager will install by default.
      +

      16.40.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present' or 'absent', defaults to 'present'

      +
      +
      version

      The specific version to install. Defaults to the special value 'latest', +meaning the version the package manager will install by default.

      +
      -

      16.40.5. BOOLEAN PARAMETERS

      +

      16.40.5. BOOLEAN PARAMETERS

      None.

      -

      16.40.6. EXAMPLES

      -
      # Install docker
      +

      16.40.6. EXAMPLES

      +
      # Install docker
       __docker
       
       # Remove docker
      @@ -409,11 +400,11 @@ __docker --state present --version 18.03.0.ce
       
      -

      16.40.7. AUTHORS

      +

      16.40.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.40.8. COPYING

      +

      16.40.8. COPYING

      Copyright (C) 2016 Steven Armstrong. Free use of this software is granted under the terms of the GNU General Public License version 3 (GPLv3).

      diff --git a/src/extra/manual/beta/man7/cdist-type__docker_compose.html b/src/extra/manual/beta/man7/cdist-type__docker_compose.html index d6f7d033..f64ce0ed 100644 --- a/src/extra/manual/beta/man7/cdist-type__docker_compose.html +++ b/src/extra/manual/beta/man7/cdist-type__docker_compose.html @@ -8,7 +8,7 @@ - 16.41. cdist-type__docker_compose(7) — cdist 6.5.6 documentation + 16.41. cdist-type__docker_compose(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.41. cdist-type__docker_compose(7)
    • +
    • 16.41. cdist-type__docker_compose(7)
    • @@ -368,37 +359,37 @@
      -

      16.41. cdist-type__docker_compose(7)

      +

      16.41. cdist-type__docker_compose(7)

      -

      16.41.1. NAME

      +

      16.41.1. NAME

      cdist-type__docker_compose - install docker-compose

      -

      16.41.2. DESCRIPTION

      +

      16.41.2. DESCRIPTION

      Installs docker-compose package. State 'absent' will not remove docker binary itself, only docker-compose binary will be removed

      -

      16.41.3. REQUIRED PARAMETERS

      +

      16.41.3. REQUIRED PARAMETERS

      None.

      -

      16.41.4. OPTIONAL PARAMETERS

      -
      -
      version
      -
      Define docker_compose version, defaults to "1.9.0"
      -
      state
      -
      'present' or 'absent', defaults to 'present'
      +

      16.41.4. OPTIONAL PARAMETERS

      +
      +
      version

      Define docker_compose version, defaults to "1.9.0"

      +
      +
      state

      'present' or 'absent', defaults to 'present'

      +
      -

      16.41.5. BOOLEAN PARAMETERS

      +

      16.41.5. BOOLEAN PARAMETERS

      None.

      -

      16.41.6. EXAMPLES

      -
      # Install docker-compose
      +

      16.41.6. EXAMPLES

      +
      # Install docker-compose
       __docker_compose
       
       # Install version 1.9.0-rc4
      @@ -410,11 +401,11 @@ __docker_compose --state absent
       
      -

      16.41.7. AUTHORS

      +

      16.41.7. AUTHORS

      Dominique Roux <dominique.roux--@--ungleich.ch>

      -

      16.41.8. COPYING

      +

      16.41.8. COPYING

      Copyright (C) 2016 Dominique Roux. Free use of this software is granted under the terms of the GNU General Public License version 3 or later (GPLv3+).

      diff --git a/src/extra/manual/beta/man7/cdist-type__docker_config.html b/src/extra/manual/beta/man7/cdist-type__docker_config.html index ea8179db..f7fa1285 100644 --- a/src/extra/manual/beta/man7/cdist-type__docker_config.html +++ b/src/extra/manual/beta/man7/cdist-type__docker_config.html @@ -8,7 +8,7 @@ - 16.42. cdist-type__docker_config(7) — cdist 6.5.6 documentation + 16.42. cdist-type__docker_config(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.42. cdist-type__docker_config(7)
    • +
    • 16.42. cdist-type__docker_config(7)
    • @@ -367,50 +358,49 @@
      -

      16.42. cdist-type__docker_config(7)

      +

      16.42. cdist-type__docker_config(7)

      -

      16.42.1. NAME

      +

      16.42.1. NAME

      cdist-type__docker_config - Manage Docker configs

      -

      16.42.2. DESCRIPTION

      +

      16.42.2. DESCRIPTION

      This type manages Docker configs.

      -

      16.42.3. OPTIONAL PARAMETERS

      -
      -
      source
      -
      Path to the source file. If it is '-' (dash), read standard input.
      -
      state
      -

      'present' or 'absent', defaults to 'present' where:

      -
      -
      present
      -
      if the config does not exist, it is created
      -
      absent
      -
      the config is removed
      +

      16.42.3. OPTIONAL PARAMETERS

      +
      +
      source

      Path to the source file. If it is '-' (dash), read standard input.

      +
      +
      state

      'present' or 'absent', defaults to 'present' where:

      +
      +
      present

      if the config does not exist, it is created

      +
      +
      absent

      the config is removed

      +
      -

      16.42.4. CAVEATS

      +

      16.42.4. CAVEATS

      Since Docker configs cannot be updated once created, this type tries removing and recreating the config if it changes. If the config is used by a service at the time of removing, then this type will fail.

      -

      16.42.5. EXAMPLES

      -
      # Creates "foo" config from "bar" source file
      +

      16.42.5. EXAMPLES

      +
      # Creates "foo" config from "bar" source file
       __docker_config foo --source bar
       
      -

      16.42.6. AUTHORS

      +

      16.42.6. AUTHORS

      Ľubomír Kučera <lubomir.kucera.jr at gmail.com>

      -

      16.42.7. COPYING

      +

      16.42.7. COPYING

      Copyright (C) 2018 Ľubomír Kučera. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__docker_secret.html b/src/extra/manual/beta/man7/cdist-type__docker_secret.html index b9064eb0..158a5501 100644 --- a/src/extra/manual/beta/man7/cdist-type__docker_secret.html +++ b/src/extra/manual/beta/man7/cdist-type__docker_secret.html @@ -8,7 +8,7 @@ - 16.43. cdist-type__docker_secret(7) — cdist 6.5.6 documentation + 16.43. cdist-type__docker_secret(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.43. cdist-type__docker_secret(7)
    • +
    • 16.43. cdist-type__docker_secret(7)
    • @@ -367,49 +358,48 @@
      -

      16.43. cdist-type__docker_secret(7)

      +

      16.43. cdist-type__docker_secret(7)

      -

      16.43.1. NAME

      +

      16.43.1. NAME

      cdist-type__docker_secret - Manage Docker secrets

      -

      16.43.2. DESCRIPTION

      +

      16.43.2. DESCRIPTION

      This type manages Docker secrets.

      -

      16.43.3. OPTIONAL PARAMETERS

      -
      -
      source
      -
      Path to the source file. If it is '-' (dash), read standard input.
      -
      state
      -

      'present' or 'absent', defaults to 'present' where:

      -
      -
      present
      -
      if the secret does not exist, it is created
      -
      absent
      -
      the secret is removed
      +

      16.43.3. OPTIONAL PARAMETERS

      +
      +
      source

      Path to the source file. If it is '-' (dash), read standard input.

      +
      +
      state

      'present' or 'absent', defaults to 'present' where:

      +
      +
      present

      if the secret does not exist, it is created

      +
      +
      absent

      the secret is removed

      +
      -

      16.43.4. CAVEATS

      +

      16.43.4. CAVEATS

      Since Docker secrets cannot be updated once created, this type takes no action if the specified secret already exists.

      -

      16.43.5. EXAMPLES

      -
      # Creates "foo" secret from "bar" source file
      +

      16.43.5. EXAMPLES

      +
      # Creates "foo" secret from "bar" source file
       __docker_secret foo --source bar
       
      -

      16.43.6. AUTHORS

      +

      16.43.6. AUTHORS

      Ľubomír Kučera <lubomir.kucera.jr at gmail.com>

      -

      16.43.7. COPYING

      +

      16.43.7. COPYING

      Copyright (C) 2018 Ľubomír Kučera. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__docker_stack.html b/src/extra/manual/beta/man7/cdist-type__docker_stack.html index 73a50678..d89cc492 100644 --- a/src/extra/manual/beta/man7/cdist-type__docker_stack.html +++ b/src/extra/manual/beta/man7/cdist-type__docker_stack.html @@ -8,7 +8,7 @@ - 16.44. cdist-type__docker_stack(7) — cdist 6.5.6 documentation + 16.44. cdist-type__docker_stack(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -344,9 +335,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.44. cdist-type__docker_stack(7)
    • +
    • 16.44. cdist-type__docker_stack(7)
    • @@ -366,51 +357,50 @@
      -

      16.44. cdist-type__docker_stack(7)

      +

      16.44. cdist-type__docker_stack(7)

      -

      16.44.1. NAME

      +

      16.44.1. NAME

      cdist-type__docker_stack - Manage Docker stacks

      -

      16.44.2. DESCRIPTION

      +

      16.44.2. DESCRIPTION

      This type manages service stacks.

      -

      Note

      -

      Since there is no easy way to tell whether a stack needs to be updated, +

      Note

      +

      Since there is no easy way to tell whether a stack needs to be updated, docker stack deploy is being run every time this type is invoked. However, it does not mean this type is not idempotent. If Docker does not detect changes, the existing stack will not be updated.

      -

      16.44.3. OPTIONAL PARAMETERS

      -
      -
      compose-file
      -
      Path to the compose file. If it is '-' (dash), read standard input.
      -
      state
      -

      'present' or 'absent', defaults to 'present' where:

      -
      -
      present
      -
      the stack is deployed
      -
      absent
      -
      the stack is removed
      +

      16.44.3. OPTIONAL PARAMETERS

      +
      +
      compose-file

      Path to the compose file. If it is '-' (dash), read standard input.

      +
      +
      state

      'present' or 'absent', defaults to 'present' where:

      +
      +
      present

      the stack is deployed

      +
      +
      absent

      the stack is removed

      +
      -

      16.44.4. EXAMPLES

      -
      # Deploys 'foo' stack defined in 'docker-compose.yml' compose file
      +

      16.44.4. EXAMPLES

      +
      # Deploys 'foo' stack defined in 'docker-compose.yml' compose file
       __docker_stack foo --compose-file docker-compose.yml
       
      -

      16.44.5. AUTHORS

      +

      16.44.5. AUTHORS

      Ľubomír Kučera <lubomir.kucera.jr at gmail.com>

      -

      16.44.6. COPYING

      +

      16.44.6. COPYING

      Copyright (C) 2018 Ľubomír Kučera. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__docker_swarm.html b/src/extra/manual/beta/man7/cdist-type__docker_swarm.html index 46a9b28c..c499f0dc 100644 --- a/src/extra/manual/beta/man7/cdist-type__docker_swarm.html +++ b/src/extra/manual/beta/man7/cdist-type__docker_swarm.html @@ -8,7 +8,7 @@ - 16.45. cdist-type__docker_swarm(7) — cdist 6.5.6 documentation + 16.45. cdist-type__docker_swarm(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -344,9 +335,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.45. cdist-type__docker_swarm(7)
    • +
    • 16.45. cdist-type__docker_swarm(7)
    • @@ -366,33 +357,32 @@
      -

      16.45. cdist-type__docker_swarm(7)

      +

      16.45. cdist-type__docker_swarm(7)

      -

      16.45.1. NAME

      +

      16.45.1. NAME

      cdist-type__docker_swarm - Manage Swarm

      -

      16.45.2. DESCRIPTION

      +

      16.45.2. DESCRIPTION

      This type can initialize Docker swarm mode. For more information about swarm mode, see Swarm mode overview.

      -

      16.45.3. OPTIONAL PARAMETERS

      -
      -
      state
      -

      'present' or 'absent', defaults to 'present' where:

      -
      -
      present
      -
      Swarm is initialized
      -
      absent
      -
      Swarm is left
      +

      16.45.3. OPTIONAL PARAMETERS

      +
      +
      state

      'present' or 'absent', defaults to 'present' where:

      +
      +
      present

      Swarm is initialized

      +
      +
      absent

      Swarm is left

      +
      -

      16.45.4. EXAMPLES

      -
      # Initializes a swarm
      +

      16.45.4. EXAMPLES

      +
      # Initializes a swarm
       __docker_swarm
       
       # Leaves a swarm
      @@ -401,11 +391,11 @@ __docker_swarm --state absent
       
      -

      16.45.5. AUTHORS

      +

      16.45.5. AUTHORS

      Ľubomír Kučera <lubomir.kucera.jr at gmail.com>

      -

      16.45.6. COPYING

      +

      16.45.6. COPYING

      Copyright (C) 2018 Ľubomír Kučera. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__dog_vdi.html b/src/extra/manual/beta/man7/cdist-type__dog_vdi.html index a8b558d2..9998f56b 100644 --- a/src/extra/manual/beta/man7/cdist-type__dog_vdi.html +++ b/src/extra/manual/beta/man7/cdist-type__dog_vdi.html @@ -8,7 +8,7 @@ - 16.46. cdist-type__dog_vdi(7) — cdist 6.5.6 documentation + 16.46. cdist-type__dog_vdi(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.46. cdist-type__dog_vdi(7)
    • +
    • 16.46. cdist-type__dog_vdi(7)
    • @@ -367,30 +358,29 @@
      -

      16.46. cdist-type__dog_vdi(7)

      +

      16.46. cdist-type__dog_vdi(7)

      -

      16.46.1. NAME

      +

      16.46.1. NAME

      cdist-type__dog_vdi - Manage Sheepdog VM images

      -

      16.46.2. DESCRIPTION

      +

      16.46.2. DESCRIPTION

      The dog program is used to create images for sheepdog to be used in qemu.

      -

      16.46.3. OPTIONAL PARAMETERS

      -
      -
      state
      -
      Either "present" or "absent", defaults to "present"
      -
      size
      -

      Size of the image in "dog vdi" compatible units.

      -

      Required if state is "present".

      +

      16.46.3. OPTIONAL PARAMETERS

      +
      +
      state

      Either "present" or "absent", defaults to "present"

      +
      +
      size

      Size of the image in "dog vdi" compatible units.

      +

      Required if state is "present".

      -

      16.46.4. EXAMPLES

      -
      # Create a 50G size image
      +

      16.46.4. EXAMPLES

      +
      # Create a 50G size image
       __dog_vdi nico-privat.sky.ungleich.ch --size 50G
       
       # Create a 50G size image (more explicit)
      @@ -405,15 +395,15 @@ __dog_vdi nico-privat.sky.ungleich.ch --size 50G --state absent
       
      -

      16.46.5. SEE ALSO

      +

      16.46.5. SEE ALSO

      qemu(1), dog(8)

      -

      16.46.6. AUTHORS

      +

      16.46.6. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.46.7. COPYING

      +

      16.46.7. COPYING

      Copyright (C) 2014 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__dot_file.html b/src/extra/manual/beta/man7/cdist-type__dot_file.html index ce21ce1d..5a9d4161 100644 --- a/src/extra/manual/beta/man7/cdist-type__dot_file.html +++ b/src/extra/manual/beta/man7/cdist-type__dot_file.html @@ -8,7 +8,7 @@ - 16.47. cdist-type__dot_file(7) — cdist 6.5.6 documentation + 16.47. cdist-type__dot_file(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.47. cdist-type__dot_file(7)
    • +
    • 16.47. cdist-type__dot_file(7)
    • @@ -368,13 +359,13 @@
      -

      16.47. cdist-type__dot_file(7)

      +

      16.47. cdist-type__dot_file(7)

      -

      16.47.1. NAME

      +

      16.47.1. NAME

      cdist-type__dot_file - install file under user's home directory

      -

      16.47.2. DESCRIPTION

      +

      16.47.2. DESCRIPTION

      This type installs a file (=__object_id) under user's home directory, providing a way to install per-user configuration files. File owner and group is deduced from user, for who file is installed.

      @@ -382,31 +373,31 @@ and group is deduced from user, for who file is installed.

      where user's home directory is.

      -

      16.47.3. REQUIRED PARAMETERS

      -
      -
      user
      -
      User, for who file is installed
      +

      16.47.3. REQUIRED PARAMETERS

      +
      +
      user

      User, for who file is installed

      +
      -

      16.47.4. OPTIONAL PARAMETERS

      -
      -
      mode
      -
      forwarded to __file type
      -
      state
      -
      forwarded to __file type
      -
      source
      -
      forwarded to __file type
      +

      16.47.4. OPTIONAL PARAMETERS

      +
      +
      mode

      forwarded to __file type

      +
      +
      state

      forwarded to __file type

      +
      +
      source

      forwarded to __file type

      +
      -

      16.47.5. MESSAGES

      +

      16.47.5. MESSAGES

      This type inherits all messages from file type, and do not add any new.

      -

      16.47.6. EXAMPLES

      -
      # Install .forward file for user 'alice'. Since state is 'present',
      +

      16.47.6. EXAMPLES

      +
      # Install .forward file for user 'alice'. Since state is 'present',
       # user is not meant to edit this file, all changes will be overridden.
       # It is good idea to put warning about it in file itself.
       __dot_file .forward --user alice --source "$__files/forward"
      @@ -422,11 +413,11 @@ __dot_file .xmonad/xmonad.hs --user eve --state exists --source 
       
      -

      16.47.7. SEE ALSO

      +

      16.47.7. SEE ALSO

      cdist-type__file(7)

      -

      16.47.8. COPYING

      +

      16.47.8. COPYING

      Copyright (C) 2015 Dmitry Bogatov. Free use of this software is granted under the terms of the GNU General Public License version 3 or later (GPLv3+).

      diff --git a/src/extra/manual/beta/man7/cdist-type__file_old.html b/src/extra/manual/beta/man7/cdist-type__file_old.html index 6f966b77..b1dcec39 100644 --- a/src/extra/manual/beta/man7/cdist-type__file_old.html +++ b/src/extra/manual/beta/man7/cdist-type__file_old.html @@ -8,7 +8,7 @@ - 16.48. cdist-type__file(7) — cdist 6.5.6 documentation + 16.48. cdist-type__file(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.48. cdist-type__file(7)
    • +
    • 16.48. cdist-type__file(7)
    • @@ -368,29 +359,28 @@
      -

      16.48. cdist-type__file(7)

      +

      16.48. cdist-type__file(7)

      -

      16.48.1. NAME

      +

      16.48.1. NAME

      cdist-type__file - Manage files.

      -

      16.48.2. DESCRIPTION

      +

      16.48.2. DESCRIPTION

      This cdist type allows you to create files, remove files and set file attributes on the target.

      If the file already exists on the target, then if it is a:

      -
      -
      regular file, and state is:
      -
      -
      present
      -
      replace it with the source file if they are not equal
      -
      exists
      -
      do nothing
      +
      +
      regular file, and state is:
      +
      present

      replace it with the source file if they are not equal

      +
      +
      exists

      do nothing

      +
      -
      symlink
      -
      replace it with the source file
      -
      directory
      -
      replace it with the source file
      +
      symlink

      replace it with the source file

      +
      +
      directory

      replace it with the source file

      +

      One exception is that when state is pre-exists, an error is raised if the file would have been created otherwise (e.g. it is not present or @@ -398,60 +388,59 @@ not a regular file).

      In any case, make sure that the file attributes are as specified.

      -

      16.48.3. REQUIRED PARAMETERS

      +

      16.48.3. REQUIRED PARAMETERS

      None.

      -

      16.48.4. OPTIONAL PARAMETERS

      -
      -
      state
      -

      'present', 'absent', 'exists' or 'pre-exists', defaults to 'present' where:

      -
      -
      present
      -
      the file is exactly the one from source
      -
      absent
      -
      the file does not exist
      -
      exists
      -
      the file from source but only if it doesn't already exist
      -
      pre-exists
      -
      check that the file exists and is a regular file, but do not -create or modify it
      +

      16.48.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present', 'absent', 'exists' or 'pre-exists', defaults to 'present' where:

      +
      +
      present

      the file is exactly the one from source

      +
      +
      absent

      the file does not exist

      +
      +
      exists

      the file from source but only if it doesn't already exist

      +
      +
      pre-exists

      check that the file exists and is a regular file, but do not +create or modify it

      +
      -
      group
      -
      Group to chgrp to. Defaults to root.
      -
      mode
      -
      Unix permissions, suitable for chmod. Defaults to a very secure 0600.
      -
      owner
      -
      User to chown to. Defaults to root.
      -
      source
      -
      If supplied, copy this file from the host running cdist to the target. +
      group

      Group to chgrp to. Defaults to root.

      +
      +
      mode

      Unix permissions, suitable for chmod. Defaults to a very secure 0600.

      +
      +
      owner

      User to chown to. Defaults to root.

      +
      +
      source

      If supplied, copy this file from the host running cdist to the target. If not supplied, an empty file or directory will be created. -If source is '-' (dash), take what was written to stdin as the file content.

      -
      onchange
      -
      The code to run if file is modified.
      +If source is '-' (dash), take what was written to stdin as the file content.

      +
      +
      onchange

      The code to run if file is modified.

      +
      -

      16.48.5. MESSAGES

      -
      -
      chgrp <group>
      -
      Changed group membership
      -
      chown <owner>
      -
      Changed owner
      -
      chmod <mode>
      -
      Changed mode
      -
      create
      -
      Empty file was created (no --source specified)
      -
      remove
      -
      File exists, but state is absent, file will be removed by generated code.
      -
      upload
      -
      File was uploaded
      +

      16.48.5. MESSAGES

      +
      +
      chgrp <group>

      Changed group membership

      +
      +
      chown <owner>

      Changed owner

      +
      +
      chmod <mode>

      Changed mode

      +
      +
      create

      Empty file was created (no --source specified)

      +
      +
      remove

      File exists, but state is absent, file will be removed by generated code.

      +
      +
      upload

      File was uploaded

      +
      -

      16.48.6. EXAMPLES

      -
      # Create  /etc/cdist-configured as an empty file
      +

      16.48.6. EXAMPLES

      +
      # Create  /etc/cdist-configured as an empty file
       __file /etc/cdist-configured
       # The same thing
       __file /etc/cdist-configured --state present
      @@ -477,11 +466,11 @@ __file /tmp/whatever --owner root --group root --mode 644
       
      -

      16.48.7. AUTHORS

      +

      16.48.7. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.48.8. COPYING

      +

      16.48.8. COPYING

      Copyright (C) 2011-2013 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__filesystem.html b/src/extra/manual/beta/man7/cdist-type__filesystem.html index 2913939c..e4cc7345 100644 --- a/src/extra/manual/beta/man7/cdist-type__filesystem.html +++ b/src/extra/manual/beta/man7/cdist-type__filesystem.html @@ -8,7 +8,7 @@ - 16.49. cdist-type__filesystem(7) — cdist 6.5.6 documentation + 16.49. cdist-type__filesystem(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.49. cdist-type__filesystem(7)
    • +
    • 16.49. cdist-type__filesystem(7)
    • @@ -369,13 +360,13 @@
      -

      16.49. cdist-type__filesystem(7)

      +

      16.49. cdist-type__filesystem(7)

      -

      16.49.1. NAME

      +

      16.49.1. NAME

      cdist-type__filesystem - Create Filesystems.

      -

      16.49.2. DESCRIPTION

      +

      16.49.2. DESCRIPTION

      This cdist type allows you to create filesystems on devices.

      If the device is mounted on target, it refuses to do anything.

      If the device has a filesystem other then the specified and/or @@ -383,19 +374,18 @@ the label is not correct, it only makes a new filesystem if you have specified --force option.

      -

      16.49.3. REQUIRED PARAMETERS

      -
      -
      fstype
      -
      Filesystem type, for example 'ext3', 'btrfs' or 'xfs'.
      +

      16.49.3. REQUIRED PARAMETERS

      +
      +
      fstype

      Filesystem type, for example 'ext3', 'btrfs' or 'xfs'.

      +
      -

      16.49.4. OPTIONAL PARAMETERS

      -
      -
      device
      -

      Blockdevice for filesystem, Defaults to object_id. +

      16.49.4. OPTIONAL PARAMETERS

      +
      +
      device

      Blockdevice for filesystem, Defaults to object_id. On linux, it can be any lsblk accepted device notation.

      -
      +

      For example:
      @@ -405,32 +395,32 @@ On linux, it can be any lsblk accepted device notation.

      -
      label
      -
      Label which should be applied on the filesystem.
      -
      mkfsoptions
      -
      Additional options which are inserted to the mkfs.xxx call.
      +
      label

      Label which should be applied on the filesystem.

      +
      +
      mkfsoptions

      Additional options which are inserted to the mkfs.xxx call.

      +
      -

      16.49.5. BOOLEAN PARAMETERS

      -
      -
      force
      -
      Normally, this type does nothing if a filesystem is found +

      16.49.5. BOOLEAN PARAMETERS

      +
      +
      force

      Normally, this type does nothing if a filesystem is found on the target device. If you specify force, it's formatted if the filesystem type or label differs from parameters. -Warning: This option can easily lead into data loss!

      +Warning: This option can easily lead into data loss!

      +
      -

      16.49.6. MESSAGES

      -
      -
      filesystem <fstype> on <device> : <discoverd device> created
      -
      Filesystem was created on <discoverd device>
      +

      16.49.6. MESSAGES

      +
      +
      filesystem <fstype> on <device><discoverd device> created

      Filesystem was created on <discoverd device>

      +
      -

      16.49.7. EXAMPLES

      -
      # Ensures that device /dev/sdb is formatted with xfs
      +

      16.49.7. EXAMPLES

      +
      # Ensures that device /dev/sdb is formatted with xfs
       __filesystem /dev/sdb --fstype xfs --label Testdisk1
       # The same thing with btrfs and disk spezified by pci path to disk 1:0 on vmware
       __filesystem dev_sdb --fstype btrfs --device /dev/disk/by-path/pci-0000:0b:00.0-scsi-0:0:0:0 --label Testdisk2
      @@ -440,11 +430,11 @@ __filesystem dev_sdb --fstype xfs --device /dev/mapper/360060e80432f560050202f22
       
      -

      16.49.8. AUTHORS

      +

      16.49.8. AUTHORS

      Daniel Heule <hda--@--sfs.biz>

      -

      16.49.9. COPYING

      +

      16.49.9. COPYING

      Copyright (C) 2016 Daniel Heule. Free use of this software is granted under the terms of the GNU General Public License version 3 or any later version (GPLv3+).

      diff --git a/src/extra/manual/beta/man7/cdist-type__firewalld_rule.html b/src/extra/manual/beta/man7/cdist-type__firewalld_rule.html index 0f9d7a47..7292aa62 100644 --- a/src/extra/manual/beta/man7/cdist-type__firewalld_rule.html +++ b/src/extra/manual/beta/man7/cdist-type__firewalld_rule.html @@ -8,7 +8,7 @@ - 16.50. cdist-type__firewalld_rule(7) — cdist 6.5.6 documentation + 16.50. cdist-type__firewalld_rule(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.50. cdist-type__firewalld_rule(7)
    • +
    • 16.50. cdist-type__firewalld_rule(7)
    • @@ -368,42 +359,42 @@
      -

      16.50. cdist-type__firewalld_rule(7)

      +

      16.50. cdist-type__firewalld_rule(7)

      -

      16.50.1. NAME

      +

      16.50.1. NAME

      cdist-type__firewalld_rule - Configure firewalld rules

      -

      16.50.2. DESCRIPTION

      +

      16.50.2. DESCRIPTION

      This cdist type allows you to manage rules in firewalld using the direct way (i.e. no zone support).

      -

      16.50.3. REQUIRED PARAMETERS

      -
      -
      rule
      -
      The rule to apply. Essentially an firewalld command -line without firewalld in front of it.
      -
      protocol
      -
      Either ipv4, ipv4 or eb. See firewall-cmd(1)
      -
      table
      -
      The table to use (like filter or nat). See firewall-cmd(1).
      -
      chain
      -
      The chain to use (like INPUT_direct or FORWARD_direct). See firewall-cmd(1).
      -
      priority
      -
      The priority to use (0 is topmost). See firewall-cmd(1).
      +

      16.50.3. REQUIRED PARAMETERS

      +
      +
      rule

      The rule to apply. Essentially an firewalld command +line without firewalld in front of it.

      +
      +
      protocol

      Either ipv4, ipv4 or eb. See firewall-cmd(1)

      +
      +
      table

      The table to use (like filter or nat). See firewall-cmd(1).

      +
      +
      chain

      The chain to use (like INPUT_direct or FORWARD_direct). See firewall-cmd(1).

      +
      +
      priority

      The priority to use (0 is topmost). See firewall-cmd(1).

      +
      -

      16.50.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      'present' or 'absent', defaults to 'present'
      +

      16.50.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present' or 'absent', defaults to 'present'

      +
      -

      16.50.5. EXAMPLES

      -
      # Allow access from entrance.place4.ungleich.ch
      +

      16.50.5. EXAMPLES

      +
      # Allow access from entrance.place4.ungleich.ch
       __firewalld_rule entrance \
           --protocol ipv4 \
           --table filter \
      @@ -430,15 +421,15 @@ __firewalld_rule vm-forward
       
      -

      16.50.6. SEE ALSO

      +

      16.50.6. SEE ALSO

      cdist-type__iptables_rule(7), firewalld(8)

      -

      16.50.7. AUTHORS

      +

      16.50.7. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.50.8. COPYING

      +

      16.50.8. COPYING

      Copyright (C) 2015 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__firewalld_start.html b/src/extra/manual/beta/man7/cdist-type__firewalld_start.html index 4fc37f83..d947c4e3 100644 --- a/src/extra/manual/beta/man7/cdist-type__firewalld_start.html +++ b/src/extra/manual/beta/man7/cdist-type__firewalld_start.html @@ -8,7 +8,7 @@ - 16.51. cdist-type__firewalld_start(7) — cdist 6.5.6 documentation + 16.51. cdist-type__firewalld_start(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.51. cdist-type__firewalld_start(7)
    • +
    • 16.51. cdist-type__firewalld_start(7)
    • @@ -368,31 +359,31 @@
      -

      16.51. cdist-type__firewalld_start(7)

      +

      16.51. cdist-type__firewalld_start(7)

      -

      16.51.1. NAME

      +

      16.51.1. NAME

      cdist-type__firewalld_start - start and enable firewalld

      -

      16.51.2. DESCRIPTION

      +

      16.51.2. DESCRIPTION

      This cdist type allows you to start and enable firewalld.

      -

      16.51.3. REQUIRED PARAMETERS

      +

      16.51.3. REQUIRED PARAMETERS

      None

      -

      16.51.4. OPTIONAL PARAMETERS

      -
      -
      startstate
      -
      'present' or 'absent', start/stop firewalld. Default is 'present'.
      -
      bootstate
      -
      'present' or 'absent', enable/disable firewalld on boot. Default is 'present'.
      +

      16.51.4. OPTIONAL PARAMETERS

      +
      +
      startstate

      'present' or 'absent', start/stop firewalld. Default is 'present'.

      +
      +
      bootstate

      'present' or 'absent', enable/disable firewalld on boot. Default is 'present'.

      +
      -

      16.51.5. EXAMPLES

      -
      # start and enable firewalld
      +

      16.51.5. EXAMPLES

      +
      # start and enable firewalld
       __firewalld_start
       
       # only enable firewalld to start on boot
      @@ -401,15 +392,15 @@ __firewalld_start --startstate present --bootstate absent
       
      -

      16.51.6. SEE ALSO

      +

      16.51.6. SEE ALSO

      firewalld(8)

      -

      16.51.7. AUTHORS

      +

      16.51.7. AUTHORS

      Darko Poljak <darko.poljak--@--ungleich.ch>

      -

      16.51.8. COPYING

      +

      16.51.8. COPYING

      Copyright (C) 2016 Darko Poljak. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__git.html b/src/extra/manual/beta/man7/cdist-type__git.html index 6fafc882..77dd3719 100644 --- a/src/extra/manual/beta/man7/cdist-type__git.html +++ b/src/extra/manual/beta/man7/cdist-type__git.html @@ -8,7 +8,7 @@ - 16.52. cdist-type__git(7) — cdist 6.5.6 documentation + 16.52. cdist-type__git(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.52. cdist-type__git(7)
    • +
    • 16.52. cdist-type__git(7)
    • @@ -367,45 +358,45 @@
      -

      16.52. cdist-type__git(7)

      +

      16.52. cdist-type__git(7)

      -

      16.52.1. NAME

      +

      16.52.1. NAME

      cdist-type__git - Get and or keep git repositories up-to-date

      -

      16.52.2. DESCRIPTION

      +

      16.52.2. DESCRIPTION

      This cdist type allows you to clone git repositories

      -

      16.52.3. REQUIRED PARAMETERS

      -
      -
      source
      -
      Specifies the git remote to clone from
      +

      16.52.3. REQUIRED PARAMETERS

      +
      +
      source

      Specifies the git remote to clone from

      +
      -

      16.52.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      Either "present" or "absent", defaults to "present"
      -
      branch
      -
      Create this branch by checking out the remote branch of this name -Default branch is "master"
      -
      group
      -
      Group to chgrp to.
      -
      mode
      -
      Unix permissions, suitable for chmod.
      -
      owner
      -
      User to chown to.
      -
      recursive
      -
      Passes the --recurse-submodules flag to git when cloning the repository.
      -
      shallow
      -
      Sets --depth=1 and --shallow-submodules for cloning repositories with big history.
      +

      16.52.4. OPTIONAL PARAMETERS

      +
      +
      state

      Either "present" or "absent", defaults to "present"

      +
      +
      branch

      Create this branch by checking out the remote branch of this name +Default branch is "master"

      +
      +
      group

      Group to chgrp to.

      +
      +
      mode

      Unix permissions, suitable for chmod.

      +
      +
      owner

      User to chown to.

      +
      +
      recursive

      Passes the --recurse-submodules flag to git when cloning the repository.

      +
      +
      shallow

      Sets --depth=1 and --shallow-submodules for cloning repositories with big history.

      +
      -

      16.52.5. EXAMPLES

      -
      __git /home/services/dokuwiki --source git://github.com/splitbrain/dokuwiki.git
      +

      16.52.5. EXAMPLES

      +
      __git /home/services/dokuwiki --source git://github.com/splitbrain/dokuwiki.git
       
       # Checkout cdist, stay on branch 2.1
       __git /home/nico/cdist --source git@code.ungleich.ch:ungleich-public/cdist.git --branch 2.1
      @@ -413,11 +404,11 @@ __git /home/nico/cdist --source git@code.ungleich.ch:ungleich-public/cdist.git -
       
      -

      16.52.6. AUTHORS

      +

      16.52.6. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.52.7. COPYING

      +

      16.52.7. COPYING

      Copyright (C) 2012 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__go_get.html b/src/extra/manual/beta/man7/cdist-type__go_get.html index 28307eaf..aa2f1f9a 100644 --- a/src/extra/manual/beta/man7/cdist-type__go_get.html +++ b/src/extra/manual/beta/man7/cdist-type__go_get.html @@ -8,7 +8,7 @@ - 16.53. cdist-type__go_get(7) — cdist 6.5.6 documentation + 16.53. cdist-type__go_get(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.53. cdist-type__go_get(7)
    • +
    • 16.53. cdist-type__go_get(7)
    • @@ -367,28 +358,28 @@
      -

      16.53. cdist-type__go_get(7)

      +

      16.53. cdist-type__go_get(7)

      -

      16.53.1. NAME

      +

      16.53.1. NAME

      cdist-type__go_get - Install go packages with go get

      -

      16.53.2. DESCRIPTION

      +

      16.53.2. DESCRIPTION

      This cdist type allows you to install golang packages with go get. A sufficiently recent version of go must be present on the system.

      The object ID is the go package to be installed.

      -

      16.53.3. REQUIRED PARAMETERS

      +

      16.53.3. REQUIRED PARAMETERS

      None.

      -

      16.53.4. OPTIONAL PARAMETERS

      +

      16.53.4. OPTIONAL PARAMETERS

      None.

      -

      16.53.5. EXAMPLES

      -
      __go_get github.com/prometheus/prometheus/cmd/...
      +

      16.53.5. EXAMPLES

      +
      __go_get github.com/prometheus/prometheus/cmd/...
       
       # usually you'd need to require golang from somewhere:
       require="__golang_from_vendor" __go_get github.com/prometheus/prometheus/cmd/...
      @@ -396,11 +387,11 @@ A sufficiently recent version of go must be present on the system.

      -

      16.53.6. AUTHORS

      +

      16.53.6. AUTHORS

      Kamila Součková <kamila@ksp.sk>

      -

      16.53.7. COPYING

      +

      16.53.7. COPYING

      Copyright (C) 2017 Kamila Součková. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__golang_from_vendor.html b/src/extra/manual/beta/man7/cdist-type__golang_from_vendor.html index 6c4da852..185d600c 100644 --- a/src/extra/manual/beta/man7/cdist-type__golang_from_vendor.html +++ b/src/extra/manual/beta/man7/cdist-type__golang_from_vendor.html @@ -8,7 +8,7 @@ - 16.54. cdist-type__golang_from_vendor(7) — cdist 6.5.6 documentation + 16.54. cdist-type__golang_from_vendor(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.54. cdist-type__golang_from_vendor(7)
    • +
    • 16.54. cdist-type__golang_from_vendor(7)
    • @@ -367,40 +358,40 @@
      -

      16.54. cdist-type__golang_from_vendor(7)

      +

      16.54. cdist-type__golang_from_vendor(7)

      -

      16.54.1. NAME

      +

      16.54.1. NAME

      cdist-type__golang_from_vendor - Install any version of golang from golang.org

      -

      16.54.2. DESCRIPTION

      +

      16.54.2. DESCRIPTION

      This cdist type allows you to install golang from archives provided by https://golang.org/dl/.

      See https://golang.org/dl/ for the list of supported versions, operating systems and architectures.

      This is a singleton type.

      -

      16.54.3. REQUIRED PARAMETERS

      +

      16.54.3. REQUIRED PARAMETERS

      None.

      -

      16.54.4. OPTIONAL PARAMETERS

      -
      -
      version
      -
      The golang version to install, defaults to 1.8.1
      +

      16.54.4. OPTIONAL PARAMETERS

      +
      +
      version

      The golang version to install, defaults to 1.8.1

      +
      -

      16.54.5. EXAMPLES

      -
      __golang_from_vendor --version 1.8.1
      +

      16.54.5. EXAMPLES

      +
      __golang_from_vendor --version 1.8.1
       
      -

      16.54.6. AUTHORS

      +

      16.54.6. AUTHORS

      Kamila Součková <kamila@ksp.sk>

      -

      16.54.7. COPYING

      +

      16.54.7. COPYING

      Copyright (C) 2017 Kamila Součková. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__grafana_dashboard.html b/src/extra/manual/beta/man7/cdist-type__grafana_dashboard.html index 26937a99..b59b3f47 100644 --- a/src/extra/manual/beta/man7/cdist-type__grafana_dashboard.html +++ b/src/extra/manual/beta/man7/cdist-type__grafana_dashboard.html @@ -8,7 +8,7 @@ - 16.55. cdist-type__grafana_dashboard(7) — cdist 6.5.6 documentation + 16.55. cdist-type__grafana_dashboard(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.55. cdist-type__grafana_dashboard(7)
    • +
    • 16.55. cdist-type__grafana_dashboard(7)
    • @@ -367,36 +358,36 @@
      -

      16.55. cdist-type__grafana_dashboard(7)

      +

      16.55. cdist-type__grafana_dashboard(7)

      -

      16.55.1. NAME

      +

      16.55.1. NAME

      cdist-type__grafana_dashboard - Install Grafana (https://grafana.com)

      -

      16.55.2. DESCRIPTION

      +

      16.55.2. DESCRIPTION

      This cdist type adds the Grafana repository, installs the grafana package, and sets the server to start on boot.

      This is a singleton type.

      -

      16.55.3. REQUIRED PARAMETERS

      +

      16.55.3. REQUIRED PARAMETERS

      None.

      -

      16.55.4. OPTIONAL PARAMETERS

      +

      16.55.4. OPTIONAL PARAMETERS

      None.

      -

      16.55.5. EXAMPLES

      -
      __grafana_dashboard
      +

      16.55.5. EXAMPLES

      +
      __grafana_dashboard
       
      -

      16.55.6. AUTHORS

      +

      16.55.6. AUTHORS

      Kamila Součková <kamila@ksp.sk>

      -

      16.55.7. COPYING

      +

      16.55.7. COPYING

      Copyright (C) 2017 Kamila Součková. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__group.html b/src/extra/manual/beta/man7/cdist-type__group.html index 6e58eaed..3c512aeb 100644 --- a/src/extra/manual/beta/man7/cdist-type__group.html +++ b/src/extra/manual/beta/man7/cdist-type__group.html @@ -8,7 +8,7 @@ - 16.56. cdist-type__group(7) — cdist 6.5.6 documentation + 16.56. cdist-type__group(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.56. cdist-type__group(7)
    • +
    • 16.56. cdist-type__group(7)
    • @@ -369,55 +360,55 @@
      -

      16.56. cdist-type__group(7)

      +

      16.56. cdist-type__group(7)

      -

      16.56.1. NAME

      +

      16.56.1. NAME

      cdist-type__group - Manage groups

      -

      16.56.2. DESCRIPTION

      +

      16.56.2. DESCRIPTION

      This cdist type allows you to create or modify groups on the target.

      -

      16.56.3. REQUIRED PARAMETERS

      +

      16.56.3. REQUIRED PARAMETERS

      None.

      -

      16.56.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      absent or present, defaults to present
      -
      gid
      -
      see groupmod(8)
      -
      password
      -
      see above
      +

      16.56.4. OPTIONAL PARAMETERS

      +
      +
      state

      absent or present, defaults to present

      +
      +
      gid

      see groupmod(8)

      +
      +
      password

      see above

      +
      -

      16.56.5. BOOLEAN PARAMETERS

      -
      -
      system
      -
      see groupadd(8), apply only on group creation
      +

      16.56.5. BOOLEAN PARAMETERS

      +
      +
      system

      see groupadd(8), apply only on group creation

      +
      -

      16.56.6. MESSAGES

      -
      -
      mod
      -
      group is modified
      -
      add
      -
      New group added
      -
      remove
      -
      group is removed
      -
      change <property> <new_value> <current_value>
      -
      Changed group property from current_value to new_value
      -
      set <property> <new_value>
      -
      set property to new value, property was not set before
      +

      16.56.6. MESSAGES

      +
      +
      mod

      group is modified

      +
      +
      add

      New group added

      +
      +
      remove

      group is removed

      +
      +
      change <property> <new_value> <current_value>

      Changed group property from current_value to new_value

      +
      +
      set <property> <new_value>

      set property to new value, property was not set before

      +
      -

      16.56.7. EXAMPLES

      -
      # Create a group 'foobar' with operating system default settings
      +

      16.56.7. EXAMPLES

      +
      # Create a group 'foobar' with operating system default settings
       __group foobar
       
       # Remove the 'foobar' group
      @@ -435,11 +426,11 @@ __group foobar --gid 1234 --password 
       
      -

      16.56.8. AUTHORS

      +

      16.56.8. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.56.9. COPYING

      +

      16.56.9. COPYING

      Copyright (C) 2011-2015 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__hostname.html b/src/extra/manual/beta/man7/cdist-type__hostname.html index 204ae53c..6469a24e 100644 --- a/src/extra/manual/beta/man7/cdist-type__hostname.html +++ b/src/extra/manual/beta/man7/cdist-type__hostname.html @@ -8,7 +8,7 @@ - 16.57. cdist-type__hostname(7) — cdist 6.5.6 documentation + 16.57. cdist-type__hostname(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.57. cdist-type__hostname(7)
    • +
    • 16.57. cdist-type__hostname(7)
    • @@ -368,39 +359,39 @@
      -

      16.57. cdist-type__hostname(7)

      +

      16.57. cdist-type__hostname(7)

      -

      16.57.1. NAME

      +

      16.57.1. NAME

      cdist-type__hostname - Set the hostname

      -

      16.57.2. DESCRIPTION

      +

      16.57.2. DESCRIPTION

      Sets the hostname on various operating systems.

      Tip: For advice on choosing a hostname, see RFC 1178.

      -

      16.57.3. REQUIRED PARAMETERS

      +

      16.57.3. REQUIRED PARAMETERS

      None.

      -

      16.57.4. OPTIONAL PARAMETERS

      -
      -
      name
      -
      The hostname to set. Defaults to the first segment of __target_host -(${__target_host%%.*})
      +

      16.57.4. OPTIONAL PARAMETERS

      +
      +
      name

      The hostname to set. Defaults to the first segment of __target_host +(${__target_host%%.*})

      +
      -

      16.57.5. MESSAGES

      -
      -
      changed
      -
      Changed the hostname
      +

      16.57.5. MESSAGES

      +
      +
      changed

      Changed the hostname

      +
      -

      16.57.6. EXAMPLES

      -
      # take hostname from __target_host
      +

      16.57.6. EXAMPLES

      +
      # take hostname from __target_host
       __hostname
       
       # set hostname explicitly
      @@ -409,11 +400,11 @@ __hostname --name some-static-hostname
       
      -

      16.57.7. AUTHORS

      +

      16.57.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.57.8. COPYING

      +

      16.57.8. COPYING

      Copyright (C) 2012 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__hosts.html b/src/extra/manual/beta/man7/cdist-type__hosts.html index 14ecac87..ebe30136 100644 --- a/src/extra/manual/beta/man7/cdist-type__hosts.html +++ b/src/extra/manual/beta/man7/cdist-type__hosts.html @@ -8,7 +8,7 @@ - 16.58. cdist-type__hosts(7) — cdist 6.5.6 documentation + 16.58. cdist-type__hosts(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.58. cdist-type__hosts(7)
    • +
    • 16.58. cdist-type__hosts(7)
    • @@ -367,32 +358,32 @@
      -

      16.58. cdist-type__hosts(7)

      +

      16.58. cdist-type__hosts(7)

      -

      16.58.1. NAME

      +

      16.58.1. NAME

      cdist-type__hosts - manage entries in /etc/hosts

      -

      16.58.2. DESCRIPTION

      +

      16.58.2. DESCRIPTION

      Add or remove entries from /etc/hosts file.

      -

      16.58.3. OPTIONAL PARAMETERS

      -
      -
      state
      -
      If state is present, make object_id resolve to ip. If -state is absent, object_id will no longer resolve via +

      16.58.3. OPTIONAL PARAMETERS

      +
      +
      state

      If state is present, make object_id resolve to ip. If +state is absent, object_id will no longer resolve via /etc/hosts, if it was previously configured with this type. -Manually inserted entries are unaffected.

      -
      ip
      -
      IP address, to which hostname (=object_id) must resolve. If -state is present, this parameter is mandatory, if state is -absent, this parameter is silently ignored.
      +Manually inserted entries are unaffected.

      +
      +
      ip

      IP address, to which hostname (=object_id) must resolve. If +state is present, this parameter is mandatory, if state is +absent, this parameter is silently ignored.

      +
      -

      16.58.4. EXAMPLES

      -
      # Now `funny' resolves to 192.168.1.76,
      +

      16.58.4. EXAMPLES

      +
      # Now `funny' resolves to 192.168.1.76,
       __hosts funny --ip 192.168.1.76
       # and `happy' no longer resolve via /etc/hosts if it was
       # previously configured via __hosts.
      @@ -401,15 +392,15 @@ __hosts happy --state absent
       
      -

      16.58.5. SEE ALSO

      +

      16.58.5. SEE ALSO

      hosts(5)

      -

      16.58.6. AUTHORS

      +

      16.58.6. AUTHORS

      Dmitry Bogatov <KAction@gnu.org>

      -

      16.58.7. COPYING

      +

      16.58.7. COPYING

      Copyright (C) 2015,2016 Dmitry Bogatov. Free use of this software is granted under the terms of the GNU General Public License version 3 or later (GPLv3+).

      diff --git a/src/extra/manual/beta/man7/cdist-type__install_bootloader_grub.html b/src/extra/manual/beta/man7/cdist-type__install_bootloader_grub.html index 7e7186f1..a8805c58 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_bootloader_grub.html +++ b/src/extra/manual/beta/man7/cdist-type__install_bootloader_grub.html @@ -8,7 +8,7 @@ - 16.59. cdist-type__install_bootloader_grub(7) — cdist 6.5.6 documentation + 16.59. cdist-type__install_bootloader_grub(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.59. cdist-type__install_bootloader_grub(7)
    • +
    • 16.59. cdist-type__install_bootloader_grub(7)
    • @@ -367,42 +358,42 @@
      -

      16.59. cdist-type__install_bootloader_grub(7)

      +

      16.59. cdist-type__install_bootloader_grub(7)

      -

      16.59.1. NAME

      +

      16.59.1. NAME

      cdist-type__install_bootloader_grub - install grub2 bootloader on given disk

      -

      16.59.2. DESCRIPTION

      +

      16.59.2. DESCRIPTION

      This cdist type allows you to install grub2 bootloader on given disk.

      -

      16.59.3. REQUIRED PARAMETERS

      +

      16.59.3. REQUIRED PARAMETERS

      None

      -

      16.59.4. OPTIONAL PARAMETERS

      -
      -
      device
      -
      The device to install grub to. Defaults to object_id
      -
      chroot
      -
      where to chroot before running grub-install. Defaults to /target.
      +

      16.59.4. OPTIONAL PARAMETERS

      +
      +
      device

      The device to install grub to. Defaults to object_id

      +
      +
      chroot

      where to chroot before running grub-install. Defaults to /target.

      +
      -

      16.59.5. EXAMPLES

      -
      __install_bootloader_grub /dev/sda
      +

      16.59.5. EXAMPLES

      +
      __install_bootloader_grub /dev/sda
       
       __install_bootloader_grub /dev/sda --chroot /mnt/foobar
       
      -

      16.59.6. AUTHORS

      +

      16.59.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.59.7. COPYING

      +

      16.59.7. COPYING

      Copyright (C) 2011 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_chroot_mount.html b/src/extra/manual/beta/man7/cdist-type__install_chroot_mount.html index 7d98dd4d..c74536f3 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_chroot_mount.html +++ b/src/extra/manual/beta/man7/cdist-type__install_chroot_mount.html @@ -8,7 +8,7 @@ - 16.60. cdist-type__install_chroot_mount(7) — cdist 6.5.6 documentation + 16.60. cdist-type__install_chroot_mount(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.60. cdist-type__install_chroot_mount(7)
    • +
    • 16.60. cdist-type__install_chroot_mount(7)
    • @@ -367,35 +358,35 @@
      -

      16.60. cdist-type__install_chroot_mount(7)

      +

      16.60. cdist-type__install_chroot_mount(7)

      -

      16.60.1. NAME

      +

      16.60.1. NAME

      cdist-type__install_chroot_mount - mount a chroot with install command

      -

      16.60.2. DESCRIPTION

      +

      16.60.2. DESCRIPTION

      Mount and prepare a chroot for running commands within it.

      -

      16.60.3. REQUIRED PARAMETERS

      +

      16.60.3. REQUIRED PARAMETERS

      None

      -

      16.60.4. OPTIONAL PARAMETERS

      +

      16.60.4. OPTIONAL PARAMETERS

      None

      -

      16.60.5. EXAMPLES

      -
      __install_chroot_mount /path/to/chroot
      +

      16.60.5. EXAMPLES

      +
      __install_chroot_mount /path/to/chroot
       
      -

      16.60.6. AUTHORS

      +

      16.60.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.60.7. COPYING

      +

      16.60.7. COPYING

      Copyright (C) 2012 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_chroot_umount.html b/src/extra/manual/beta/man7/cdist-type__install_chroot_umount.html index 4a89488a..e27e2424 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_chroot_umount.html +++ b/src/extra/manual/beta/man7/cdist-type__install_chroot_umount.html @@ -8,7 +8,7 @@ - 16.61. cdist-type__install_chroot_umount(7) — cdist 6.5.6 documentation + 16.61. cdist-type__install_chroot_umount(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.61. cdist-type__install_chroot_umount(7)
    • +
    • 16.61. cdist-type__install_chroot_umount(7)
    • @@ -368,39 +359,39 @@
      -

      16.61. cdist-type__install_chroot_umount(7)

      +

      16.61. cdist-type__install_chroot_umount(7)

      -

      16.61.1. NAME

      +

      16.61.1. NAME

      cdist-type__install_chroot_umount - unmount a chroot mounted by __install_chroot_mount

      -

      16.61.2. DESCRIPTION

      +

      16.61.2. DESCRIPTION

      Undo what __install_chroot_mount did.

      -

      16.61.3. REQUIRED PARAMETERS

      +

      16.61.3. REQUIRED PARAMETERS

      None

      -

      16.61.4. OPTIONAL PARAMETERS

      +

      16.61.4. OPTIONAL PARAMETERS

      None

      -

      16.61.5. EXAMPLES

      -
      __install_chroot_umount /path/to/chroot
      +

      16.61.5. EXAMPLES

      +
      __install_chroot_umount /path/to/chroot
       
      -

      16.61.6. SEE ALSO

      +

      16.61.6. SEE ALSO

      cdist-type__install_chroot_mount(7)

      -

      16.61.7. AUTHORS

      +

      16.61.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.61.8. COPYING

      +

      16.61.8. COPYING

      Copyright (C) 2012 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_config.html b/src/extra/manual/beta/man7/cdist-type__install_config.html index e5cb9bbb..c27921d5 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_config.html +++ b/src/extra/manual/beta/man7/cdist-type__install_config.html @@ -8,7 +8,7 @@ - 16.62. cdist-type__install_config(7) — cdist 6.5.6 documentation + 16.62. cdist-type__install_config(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.62. cdist-type__install_config(7)
    • +
    • 16.62. cdist-type__install_config(7)
    • @@ -367,42 +358,42 @@
      -

      16.62. cdist-type__install_config(7)

      +

      16.62. cdist-type__install_config(7)

      -

      16.62.1. NAME

      +

      16.62.1. NAME

      cdist-type__install_config - run cdist config as part of the installation

      -

      16.62.2. DESCRIPTION

      +

      16.62.2. DESCRIPTION

      This cdist type allows you to run cdist config as part of the installation. It does this by using a custom __remote_{copy,exec} prefix which runs cdist config against the /target chroot on the remote host.

      -

      16.62.3. REQUIRED PARAMETERS

      +

      16.62.3. REQUIRED PARAMETERS

      None

      -

      16.62.4. OPTIONAL PARAMETERS

      -
      -
      chroot
      -
      where to chroot before running grub-install. Defaults to /target.
      +

      16.62.4. OPTIONAL PARAMETERS

      +
      +
      chroot

      where to chroot before running grub-install. Defaults to /target.

      +
      -

      16.62.5. EXAMPLES

      -
      __install_config
      +

      16.62.5. EXAMPLES

      +
      __install_config
       
       __install_config --chroot /mnt/somewhere
       
      -

      16.62.6. AUTHORS

      +

      16.62.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.62.7. COPYING

      +

      16.62.7. COPYING

      Copyright (C) 2011 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_coreos.html b/src/extra/manual/beta/man7/cdist-type__install_coreos.html index f6a76f1d..3471df9d 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_coreos.html +++ b/src/extra/manual/beta/man7/cdist-type__install_coreos.html @@ -8,7 +8,7 @@ - 16.63. cdist-type__install_coreos(7) — cdist 6.5.6 documentation + 16.63. cdist-type__install_coreos(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.63. cdist-type__install_coreos(7)
    • +
    • 16.63. cdist-type__install_coreos(7)
    • @@ -367,44 +358,44 @@
      -

      16.63. cdist-type__install_coreos(7)

      +

      16.63. cdist-type__install_coreos(7)

      -

      16.63.1. NAME

      +

      16.63.1. NAME

      cdist-type__install_coreos - Install CoreOS

      -

      16.63.2. DESCRIPTION

      +

      16.63.2. DESCRIPTION

      This type installs CoreOS to a given device using coreos-install, which is present in CoreOS ISO by default.

      -

      16.63.3. REQUIRED PARAMETERS

      -
      -
      device
      -
      A device CoreOS will be installed to.
      +

      16.63.3. REQUIRED PARAMETERS

      +
      +
      device

      A device CoreOS will be installed to.

      +
      -

      16.63.4. OPTIONAL PARAMETERS

      -
      -
      ignition
      -
      Path to ignition config.
      +

      16.63.4. OPTIONAL PARAMETERS

      +
      +
      ignition

      Path to ignition config.

      +
      -

      16.63.5. EXAMPLES

      -
      __install_coreos \
      +

      16.63.5. EXAMPLES

      +
      __install_coreos \
           --device /dev/sda \
           --ignition ignition.json
       
      -

      16.63.6. AUTHORS

      +

      16.63.6. AUTHORS

      Ľubomír Kučera <lubomir.kucera.jr at gmail.com>

      -

      16.63.7. COPYING

      +

      16.63.7. COPYING

      Copyright (C) 2018 Ľubomír Kučera. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_directory.html b/src/extra/manual/beta/man7/cdist-type__install_directory.html index 18787aa0..6861cac2 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_directory.html +++ b/src/extra/manual/beta/man7/cdist-type__install_directory.html @@ -8,7 +8,7 @@ - 16.64. cdist-type__install_directory(7) — cdist 6.5.6 documentation + 16.64. cdist-type__install_directory(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -347,9 +338,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.64. cdist-type__install_directory(7)
    • +
    • 16.64. cdist-type__install_directory(7)
    • @@ -369,66 +360,65 @@
      -

      16.64. cdist-type__install_directory(7)

      +

      16.64. cdist-type__install_directory(7)

      -

      16.64.1. NAME

      +

      16.64.1. NAME

      cdist-type__install_directory - Manage a directory with install command

      -

      16.64.2. DESCRIPTION

      +

      16.64.2. DESCRIPTION

      This cdist type allows you to create or remove directories on the target.

      -

      16.64.3. REQUIRED PARAMETERS

      +

      16.64.3. REQUIRED PARAMETERS

      None.

      -

      16.64.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      'present' or 'absent', defaults to 'present'
      -
      group
      -
      Group to chgrp to.
      -
      mode
      -
      Unix permissions, suitable for chmod.
      -
      owner
      -
      User to chown to.
      +

      16.64.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present' or 'absent', defaults to 'present'

      +
      +
      group

      Group to chgrp to.

      +
      +
      mode

      Unix permissions, suitable for chmod.

      +
      +
      owner

      User to chown to.

      +
      -

      16.64.5. BOOLEAN PARAMETERS

      -
      -
      parents
      -

      Whether to create parents as well (mkdir -p behaviour). +

      16.64.5. BOOLEAN PARAMETERS

      +
      +
      parents

      Whether to create parents as well (mkdir -p behaviour). Warning: all intermediate directory permissions default to whatever mkdir -p does.

      -

      Usually this means root:root, 0700.

      +

      Usually this means root:root, 0700.

      +
      +
      recursive

      If supplied the chgrp and chown call will run recursively. +This does not influence the behaviour of chmod.

      -
      recursive
      -
      If supplied the chgrp and chown call will run recursively. -This does not influence the behaviour of chmod.
      -

      16.64.6. MESSAGES

      -
      -
      chgrp <group>
      -
      Changed group membership
      -
      chown <owner>
      -
      Changed owner
      -
      chmod <mode>
      -
      Changed mode
      -
      create
      -
      Empty directory was created
      -
      remove
      -
      Directory exists, but state is absent, directory will be removed by generated code.
      -
      remove non directory
      -
      Something other than a directory with the same name exists and was removed prior to create.
      +

      16.64.6. MESSAGES

      +
      +
      chgrp <group>

      Changed group membership

      +
      +
      chown <owner>

      Changed owner

      +
      +
      chmod <mode>

      Changed mode

      +
      +
      create

      Empty directory was created

      +
      +
      remove

      Directory exists, but state is absent, directory will be removed by generated code.

      +
      +
      remove non directory

      Something other than a directory with the same name exists and was removed prior to create.

      +
      -

      16.64.7. EXAMPLES

      -
      # A silly example
      +

      16.64.7. EXAMPLES

      +
      # A silly example
       __install_directory /tmp/foobar
       
       # Remove a directory
      @@ -453,11 +443,11 @@ __install_directory /home/services/kvm --recursive --parents \<
       
      -

      16.64.8. AUTHORS

      +

      16.64.8. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.64.9. COPYING

      +

      16.64.9. COPYING

      Copyright (C) 2011 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_file.html b/src/extra/manual/beta/man7/cdist-type__install_file.html index a4c94b7d..0add8134 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_file.html +++ b/src/extra/manual/beta/man7/cdist-type__install_file.html @@ -8,7 +8,7 @@ - 16.65. cdist-type__install_file(7) — cdist 6.5.6 documentation + 16.65. cdist-type__install_file(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.65. cdist-type__install_file(7)
    • +
    • 16.65. cdist-type__install_file(7)
    • @@ -368,29 +359,28 @@
      -

      16.65. cdist-type__install_file(7)

      +

      16.65. cdist-type__install_file(7)

      -

      16.65.1. NAME

      +

      16.65.1. NAME

      cdist-type__install_file - Manage files with install command.

      -

      16.65.2. DESCRIPTION

      +

      16.65.2. DESCRIPTION

      This cdist type allows you to create files, remove files and set file attributes on the target.

      If the file already exists on the target, then if it is a:

      -
      -
      regular file, and state is:
      -
      -
      present
      -
      replace it with the source file if they are not equal
      -
      exists
      -
      do nothing
      +
      +
      regular file, and state is:
      +
      present

      replace it with the source file if they are not equal

      +
      +
      exists

      do nothing

      +
      -
      symlink
      -
      replace it with the source file
      -
      directory
      -
      replace it with the source file
      +
      symlink

      replace it with the source file

      +
      +
      directory

      replace it with the source file

      +

      One exception is that when state is pre-exists, an error is raised if the file would have been created otherwise (e.g. it is not present or @@ -398,60 +388,59 @@ not a regular file).

      In any case, make sure that the file attributes are as specified.

      -

      16.65.3. REQUIRED PARAMETERS

      +

      16.65.3. REQUIRED PARAMETERS

      None.

      -

      16.65.4. OPTIONAL PARAMETERS

      -
      -
      state
      -

      'present', 'absent', 'exists' or 'pre-exists', defaults to 'present' where:

      -
      -
      present
      -
      the file is exactly the one from source
      -
      absent
      -
      the file does not exist
      -
      exists
      -
      the file from source but only if it doesn't already exist
      -
      pre-exists
      -
      check that the file exists and is a regular file, but do not -create or modify it
      +

      16.65.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present', 'absent', 'exists' or 'pre-exists', defaults to 'present' where:

      +
      +
      present

      the file is exactly the one from source

      +
      +
      absent

      the file does not exist

      +
      +
      exists

      the file from source but only if it doesn't already exist

      +
      +
      pre-exists

      check that the file exists and is a regular file, but do not +create or modify it

      +
      -
      group
      -
      Group to chgrp to.
      -
      mode
      -
      Unix permissions, suitable for chmod.
      -
      owner
      -
      User to chown to.
      -
      source
      -
      If supplied, copy this file from the host running cdist to the target. +
      group

      Group to chgrp to.

      +
      +
      mode

      Unix permissions, suitable for chmod.

      +
      +
      owner

      User to chown to.

      +
      +
      source

      If supplied, copy this file from the host running cdist to the target. If not supplied, an empty file or directory will be created. -If source is '-' (dash), take what was written to stdin as the file content.

      -
      onchange
      -
      The code to run if file is modified.
      +If source is '-' (dash), take what was written to stdin as the file content.

      +
      +
      onchange

      The code to run if file is modified.

      +
      -

      16.65.5. MESSAGES

      -
      -
      chgrp <group>
      -
      Changed group membership
      -
      chown <owner>
      -
      Changed owner
      -
      chmod <mode>
      -
      Changed mode
      -
      create
      -
      Empty file was created (no --source specified)
      -
      remove
      -
      File exists, but state is absent, file will be removed by generated code.
      -
      upload
      -
      File was uploaded
      +

      16.65.5. MESSAGES

      +
      +
      chgrp <group>

      Changed group membership

      +
      +
      chown <owner>

      Changed owner

      +
      +
      chmod <mode>

      Changed mode

      +
      +
      create

      Empty file was created (no --source specified)

      +
      +
      remove

      File exists, but state is absent, file will be removed by generated code.

      +
      +
      upload

      File was uploaded

      +
      -

      16.65.6. EXAMPLES

      -
      # Create  /etc/cdist-configured as an empty file
      +

      16.65.6. EXAMPLES

      +
      # Create  /etc/cdist-configured as an empty file
       __install_file /etc/cdist-configured
       # The same thing
       __install_file /etc/cdist-configured --state present
      @@ -477,11 +466,11 @@ __install_file /tmp/whatever --owner root --group root --mode 64
       
      -

      16.65.7. AUTHORS

      +

      16.65.7. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.65.8. COPYING

      +

      16.65.8. COPYING

      Copyright (C) 2011-2013 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_fstab.html b/src/extra/manual/beta/man7/cdist-type__install_fstab.html index 9a5bfc79..71452a05 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_fstab.html +++ b/src/extra/manual/beta/man7/cdist-type__install_fstab.html @@ -8,7 +8,7 @@ - 16.66. cdist-type__install_fstab(7) — cdist 6.5.6 documentation + 16.66. cdist-type__install_fstab(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.66. cdist-type__install_fstab(7)
    • +
    • 16.66. cdist-type__install_fstab(7)
    • @@ -368,47 +359,47 @@
      -

      16.66. cdist-type__install_fstab(7)

      +

      16.66. cdist-type__install_fstab(7)

      -

      16.66.1. NAME

      +

      16.66.1. NAME

      cdist-type__install_fstab - generate /etc/fstab during installation

      -

      16.66.2. DESCRIPTION

      +

      16.66.2. DESCRIPTION

      Uses __install_generate_fstab to generate a /etc/fstab file and uploads it to the target machine at ${prefix}/etc/fstab.

      -

      16.66.3. REQUIRED PARAMETERS

      +

      16.66.3. REQUIRED PARAMETERS

      None

      -

      16.66.4. OPTIONAL PARAMETERS

      -
      -
      prefix
      -
      The prefix under which to generate the /etc/fstab file. -Defaults to /target.
      +

      16.66.4. OPTIONAL PARAMETERS

      +
      +
      prefix

      The prefix under which to generate the /etc/fstab file. +Defaults to /target.

      +
      -

      16.66.5. EXAMPLES

      -
      __install_fstab
      +

      16.66.5. EXAMPLES

      +
      __install_fstab
       
       __install_fstab --prefix /mnt/target
       
      -

      16.66.6. SEE ALSO

      +

      16.66.6. SEE ALSO

      cdist-type__install_generate_fstab(7), cdist-type__install_mount(7)

      -

      16.66.7. AUTHORS

      +

      16.66.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.66.8. COPYING

      +

      16.66.8. COPYING

      Copyright (C) 2011 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_generate_fstab.html b/src/extra/manual/beta/man7/cdist-type__install_generate_fstab.html index a37fcaaa..41c0e981 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_generate_fstab.html +++ b/src/extra/manual/beta/man7/cdist-type__install_generate_fstab.html @@ -8,7 +8,7 @@ - 16.67. cdist-type__install_generate_fstab(7) — cdist 6.5.6 documentation + 16.67. cdist-type__install_generate_fstab(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.67. cdist-type__install_generate_fstab(7)
    • +
    • 16.67. cdist-type__install_generate_fstab(7)
    • @@ -368,49 +359,49 @@
      -

      16.67. cdist-type__install_generate_fstab(7)

      +

      16.67. cdist-type__install_generate_fstab(7)

      -

      16.67.1. NAME

      +

      16.67.1. NAME

      cdist-type__install_generate_fstab - generate /etc/fstab during installation

      -

      16.67.2. DESCRIPTION

      +

      16.67.2. DESCRIPTION

      Generates a /etc/fstab file from information retrieved from __install_mount definitions.

      -

      16.67.3. REQUIRED PARAMETERS

      -
      -
      destination
      -
      The path where to store the generated fstab file. -Note that this is a path on the server, where cdist is running, not the target host.
      +

      16.67.3. REQUIRED PARAMETERS

      +
      +
      destination

      The path where to store the generated fstab file. +Note that this is a path on the server, where cdist is running, not the target host.

      +
      -

      16.67.4. OPTIONAL PARAMETERS

      +

      16.67.4. OPTIONAL PARAMETERS

      None

      -

      16.67.5. BOOLEAN PARAMETERS

      -
      -
      uuid
      -
      use UUID instead of device in fstab
      +

      16.67.5. BOOLEAN PARAMETERS

      +
      +
      uuid

      use UUID instead of device in fstab

      +
      -

      16.67.6. EXAMPLES

      -
      __install_generate_fstab --destination /path/where/you/want/fstab
      +

      16.67.6. EXAMPLES

      +
      __install_generate_fstab --destination /path/where/you/want/fstab
       
       __install_generate_fstab --uuid --destination /path/where/you/want/fstab
       
      -

      16.67.7. AUTHORS

      +

      16.67.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.67.8. COPYING

      +

      16.67.8. COPYING

      Copyright (C) 2012 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_mkfs.html b/src/extra/manual/beta/man7/cdist-type__install_mkfs.html index dd9d41f3..1161a581 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_mkfs.html +++ b/src/extra/manual/beta/man7/cdist-type__install_mkfs.html @@ -8,7 +8,7 @@ - 16.68. cdist-type__install_mkfs(7) — cdist 6.5.6 documentation + 16.68. cdist-type__install_mkfs(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.68. cdist-type__install_mkfs(7)
    • +
    • 16.68. cdist-type__install_mkfs(7)
    • @@ -368,36 +359,36 @@
      -

      16.68. cdist-type__install_mkfs(7)

      +

      16.68. cdist-type__install_mkfs(7)

      -

      16.68.1. NAME

      +

      16.68.1. NAME

      cdist-type__install_mkfs - build a linux file system

      -

      16.68.2. DESCRIPTION

      +

      16.68.2. DESCRIPTION

      This cdist type is a wrapper for the mkfs command.

      -

      16.68.3. REQUIRED PARAMETERS

      -
      -
      type
      -
      The filesystem type to use. Same as used with mkfs -t.
      +

      16.68.3. REQUIRED PARAMETERS

      +
      +
      type

      The filesystem type to use. Same as used with mkfs -t.

      +
      -

      16.68.4. OPTIONAL PARAMETERS

      -
      -
      device
      -
      defaults to object_id
      -
      options
      -
      file system-specific options to be passed to the mkfs command
      -
      blocks
      -
      the number of blocks to be used for the file system
      +

      16.68.4. OPTIONAL PARAMETERS

      +
      +
      device

      defaults to object_id

      +
      +
      options

      file system-specific options to be passed to the mkfs command

      +
      +
      blocks

      the number of blocks to be used for the file system

      +
      -

      16.68.5. EXAMPLES

      -
      # reiserfs /dev/sda5
      +

      16.68.5. EXAMPLES

      +
      # reiserfs /dev/sda5
       __install_mkfs /dev/sda5 --type reiserfs
       
       # same thing with explicit device
      @@ -409,15 +400,15 @@ __install_mkfs /dev/sda1 --type jfs --options "-j /dev/sda
       
      -

      16.68.6. SEE ALSO

      +

      16.68.6. SEE ALSO

      mkfs(8)

      -

      16.68.7. AUTHORS

      +

      16.68.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.68.8. COPYING

      +

      16.68.8. COPYING

      Copyright (C) 2011 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_mount.html b/src/extra/manual/beta/man7/cdist-type__install_mount.html index 52dc8b1a..987c0117 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_mount.html +++ b/src/extra/manual/beta/man7/cdist-type__install_mount.html @@ -8,7 +8,7 @@ - 16.69. cdist-type__install_mount(7) — cdist 6.5.6 documentation + 16.69. cdist-type__install_mount(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.69. cdist-type__install_mount(7)
    • +
    • 16.69. cdist-type__install_mount(7)
    • @@ -368,41 +359,41 @@
      -

      16.69. cdist-type__install_mount(7)

      +

      16.69. cdist-type__install_mount(7)

      -

      16.69.1. NAME

      +

      16.69.1. NAME

      cdist-type__install_mount - mount filesystems in the installer

      -

      16.69.2. DESCRIPTION

      +

      16.69.2. DESCRIPTION

      Mounts filesystems in the installer. Collects data to generate /etc/fstab.

      -

      16.69.3. REQUIRED PARAMETERS

      -
      -
      device
      -
      the device to mount
      +

      16.69.3. REQUIRED PARAMETERS

      +
      +
      device

      the device to mount

      +
      -

      16.69.4. OPTIONAL PARAMETERS

      -
      -
      dir
      -
      where to mount device. Defaults to object_id.
      -
      options
      -
      mount options passed to mount(8) and used in /etc/fstab
      -
      type
      -
      filesystem type passed to mount(8) and used in /etc/fstab. +

      16.69.4. OPTIONAL PARAMETERS

      +
      +
      dir

      where to mount device. Defaults to object_id.

      +
      +
      options

      mount options passed to mount(8) and used in /etc/fstab

      +
      +
      type

      filesystem type passed to mount(8) and used in /etc/fstab. If type is swap, 'dir' is ignored. -Defaults to the filesystem used in __install_mkfs for the same 'device'.

      -
      prefix
      -
      the prefix to prepend to 'dir' when mounting in the installer. -Defaults to /target.
      +Defaults to the filesystem used in __install_mkfs for the same 'device'.

      +
      +
      prefix

      the prefix to prepend to 'dir' when mounting in the installer. +Defaults to /target.

      +
      -

      16.69.5. EXAMPLES

      -
      __install_mount slash --dir / --device /dev/sda5 --options noatime
      +

      16.69.5. EXAMPLES

      +
      __install_mount slash --dir / --device /dev/sda5 --options noatime
       require="__install_mount/slash" __install_mount /boot --device /dev/sda1
       __install_mount swap --device /dev/sda2 --type swap
       require="__install_mount/slash" __install_mount /tmp --device tmpfs --type tmpfs
      @@ -410,16 +401,16 @@ __install_mount swap --device /dev/sda2 --type swap
       
      -

      16.69.6. SEE ALSO

      +

      16.69.6. SEE ALSO

      cdist-type__install_mkfs(7), cdist-type__install_mount_apply (7)

      -

      16.69.7. AUTHORS

      +

      16.69.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.69.8. COPYING

      +

      16.69.8. COPYING

      Copyright (C) 2011 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_partition_msdos.html b/src/extra/manual/beta/man7/cdist-type__install_partition_msdos.html index 9a292a0f..37b9daf9 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_partition_msdos.html +++ b/src/extra/manual/beta/man7/cdist-type__install_partition_msdos.html @@ -8,7 +8,7 @@ - 16.70. cdist-type__install_partition_msdos(7) — cdist 6.5.6 documentation + 16.70. cdist-type__install_partition_msdos(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.70. cdist-type__install_partition_msdos(7)
    • +
    • 16.70. cdist-type__install_partition_msdos(7)
    • @@ -367,43 +358,43 @@
      -

      16.70. cdist-type__install_partition_msdos(7)

      +

      16.70. cdist-type__install_partition_msdos(7)

      -

      16.70.1. NAME

      +

      16.70.1. NAME

      cdist-type__install_partition_msdos - creates msdos partitions

      -

      16.70.2. DESCRIPTION

      +

      16.70.2. DESCRIPTION

      This cdist type allows you to create msdos paritions.

      -

      16.70.3. REQUIRED PARAMETERS

      -
      -
      type
      -
      the partition type used in fdisk (such as 82 or 83) or "extended"
      +

      16.70.3. REQUIRED PARAMETERS

      +
      +
      type

      the partition type used in fdisk (such as 82 or 83) or "extended"

      +
      -

      16.70.4. OPTIONAL PARAMETERS

      -
      -
      device
      -
      the device we're working on. Defaults to the string prefix of --partition
      -
      minor
      -
      the partition number we're working on. Defaults to the numeric suffix of --partition
      -
      partition
      -
      defaults to object_id
      -
      bootable
      -
      mark partition as bootable, true or false, defaults to false
      -
      size
      -
      the size of the partition (such as 32M or 15G, whole numbers +

      16.70.4. OPTIONAL PARAMETERS

      +
      +
      device

      the device we're working on. Defaults to the string prefix of --partition

      +
      +
      minor

      the partition number we're working on. Defaults to the numeric suffix of --partition

      +
      +
      partition

      defaults to object_id

      +
      +
      bootable

      mark partition as bootable, true or false, defaults to false

      +
      +
      size

      the size of the partition (such as 32M or 15G, whole numbers only), '+' for remaining space, or 'n%' for percentage of remaining (these should only be used after all specific partition sizes are -specified). Defaults to +.

      +specified). Defaults to +.

      +
      -

      16.70.5. EXAMPLES

      -
      # 128MB, linux, bootable
      +

      16.70.5. EXAMPLES

      +
      # 128MB, linux, bootable
       __install_partition_msdos /dev/sda1 --type 83 --size 128M --bootable true
       # 512MB, swap
       __install_partition_msdos /dev/sda2 --type 82 --size 512M
      @@ -421,11 +412,11 @@ __install_partition_msdos /dev/nvme0n1p2 --device /dev/nvme0n1 --minor 
       
      -

      16.70.6. AUTHORS

      +

      16.70.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.70.7. COPYING

      +

      16.70.7. COPYING

      Copyright (C) 2011-2017 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_partition_msdos_apply.html b/src/extra/manual/beta/man7/cdist-type__install_partition_msdos_apply.html index 9eba316e..5b73d4a9 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_partition_msdos_apply.html +++ b/src/extra/manual/beta/man7/cdist-type__install_partition_msdos_apply.html @@ -8,7 +8,7 @@ - 16.71. cdist-type__install_partition_msdos_apply(7) — cdist 6.5.6 documentation + 16.71. cdist-type__install_partition_msdos_apply(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.71. cdist-type__install_partition_msdos_apply(7)
    • +
    • 16.71. cdist-type__install_partition_msdos_apply(7)
    • @@ -368,39 +359,39 @@
      -

      16.71. cdist-type__install_partition_msdos_apply(7)

      +

      16.71. cdist-type__install_partition_msdos_apply(7)

      -

      16.71.1. NAME

      +

      16.71.1. NAME

      cdist-type__install_partition_msdos_apply - Apply dos partition settings

      -

      16.71.2. DESCRIPTION

      +

      16.71.2. DESCRIPTION

      Create the partitions defined with __install_partition_msdos

      -

      16.71.3. REQUIRED PARAMETERS

      +

      16.71.3. REQUIRED PARAMETERS

      None

      -

      16.71.4. OPTIONAL PARAMETERS

      +

      16.71.4. OPTIONAL PARAMETERS

      None

      -

      16.71.5. EXAMPLES

      -
      __install_partition_msdos_apply
      +

      16.71.5. EXAMPLES

      +
      __install_partition_msdos_apply
       
      -

      16.71.6. SEE ALSO

      +

      16.71.6. SEE ALSO

      cdist-type__install_partition_msdos_apply(7)

      -

      16.71.7. AUTHORS

      +

      16.71.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.71.8. COPYING

      +

      16.71.8. COPYING

      Copyright (C) 2011 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_reboot.html b/src/extra/manual/beta/man7/cdist-type__install_reboot.html index f8fe42af..66d0d54a 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_reboot.html +++ b/src/extra/manual/beta/man7/cdist-type__install_reboot.html @@ -8,7 +8,7 @@ - 16.72. cdist-type__install_reboot(7) — cdist 6.5.6 documentation + 16.72. cdist-type__install_reboot(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.72. cdist-type__install_reboot(7)
    • +
    • 16.72. cdist-type__install_reboot(7)
    • @@ -367,35 +358,35 @@
      -

      16.72. cdist-type__install_reboot(7)

      +

      16.72. cdist-type__install_reboot(7)

      -

      16.72.1. NAME

      +

      16.72.1. NAME

      cdist-type__install_reboot - run reboot

      -

      16.72.2. DESCRIPTION

      +

      16.72.2. DESCRIPTION

      This cdist type allows you to reboot a machine.

      -

      16.72.3. REQUIRED PARAMETERS

      +

      16.72.3. REQUIRED PARAMETERS

      None

      -

      16.72.4. OPTIONAL PARAMETERS

      +

      16.72.4. OPTIONAL PARAMETERS

      None

      -

      16.72.5. EXAMPLES

      -
      __install_reboot
      +

      16.72.5. EXAMPLES

      +
      __install_reboot
       
      -

      16.72.6. AUTHORS

      +

      16.72.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.72.7. COPYING

      +

      16.72.7. COPYING

      Copyright (C) 2011 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_reset_disk.html b/src/extra/manual/beta/man7/cdist-type__install_reset_disk.html index 8da34e15..d38e477f 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_reset_disk.html +++ b/src/extra/manual/beta/man7/cdist-type__install_reset_disk.html @@ -8,7 +8,7 @@ - 16.73. cdist-type__install_reset_disk(7) — cdist 6.5.6 documentation + 16.73. cdist-type__install_reset_disk(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.73. cdist-type__install_reset_disk(7)
    • +
    • 16.73. cdist-type__install_reset_disk(7)
    • @@ -367,37 +358,37 @@
      -

      16.73. cdist-type__install_reset_disk(7)

      +

      16.73. cdist-type__install_reset_disk(7)

      -

      16.73.1. NAME

      +

      16.73.1. NAME

      cdist-type__install_reset_disk - reset a disk

      -

      16.73.2. DESCRIPTION

      +

      16.73.2. DESCRIPTION

      Remove partition table. Remove all lvm labels. Remove mdadm superblock.

      -

      16.73.3. REQUIRED PARAMETERS

      +

      16.73.3. REQUIRED PARAMETERS

      None

      -

      16.73.4. OPTIONAL PARAMETERS

      +

      16.73.4. OPTIONAL PARAMETERS

      None

      -

      16.73.5. EXAMPLES

      -
      __install_reset_disk /dev/sdb
      +

      16.73.5. EXAMPLES

      +
      __install_reset_disk /dev/sdb
       
      -

      16.73.6. AUTHORS

      +

      16.73.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.73.7. COPYING

      +

      16.73.7. COPYING

      Copyright (C) 2012 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_stage.html b/src/extra/manual/beta/man7/cdist-type__install_stage.html index c062b128..19d636a3 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_stage.html +++ b/src/extra/manual/beta/man7/cdist-type__install_stage.html @@ -8,7 +8,7 @@ - 16.74. cdist-type__install_stage(7) — cdist 6.5.6 documentation + 16.74. cdist-type__install_stage(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.74. cdist-type__install_stage(7)
    • +
    • 16.74. cdist-type__install_stage(7)
    • @@ -368,44 +359,44 @@
      -

      16.74. cdist-type__install_stage(7)

      +

      16.74. cdist-type__install_stage(7)

      -

      16.74.1. NAME

      +

      16.74.1. NAME

      cdist-type__install_stage - download and unpack a stage file

      -

      16.74.2. DESCRIPTION

      +

      16.74.2. DESCRIPTION

      Downloads a operating system stage using curl and unpacks it to /target using tar. The stage tarball is expected to be gzip compressed.

      -

      16.74.3. REQUIRED PARAMETERS

      -
      -
      uri
      -
      The uri from which to fetch the tarball. +

      16.74.3. REQUIRED PARAMETERS

      +
      +
      uri

      The uri from which to fetch the tarball. Can be anything understood by curl, e.g: | http://path/to/stage.tgz | tftp:///path/to/stage.tgz -| file:///local/path/stage.tgz

      +| file:///local/path/stage.tgz

      +
      -

      16.74.4. OPTIONAL PARAMETERS

      -
      -
      target
      -
      where to unpack the tarball to. Defaults to /target.
      +

      16.74.4. OPTIONAL PARAMETERS

      +
      +
      target

      where to unpack the tarball to. Defaults to /target.

      +
      -

      16.74.5. BOOLEAN PARAMETERS

      -
      -
      insecure
      -
      run curl in insecure mode so it does not check the servers ssl certificate
      +

      16.74.5. BOOLEAN PARAMETERS

      +
      +
      insecure

      run curl in insecure mode so it does not check the servers ssl certificate

      +
      -

      16.74.6. EXAMPLES

      -
      __install_stage --uri tftp:///path/to/stage.tgz
      +

      16.74.6. EXAMPLES

      +
      __install_stage --uri tftp:///path/to/stage.tgz
       __install_stage --uri http://path/to/stage.tgz --target /mnt/foobar
       __install_stage --uri file:///path/to/stage.tgz --target /target
       __install_stage --uri https://path/to/stage.tgz --target /mnt/foobar --insecure
      @@ -413,11 +404,11 @@ __install_stage --uri https://path/to/stage.tgz --target /mnt/foobar --insecure
       
      -

      16.74.7. AUTHORS

      +

      16.74.7. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.74.8. COPYING

      +

      16.74.8. COPYING

      Copyright (C) 2011 - 2013 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__install_umount.html b/src/extra/manual/beta/man7/cdist-type__install_umount.html index d8098d6c..c09a6280 100644 --- a/src/extra/manual/beta/man7/cdist-type__install_umount.html +++ b/src/extra/manual/beta/man7/cdist-type__install_umount.html @@ -8,7 +8,7 @@ - 16.75. cdist-type__install_umount(7) — cdist 6.5.6 documentation + 16.75. cdist-type__install_umount(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.75. cdist-type__install_umount(7)
    • +
    • 16.75. cdist-type__install_umount(7)
    • @@ -367,38 +358,38 @@
      -

      16.75. cdist-type__install_umount(7)

      +

      16.75. cdist-type__install_umount(7)

      -

      16.75.1. NAME

      +

      16.75.1. NAME

      cdist-type__install_umount - umount target directory

      -

      16.75.2. DESCRIPTION

      +

      16.75.2. DESCRIPTION

      This cdist type allows you to recursively umount the given target directory.

      -

      16.75.3. REQUIRED PARAMETERS

      +

      16.75.3. REQUIRED PARAMETERS

      None

      -

      16.75.4. OPTIONAL PARAMETERS

      -
      -
      target
      -
      the mount point to umount. Defaults to object_id
      +

      16.75.4. OPTIONAL PARAMETERS

      +
      +
      target

      the mount point to umount. Defaults to object_id

      +
      -

      16.75.5. EXAMPLES

      -
      __install_umount /target
      +

      16.75.5. EXAMPLES

      +
      __install_umount /target
       
      -

      16.75.6. AUTHORS

      +

      16.75.6. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.75.7. COPYING

      +

      16.75.7. COPYING

      Copyright (C) 2011 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__iptables_apply.html b/src/extra/manual/beta/man7/cdist-type__iptables_apply.html index 8bc5f5a5..0882e15e 100644 --- a/src/extra/manual/beta/man7/cdist-type__iptables_apply.html +++ b/src/extra/manual/beta/man7/cdist-type__iptables_apply.html @@ -8,7 +8,7 @@ - 16.76. cdist-type__iptables_apply(7) — cdist 6.5.6 documentation + 16.76. cdist-type__iptables_apply(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.76. cdist-type__iptables_apply(7)
    • +
    • 16.76. cdist-type__iptables_apply(7)
    • @@ -368,39 +359,39 @@
      -

      16.76. cdist-type__iptables_apply(7)

      +

      16.76. cdist-type__iptables_apply(7)

      -

      16.76.1. NAME

      +

      16.76.1. NAME

      cdist-type__iptables_apply - Apply the rules

      -

      16.76.2. DESCRIPTION

      +

      16.76.2. DESCRIPTION

      This cdist type deploys an init script that triggers the configured rules and also re-applies them on configuration.

      -

      16.76.3. REQUIRED PARAMETERS

      +

      16.76.3. REQUIRED PARAMETERS

      None

      -

      16.76.4. OPTIONAL PARAMETERS

      +

      16.76.4. OPTIONAL PARAMETERS

      None

      -

      16.76.5. EXAMPLES

      +

      16.76.5. EXAMPLES

      None (__iptables_apply is used by __iptables_rule)

      -

      16.76.6. SEE ALSO

      +

      16.76.6. SEE ALSO

      cdist-type__iptables_rule(7), iptables(8)

      -

      16.76.7. AUTHORS

      +

      16.76.7. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.76.8. COPYING

      +

      16.76.8. COPYING

      Copyright (C) 2013 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__iptables_rule.html b/src/extra/manual/beta/man7/cdist-type__iptables_rule.html index f7c74822..f81aa91d 100644 --- a/src/extra/manual/beta/man7/cdist-type__iptables_rule.html +++ b/src/extra/manual/beta/man7/cdist-type__iptables_rule.html @@ -8,7 +8,7 @@ - 16.77. cdist-type__iptables_rule(7) — cdist 6.5.6 documentation + 16.77. cdist-type__iptables_rule(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.77. cdist-type__iptables_rule(7)
    • +
    • 16.77. cdist-type__iptables_rule(7)
    • @@ -368,34 +359,34 @@
      -

      16.77. cdist-type__iptables_rule(7)

      +

      16.77. cdist-type__iptables_rule(7)

      -

      16.77.1. NAME

      +

      16.77.1. NAME

      cdist-type__iptables_rule - Deploy iptable rulesets

      -

      16.77.2. DESCRIPTION

      +

      16.77.2. DESCRIPTION

      This cdist type allows you to manage iptable rules in a distribution independent manner.

      -

      16.77.3. REQUIRED PARAMETERS

      -
      -
      rule
      -
      The rule to apply. Essentially an iptables command -line without iptables in front of it.
      +

      16.77.3. REQUIRED PARAMETERS

      +
      +
      rule

      The rule to apply. Essentially an iptables command +line without iptables in front of it.

      +
      -

      16.77.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      'present' or 'absent', defaults to 'present'
      +

      16.77.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present' or 'absent', defaults to 'present'

      +
      -

      16.77.5. EXAMPLES

      -
      # Deploy some policies
      +

      16.77.5. EXAMPLES

      +
      # Deploy some policies
       __iptables_rule policy-in  --rule "-P INPUT DROP"
       __iptables_rule policy-out  --rule "-P OUTPUT ACCEPT"
       __iptables_rule policy-fwd  --rule "-P FORWARD DROP"
      @@ -415,15 +406,15 @@ __iptables_rule munin --rule "-A INPUT -p tcp --dport 4949
       
      -

      16.77.6. SEE ALSO

      +

      16.77.6. SEE ALSO

      cdist-type__iptables_apply(7), iptables(8)

      -

      16.77.7. AUTHORS

      +

      16.77.7. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.77.8. COPYING

      +

      16.77.8. COPYING

      Copyright (C) 2013 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__issue.html b/src/extra/manual/beta/man7/cdist-type__issue.html index 823f4bce..f7861b55 100644 --- a/src/extra/manual/beta/man7/cdist-type__issue.html +++ b/src/extra/manual/beta/man7/cdist-type__issue.html @@ -8,7 +8,7 @@ - 16.78. cdist-type__issue(7) — cdist 6.5.6 documentation + 16.78. cdist-type__issue(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -345,9 +336,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.78. cdist-type__issue(7)
    • +
    • 16.78. cdist-type__issue(7)
    • @@ -367,29 +358,29 @@
      -

      16.78. cdist-type__issue(7)

      +

      16.78. cdist-type__issue(7)

      -

      16.78.1. NAME

      +

      16.78.1. NAME

      cdist-type__issue - Manage issue

      -

      16.78.2. DESCRIPTION

      +

      16.78.2. DESCRIPTION

      This cdist type allows you to easily setup /etc/issue.

      -

      16.78.3. REQUIRED PARAMETERS

      +

      16.78.3. REQUIRED PARAMETERS

      None.

      -

      16.78.4. OPTIONAL PARAMETERS

      -
      -
      source
      -
      If supplied, use this file as /etc/issue instead of default.
      +

      16.78.4. OPTIONAL PARAMETERS

      +
      +
      source

      If supplied, use this file as /etc/issue instead of default.

      +
      -

      16.78.5. EXAMPLES

      -
      __issue
      +

      16.78.5. EXAMPLES

      +
      __issue
       
       # When called from another type
       __issue --source "$__type/files/myfancyissue"
      @@ -397,11 +388,11 @@ __issue --source "$__type
       
      -

      16.78.6. AUTHORS

      +

      16.78.6. AUTHORS

      Nico Schottelius <nico-cdist--@--schottelius.org>

      -

      16.78.7. COPYING

      +

      16.78.7. COPYING

      Copyright (C) 2011 Nico Schottelius. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__jail.html b/src/extra/manual/beta/man7/cdist-type__jail.html index 5082d068..8e4faf03 100644 --- a/src/extra/manual/beta/man7/cdist-type__jail.html +++ b/src/extra/manual/beta/man7/cdist-type__jail.html @@ -8,7 +8,7 @@ - 16.79. cdist-type__jail(7) — cdist 6.5.6 documentation + 16.79. cdist-type__jail(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -349,9 +340,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.79. cdist-type__jail(7)
    • +
    • 16.79. cdist-type__jail(7)
    • @@ -371,59 +362,59 @@
      -

      16.79. cdist-type__jail(7)

      +

      16.79. cdist-type__jail(7)

      -

      16.79.1. NAME

      +

      16.79.1. NAME

      cdist-type__jail - Manage FreeBSD jails

      -

      16.79.2. DESCRIPTION

      +

      16.79.2. DESCRIPTION

      This type is used on FreeBSD to manage jails by calling the appropriate per-version subtype.

      -

      16.79.3. REQUIRED PARAMETERS

      -
      -
      state
      -
      Either "present" or "absent", defaults to "present".
      -
      jailbase
      -
      The location of the .tgz archive containing the base fs for your jails.
      +

      16.79.3. REQUIRED PARAMETERS

      +
      +
      state

      Either "present" or "absent", defaults to "present".

      +
      +
      jailbase

      The location of the .tgz archive containing the base fs for your jails.

      +
      -

      16.79.4. OPTIONAL PARAMETERS

      -
      -
      name
      -
      The name of the jail. Default is to use the object_id as the jail name.
      -
      ip
      -
      The ifconfig style IP/netmask combination to use for the jail guest. If -the state parameter is "present," this parameter is required.
      -
      hostname
      -
      The FQDN to use for the jail guest. Defaults to the name parameter.
      -
      interface
      -
      The name of the physical interface on the jail server to bind the jail to. -Defaults to the first interface found in the output of ifconfig -l.
      -
      devfs-ruleset
      -
      The name of the devfs ruleset to associate with the jail. Defaults to +

      16.79.4. OPTIONAL PARAMETERS

      +
      +
      name

      The name of the jail. Default is to use the object_id as the jail name.

      +
      +
      ip

      The ifconfig style IP/netmask combination to use for the jail guest. If +the state parameter is "present," this parameter is required.

      +
      +
      hostname

      The FQDN to use for the jail guest. Defaults to the name parameter.

      +
      +
      interface

      The name of the physical interface on the jail server to bind the jail to. +Defaults to the first interface found in the output of ifconfig -l.

      +
      +
      devfs-ruleset

      The name of the devfs ruleset to associate with the jail. Defaults to "jailrules." This ruleset must be copied to the server via another type. -To use this option, devfs-enable must be "true."

      -
      jaildir
      -
      The location on the remote server to use for hosting jail filesystems. -Defaults to /usr/jail.
      +To use this option, devfs-enable must be "true."

      +
      +
      jaildir

      The location on the remote server to use for hosting jail filesystems. +Defaults to /usr/jail.

      +
      -

      16.79.5. BOOLEAN PARAMETERS

      -
      -
      stopped
      -
      Do not start the jail
      -
      devfs-disable
      -
      Whether to disallow devfs mounting within the jail
      -
      onboot
      -
      Whether to add the jail to rc.conf's jail_list variable.
      +

      16.79.5. BOOLEAN PARAMETERS

      +
      +
      stopped

      Do not start the jail

      +
      +
      devfs-disable

      Whether to disallow devfs mounting within the jail

      +
      +
      onboot

      Whether to add the jail to rc.conf's jail_list variable.

      +
      -

      16.79.6. CAVEATS

      +

      16.79.6. CAVEATS

      This type does not currently support modification of jail options. If, for example a jail needs to have its IP address or netmask changed, the jail must be removed then re-added with the correct IP address/netmask or the appropriate @@ -431,23 +422,23 @@ line (jail_<name>_ip="...") modified within rc.conf through some means.

      -

      16.79.7. MESSAGES

      -
      -
      start
      -
      The jail was started
      -
      stop
      -
      The jail was stopped
      -
      create:
      -
      The jail was created
      -
      delete
      -
      The jail was deleted
      -
      onboot
      -
      The jail was configured to start on boot
      +

      16.79.7. MESSAGES

      +
      +
      start

      The jail was started

      +
      +
      stop

      The jail was stopped

      +
      +
      create:

      The jail was created

      +
      +
      delete

      The jail was deleted

      +
      +
      onboot

      The jail was configured to start on boot

      +
      -

      16.79.8. EXAMPLES

      -
      # Create a jail called www
      +

      16.79.8. EXAMPLES

      +
      # Create a jail called www
       __jail www --state present --ip "192.168.1.2" --jailbase /my/jail/base.tgz
       
       # Remove the jail called www
      @@ -472,15 +463,15 @@ __jail lotsofoptions --state present --name testjail \
       
      -

      16.79.9. SEE ALSO

      +

      16.79.9. SEE ALSO

      jail(8)

      -

      16.79.10. AUTHORS

      +

      16.79.10. AUTHORS

      Jake Guffey <jake.guffey--@--jointheirstm.org>

      -

      16.79.11. COPYING

      +

      16.79.11. COPYING

      Copyright (C) 2012,2016 Jake Guffey. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__jail_freebsd10.html b/src/extra/manual/beta/man7/cdist-type__jail_freebsd10.html index 62cd0aa4..b3617e31 100644 --- a/src/extra/manual/beta/man7/cdist-type__jail_freebsd10.html +++ b/src/extra/manual/beta/man7/cdist-type__jail_freebsd10.html @@ -8,7 +8,7 @@ - 16.80. cdist-type__jail_freebsd10(7) — cdist 6.5.6 documentation + 16.80. cdist-type__jail_freebsd10(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -349,9 +340,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.80. cdist-type__jail_freebsd10(7)
    • +
    • 16.80. cdist-type__jail_freebsd10(7)
    • @@ -371,82 +362,82 @@
      -

      16.80. cdist-type__jail_freebsd10(7)

      +

      16.80. cdist-type__jail_freebsd10(7)

      -

      16.80.1. NAME

      +

      16.80.1. NAME

      cdist-type__jail_freeebsd10 - Manage FreeBSD jails

      -

      16.80.2. DESCRIPTION

      +

      16.80.2. DESCRIPTION

      This type is used on FreeBSD >= 10.0 to manage jails.

      -

      16.80.3. REQUIRED PARAMETERS

      -
      -
      state
      -
      Either "present" or "absent", defaults to "present".
      -
      jailbase
      -
      The location of the .tgz archive containing the base fs for your jails.
      +

      16.80.3. REQUIRED PARAMETERS

      +
      +
      state

      Either "present" or "absent", defaults to "present".

      +
      +
      jailbase

      The location of the .tgz archive containing the base fs for your jails.

      +
      -

      16.80.4. OPTIONAL PARAMETERS

      -
      -
      name
      -
      The name of the jail. Default is to use the object_id as the jail name.
      -
      ip
      -
      The ifconfig style IP/netmask combination to use for the jail guest. If -the state parameter is "present," this parameter is required.
      -
      hostname
      -
      The FQDN to use for the jail guest. Defaults to the name parameter.
      -
      interface
      -
      The name of the physical interface on the jail server to bind the jail to. -Defaults to the first interface found in the output of ifconfig -l.
      -
      devfs-ruleset
      -
      The name of the devfs ruleset to associate with the jail. Defaults to +

      16.80.4. OPTIONAL PARAMETERS

      +
      +
      name

      The name of the jail. Default is to use the object_id as the jail name.

      +
      +
      ip

      The ifconfig style IP/netmask combination to use for the jail guest. If +the state parameter is "present," this parameter is required.

      +
      +
      hostname

      The FQDN to use for the jail guest. Defaults to the name parameter.

      +
      +
      interface

      The name of the physical interface on the jail server to bind the jail to. +Defaults to the first interface found in the output of ifconfig -l.

      +
      +
      devfs-ruleset

      The name of the devfs ruleset to associate with the jail. Defaults to "jailrules." This ruleset must be copied to the server via another type. -To use this option, devfs-enable must be "true."

      -
      jaildir
      -
      The location on the remote server to use for hosting jail filesystems. -Defaults to /usr/jail.
      +To use this option, devfs-enable must be "true."

      +
      +
      jaildir

      The location on the remote server to use for hosting jail filesystems. +Defaults to /usr/jail.

      +
      -

      16.80.5. BOOLEAN PARAMETERS

      -
      -
      stopped
      -
      Do not start the jail
      -
      devfs-disable
      -
      Whether to disallow devfs mounting within the jail
      -
      onboot
      -
      Whether to add the jail to rc.conf's jail_list variable.
      +

      16.80.5. BOOLEAN PARAMETERS

      +
      +
      stopped

      Do not start the jail

      +
      +
      devfs-disable

      Whether to disallow devfs mounting within the jail

      +
      +
      onboot

      Whether to add the jail to rc.conf's jail_list variable.

      +
      -

      16.80.6. CAVEATS

      +

      16.80.6. CAVEATS

      This type does not currently support modification of jail options. If, for example a jail needs to have its IP address or netmask changed, the jail must be removed then re-added with the correct IP address/netmask or the appropriate modifications to jail.conf need to be made through alternate means.

      -

      16.80.7. MESSAGES

      -
      -
      start
      -
      The jail was started
      -
      stop
      -
      The jail was stopped
      -
      create:
      -
      The jail was created
      -
      delete
      -
      The jail was deleted
      -
      onboot
      -
      The jail was configured to start on boot
      +

      16.80.7. MESSAGES

      +
      +
      start

      The jail was started

      +
      +
      stop

      The jail was stopped

      +
      +
      create:

      The jail was created

      +
      +
      delete

      The jail was deleted

      +
      +
      onboot

      The jail was configured to start on boot

      +
      -

      16.80.8. EXAMPLES

      -
      # Create a jail called www
      +

      16.80.8. EXAMPLES

      +
      # Create a jail called www
       __jail_freebsd10 www --state present --ip "192.168.1.2" --jailbase /my/jail/base.tgz
       
       # Remove the jail called www
      @@ -471,15 +462,15 @@ __jail_freebsd10 lotsofoptions --state present --name testjail 
       
      -

      16.80.9. SEE ALSO

      +

      16.80.9. SEE ALSO

      jail(8)

      -

      16.80.10. AUTHORS

      +

      16.80.10. AUTHORS

      Jake Guffey <jake.guffey--@--jointheirstm.org>

      -

      16.80.11. COPYING

      +

      16.80.11. COPYING

      Copyright (C) 2012-2016 Jake Guffey. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__jail_freebsd9.html b/src/extra/manual/beta/man7/cdist-type__jail_freebsd9.html index 0351633d..e5a206df 100644 --- a/src/extra/manual/beta/man7/cdist-type__jail_freebsd9.html +++ b/src/extra/manual/beta/man7/cdist-type__jail_freebsd9.html @@ -8,7 +8,7 @@ - 16.81. cdist-type__jail_freebsd9(7) — cdist 6.5.6 documentation + 16.81. cdist-type__jail_freebsd9(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -349,9 +340,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.81. cdist-type__jail_freebsd9(7)
    • +
    • 16.81. cdist-type__jail_freebsd9(7)
    • @@ -371,59 +362,59 @@
      -

      16.81. cdist-type__jail_freebsd9(7)

      +

      16.81. cdist-type__jail_freebsd9(7)

      -

      16.81.1. NAME

      +

      16.81.1. NAME

      cdist-type__jail_freebsd9 - Manage FreeBSD jails

      -

      16.81.2. DESCRIPTION

      +

      16.81.2. DESCRIPTION

      This type is used on FreeBSD <= 9.x to manage jails.

      -

      16.81.3. REQUIRED PARAMETERS

      -
      -
      state
      -
      Either "present" or "absent", defaults to "present".
      -
      jailbase
      -
      The location of the .tgz archive containing the base fs for your jails.
      +

      16.81.3. REQUIRED PARAMETERS

      +
      +
      state

      Either "present" or "absent", defaults to "present".

      +
      +
      jailbase

      The location of the .tgz archive containing the base fs for your jails.

      +
      -

      16.81.4. OPTIONAL PARAMETERS

      -
      -
      name
      -
      The name of the jail. Default is to use the object_id as the jail name.
      -
      ip
      -
      The ifconfig style IP/netmask combination to use for the jail guest. If -the state parameter is "present," this parameter is required.
      -
      hostname
      -
      The FQDN to use for the jail guest. Defaults to the name parameter.
      -
      interface
      -
      The name of the physical interface on the jail server to bind the jail to. -Defaults to the first interface found in the output of ifconfig -l.
      -
      devfs-ruleset
      -
      The name of the devfs ruleset to associate with the jail. Defaults to +

      16.81.4. OPTIONAL PARAMETERS

      +
      +
      name

      The name of the jail. Default is to use the object_id as the jail name.

      +
      +
      ip

      The ifconfig style IP/netmask combination to use for the jail guest. If +the state parameter is "present," this parameter is required.

      +
      +
      hostname

      The FQDN to use for the jail guest. Defaults to the name parameter.

      +
      +
      interface

      The name of the physical interface on the jail server to bind the jail to. +Defaults to the first interface found in the output of ifconfig -l.

      +
      +
      devfs-ruleset

      The name of the devfs ruleset to associate with the jail. Defaults to "jailrules." This ruleset must be copied to the server via another type. -To use this option, devfs-enable must be "true."

      -
      jaildir
      -
      The location on the remote server to use for hosting jail filesystems. -Defaults to /usr/jail.
      +To use this option, devfs-enable must be "true."

      +
      +
      jaildir

      The location on the remote server to use for hosting jail filesystems. +Defaults to /usr/jail.

      +
      -

      16.81.5. BOOLEAN PARAMETERS

      -
      -
      stopped
      -
      Do not start the jail
      -
      devfs-disable
      -
      Whether to disallow devfs mounting within the jail
      -
      onboot
      -
      Whether to add the jail to rc.conf's jail_list variable.
      +

      16.81.5. BOOLEAN PARAMETERS

      +
      +
      stopped

      Do not start the jail

      +
      +
      devfs-disable

      Whether to disallow devfs mounting within the jail

      +
      +
      onboot

      Whether to add the jail to rc.conf's jail_list variable.

      +
      -

      16.81.6. CAVEATS

      +

      16.81.6. CAVEATS

      This type does not currently support modification of jail options. If, for example a jail needs to have its IP address or netmask changed, the jail must be removed then re-added with the correct IP address/netmask or the appropriate @@ -431,23 +422,23 @@ line (jail_<name>_ip="...") modified within rc.conf through some means.

      -

      16.81.7. MESSAGES

      -
      -
      start
      -
      The jail was started
      -
      stop
      -
      The jail was stopped
      -
      create:
      -
      The jail was created
      -
      delete
      -
      The jail was deleted
      -
      onboot
      -
      The jail was configured to start on boot
      +

      16.81.7. MESSAGES

      +
      +
      start

      The jail was started

      +
      +
      stop

      The jail was stopped

      +
      +
      create:

      The jail was created

      +
      +
      delete

      The jail was deleted

      +
      +
      onboot

      The jail was configured to start on boot

      +
      -

      16.81.8. EXAMPLES

      -
      # Create a jail called www
      +

      16.81.8. EXAMPLES

      +
      # Create a jail called www
       __jail_freebsd9 www --state present --ip "192.168.1.2" --jailbase /my/jail/base.tgz
       
       # Remove the jail called www
      @@ -472,15 +463,15 @@ __jail_freebsd9 lotsofoptions --state present --name testjail \
       
      -

      16.81.9. SEE ALSO

      +

      16.81.9. SEE ALSO

      jail(8)

      -

      16.81.10. AUTHORS

      +

      16.81.10. AUTHORS

      Jake Guffey <jake.guffey--@--eprotex.com>

      -

      16.81.11. COPYING

      +

      16.81.11. COPYING

      Copyright (C) 2012-2016 Jake Guffey. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__key_value.html b/src/extra/manual/beta/man7/cdist-type__key_value.html index 72770a21..39571c30 100644 --- a/src/extra/manual/beta/man7/cdist-type__key_value.html +++ b/src/extra/manual/beta/man7/cdist-type__key_value.html @@ -8,7 +8,7 @@ - 16.82. cdist-type__key_value(7) — cdist 6.5.6 documentation + 16.82. cdist-type__key_value(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -348,9 +339,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.82. cdist-type__key_value(7)
    • +
    • 16.82. cdist-type__key_value(7)
    • @@ -370,68 +361,68 @@
      -

      16.82. cdist-type__key_value(7)

      +

      16.82. cdist-type__key_value(7)

      -

      16.82.1. NAME

      +

      16.82.1. NAME

      cdist-type__key_value - Change property values in files

      -

      16.82.2. DESCRIPTION

      +

      16.82.2. DESCRIPTION

      This cdist type allows you to change values in a key value based config file.

      -

      16.82.3. REQUIRED PARAMETERS

      -
      -
      file
      -
      The file to operate on.
      -
      delimiter
      -
      The delimiter which separates the key from the value.
      +

      16.82.3. REQUIRED PARAMETERS

      +
      +
      file

      The file to operate on.

      +
      +
      delimiter

      The delimiter which separates the key from the value.

      +
      -

      16.82.4. OPTIONAL PARAMETERS

      -
      -
      state
      -
      present or absent, defaults to present. If present, sets the key to value, -if absent, removes the key from the file.
      -
      key
      -
      The key to change. Defaults to object_id.
      -
      value
      -
      The value for the key. Optional if state=absent, required otherwise.
      -
      comment
      -
      If supplied, the value will be inserted before the line with the key, +

      16.82.4. OPTIONAL PARAMETERS

      +
      +
      state

      present or absent, defaults to present. If present, sets the key to value, +if absent, removes the key from the file.

      +
      +
      key

      The key to change. Defaults to object_id.

      +
      +
      value

      The value for the key. Optional if state=absent, required otherwise.

      +
      +
      comment

      If supplied, the value will be inserted before the line with the key, but only if the key or value must be changed. You need to ensure yourself that the line is prefixed with the correct -comment sign. (for example # or ; or wathever ..)

      -
      onchange
      -
      The code to run if the key or value changes (i.e. is inserted, removed or replaced).
      +comment sign. (for example # or ; or wathever ..)

      +
      +
      onchange

      The code to run if the key or value changes (i.e. is inserted, removed or replaced).

      +
      -

      16.82.5. BOOLEAN PARAMETERS

      -
      -
      exact_delimiter
      -
      If supplied, treat additional whitespaces between key, delimiter and value -as wrong value.
      +

      16.82.5. BOOLEAN PARAMETERS

      +
      +
      exact_delimiter

      If supplied, treat additional whitespaces between key, delimiter and value +as wrong value.

      +
      -

      16.82.6. MESSAGES

      -
      -
      remove
      -
      Removed existing key and value
      -
      insert
      -
      Added key and value
      -
      change
      -
      Changed value of existing key
      -
      create
      -
      A new line was inserted in a new file
      +

      16.82.6. MESSAGES

      +
      +
      remove

      Removed existing key and value

      +
      +
      insert

      Added key and value

      +
      +
      change

      Changed value of existing key

      +
      +
      create

      A new line was inserted in a new file

      +
      -

      16.82.7. EXAMPLES

      -
      # Set the maximum system user id
      +

      16.82.7. EXAMPLES

      +
      # Set the maximum system user id
       __key_value SYS_UID_MAX --file /etc/login.defs --value 666 --delimiter ' '
       
       # Same with fancy id
      @@ -448,16 +439,16 @@ __key_value LEGACY_KEY --file /etc/somefile --state absent --delimiter 
       
      -

      16.82.8. MORE INFORMATION

      +

      16.82.8. MORE INFORMATION

      This type try to handle as many values as possible, so it doesn't use regexes. So you need to exactly specify the key and delimiter. Delimiter can be of any length.

      -

      16.82.9. AUTHORS

      +

      16.82.9. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.82.10. COPYING

      +

      16.82.10. COPYING

      Copyright (C) 2011 Steven Armstrong. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the diff --git a/src/extra/manual/beta/man7/cdist-type__keyboard.html b/src/extra/manual/beta/man7/cdist-type__keyboard.html index acafb24a..3faef217 100644 --- a/src/extra/manual/beta/man7/cdist-type__keyboard.html +++ b/src/extra/manual/beta/man7/cdist-type__keyboard.html @@ -8,7 +8,7 @@ - 16.83. cdist-type__keyboard(7) — cdist 6.5.6 documentation + 16.83. cdist-type__keyboard(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -344,9 +335,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.83. cdist-type__keyboard(7)
    • +
    • 16.83. cdist-type__keyboard(7)
    • @@ -366,35 +357,35 @@
      -

      16.83. cdist-type__keyboard(7)

      +

      16.83. cdist-type__keyboard(7)

      -

      16.83.1. NAME

      +

      16.83.1. NAME

      cdit-type__keyboard - Set keyboard layout

      -

      16.83.2. DESCRIPTION

      +

      16.83.2. DESCRIPTION

      This cdist type allows you to modify keyboard layout.

      -

      16.83.3. REQUIRED PARAMETERS

      -
      -
      type
      -
      Any valid type, for example "us"
      +

      16.83.3. REQUIRED PARAMETERS

      +
      +
      type

      Any valid type, for example "us"

      +
      -

      16.83.4. EXAMPLES

      -
      # Set keyboard type to "us"
      +

      16.83.4. EXAMPLES

      +
      # Set keyboard type to "us"
       __keyboard --type "us"
       
      -

      16.83.5. AUTHORS

      +

      16.83.5. AUTHORS

      Carlos Ortigoza <carlos.ortigoza--@--ungleich.ch>

      -

      16.83.6. COPYING

      +

      16.83.6. COPYING

      Copyright (C) 2016 Carlos Ortigoza. Free use of this software is granted under the terms of the GNU General Public License v3 or later (GPLv3+).

      diff --git a/src/extra/manual/beta/man7/cdist-type__letsencrypt_cert.html b/src/extra/manual/beta/man7/cdist-type__letsencrypt_cert.html index 0cf3deb2..fbde261e 100644 --- a/src/extra/manual/beta/man7/cdist-type__letsencrypt_cert.html +++ b/src/extra/manual/beta/man7/cdist-type__letsencrypt_cert.html @@ -8,7 +8,7 @@ - 16.84. cdist-type__letsencrypt_cert(7) — cdist 6.5.6 documentation + 16.84. cdist-type__letsencrypt_cert(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -348,9 +339,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.84. cdist-type__letsencrypt_cert(7)
    • +
    • 16.84. cdist-type__letsencrypt_cert(7)
    • @@ -370,75 +361,74 @@
      -

      16.84. cdist-type__letsencrypt_cert(7)

      +

      16.84. cdist-type__letsencrypt_cert(7)

      -

      16.84.1. NAME

      +

      16.84.1. NAME

      cdist-type__letsencrypt_cert - Get an SSL certificate from Let's Encrypt

      -

      16.84.2. DESCRIPTION

      +

      16.84.2. DESCRIPTION

      Automatically obtain a Let's Encrypt SSL certificate using Certbot.

      -

      16.84.3. REQUIRED PARAMETERS

      -
      -
      object id
      -
      A cert name. If domain parameter is not specified then it is used -as a domain to be included in the certificate.
      -
      admin-email
      -
      Where to send Let's Encrypt emails like "certificate needs renewal".
      +

      16.84.3. REQUIRED PARAMETERS

      +
      +
      object id

      A cert name. If domain parameter is not specified then it is used +as a domain to be included in the certificate.

      +
      +
      admin-email

      Where to send Let's Encrypt emails like "certificate needs renewal".

      +
      -

      16.84.4. OPTIONAL PARAMETERS

      -
      -
      state
      -

      'present' or 'absent', defaults to 'present' where:

      -
      -
      present
      -
      if the certificate does not exist, it will be obtained
      -
      absent
      -
      the certificate will be removed
      +

      16.84.4. OPTIONAL PARAMETERS

      +
      +
      state

      'present' or 'absent', defaults to 'present' where:

      +
      +
      present

      if the certificate does not exist, it will be obtained

      +
      +
      absent

      the certificate will be removed

      +
      -
      webroot
      -
      The path to your webroot, as set up in your webserver config. If this -parameter is not present, Certbot will be run in standalone mode.
      +
      webroot

      The path to your webroot, as set up in your webserver config. If this +parameter is not present, Certbot will be run in standalone mode.

      +
      -

      16.84.5. OPTIONAL MULTIPLE PARAMETERS

      -
      -
      renew-hook
      -
      Renew hook command directly passed to Certbot in cron job.
      -
      domain
      -
      Domains to be included in the certificate. When specified then object id -is not used as a domain.
      +

      16.84.5. OPTIONAL MULTIPLE PARAMETERS

      +
      +
      renew-hook

      Renew hook command directly passed to Certbot in cron job.

      +
      +
      domain

      Domains to be included in the certificate. When specified then object id +is not used as a domain.

      +
      -

      16.84.6. BOOLEAN PARAMETERS

      -
      -
      automatic-renewal
      -
      Install a cron job, which attempts to renew certificates daily.
      -
      staging
      -
      Obtain a test certificate from a staging server.
      +

      16.84.6. BOOLEAN PARAMETERS

      +
      +
      automatic-renewal

      Install a cron job, which attempts to renew certificates daily.

      +
      +
      staging

      Obtain a test certificate from a staging server.

      +
      -

      16.84.7. MESSAGES

      -
      -
      change
      -
      Certificate was changed.
      -
      create
      -
      Certificate was created.
      -
      remove
      -
      Certificate was removed.
      +

      16.84.7. MESSAGES

      +
      +
      change

      Certificate was changed.

      +
      +
      create

      Certificate was created.

      +
      +
      remove

      Certificate was removed.

      +
      -

      16.84.8. EXAMPLES

      -
      # use object id as domain
      +

      16.84.8. EXAMPLES

      +
      # use object id as domain
       __letsencrypt_cert example.com \
           --admin-email root@example.com \
           --automatic-renewal \
      @@ -446,7 +436,7 @@ __letsencrypt_cert example.com \
           --webroot /data/letsencrypt/root
       
      -
      # domain parameter is specified so object id is not used as domain
      +
      # domain parameter is specified so object id is not used as domain
       # and example.com needs to be included again with domain parameter
       __letsencrypt_cert example.com \
           --admin-email root@example.com \
      @@ -460,7 +450,7 @@ __letsencrypt_cert example.com \
       
      -

      16.84.9. AUTHORS

      +

      16.84.9. AUTHORS

      Kamila Součková <kamila--@--ksp.sk>
      @@ -469,7 +459,7 @@ __letsencrypt_cert example.com \
      -

      16.84.10. COPYING

      +

      16.84.10. COPYING

      Copyright (C) 2017-2018 Nico Schottelius, Kamila Součková, Darko Poljak and Ľubomír Kučera. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, diff --git a/src/extra/manual/beta/man7/cdist-type__line.html b/src/extra/manual/beta/man7/cdist-type__line.html index 3c47005e..1c5e5b3a 100644 --- a/src/extra/manual/beta/man7/cdist-type__line.html +++ b/src/extra/manual/beta/man7/cdist-type__line.html @@ -8,7 +8,7 @@ - 16.85. cdist-type__line(7) — cdist 6.5.6 documentation + 16.85. cdist-type__line(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@

      - 6.5.6 + 6.6.0
      @@ -348,9 +339,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.85. cdist-type__line(7)
    • +
    • 16.85. cdist-type__line(7)
    • @@ -370,65 +361,63 @@
      -

      16.85. cdist-type__line(7)

      +

      16.85. cdist-type__line(7)

      -

      16.85.1. NAME

      +

      16.85.1. NAME

      cdist-type__line - Manage lines in files

      -

      16.85.2. DESCRIPTION

      +

      16.85.2. DESCRIPTION

      This cdist type allows you to add lines and remove lines from files.

      -

      16.85.3. REQUIRED PARAMETERS

      +

      16.85.3. REQUIRED PARAMETERS

      None.

      -

      16.85.4. OPTIONAL PARAMETERS

      -
      -
      after
      -
      Insert the given line after this pattern.
      -
      before
      -
      Insert the given line before this pattern.
      -
      file
      -
      If supplied, use this as the destination file. -Otherwise the object_id is used.
      -
      line
      -

      Specifies the line which should be absent or present.

      -

      Must be present, if state is 'present'. +

      16.85.4. OPTIONAL PARAMETERS

      +
      +
      after

      Insert the given line after this pattern.

      +
      +
      before

      Insert the given line before this pattern.

      +
      +
      file

      If supplied, use this as the destination file. +Otherwise the object_id is used.

      +
      +
      line

      Specifies the line which should be absent or present.

      +

      Must be present, if state is 'present'. Ignored if regex is given and state is 'absent'.

      -
      regex
      -

      If state is 'present', search for this pattern and if it matches add +

      regex

      If state is 'present', search for this pattern and if it matches add the given line.

      If state is 'absent', ensure all lines matching the regular expression are absent.

      -

      The regular expression is interpreted by awk's match function.

      +

      The regular expression is interpreted by awk's match function.

      +
      +
      state

      'present' or 'absent', defaults to 'present'

      +
      +
      onchange

      The code to run if line is added, removed or updated.

      -
      state
      -
      'present' or 'absent', defaults to 'present'
      -
      onchange
      -
      The code to run if line is added, removed or updated.
      -

      16.85.5. BOOLEAN PARAMETERS

      +

      16.85.5. BOOLEAN PARAMETERS

      None.

      -

      16.85.6. MESSAGES

      -
      -
      added
      -
      The line was added.
      -
      updated
      -
      The line or its position was changed.
      -
      removed
      -
      The line was removed.
      +

      16.85.6. MESSAGES

      +
      +
      added

      The line was added.

      +
      +
      updated

      The line or its position was changed.

      +
      +
      removed

      The line was removed.

      +
      -

      16.85.7. EXAMPLES

      -
      # Manage a hosts entry for www.example.com.
      +

      16.85.7. EXAMPLES

      +
      # Manage a hosts entry for www.example.com.
       __line /etc/hosts \
           --line '127.0.0.2 www.example.com'
       
      @@ -458,15 +447,15 @@ __line password-auth-local:classify \
       
      -

      16.85.8. SEE ALSO

      +

      16.85.8. SEE ALSO

      cdist-type(7)

      -

      16.85.9. AUTHORS

      +

      16.85.9. AUTHORS

      Steven Armstrong <steven-cdist--@--armstrong.cc>

      -

      16.85.10. COPYING

      +

      16.85.10. COPYING

      Copyright (C) 2018 Steven Armstrong. Free use of this software is granted under the terms of the GNU General Public License version 3 (GPLv3).

      diff --git a/src/extra/manual/beta/man7/cdist-type__link.html b/src/extra/manual/beta/man7/cdist-type__link.html index db3be447..0d30a867 100644 --- a/src/extra/manual/beta/man7/cdist-type__link.html +++ b/src/extra/manual/beta/man7/cdist-type__link.html @@ -8,7 +8,7 @@ - 16.86. cdist-type__link(7) — cdist 6.5.6 documentation + 16.86. cdist-type__link(7) — cdist 6.6.0 documentation @@ -20,20 +20,11 @@ - - - - + + + + + @@ -72,7 +63,7 @@
      - 6.5.6 + 6.6.0
      @@ -346,9 +337,9 @@
    • Docs »
    • -
    • 16. cdist types »
    • +
    • 16. cdist types »
    • -
    • 16.86. cdist-type__link(7)
    • +
    • 16.86. cdist-type__link(7)
    • @@ -368,48 +359,48 @@