diff --git a/bin/build-helper b/bin/build-helper
index ed41e438..5dcc6989 100755
--- a/bin/build-helper
+++ b/bin/build-helper
@@ -370,7 +370,7 @@ eof
cat << eof
Manual steps post release:
- cdist-web
- - send generated mailinglist.tmp mail
+ - send mail body generated in mailinglist.tmp and inform Dmitry for deb
- twitter
eof
;;
@@ -463,7 +463,7 @@ eof
shellcheck-scripts)
# shellcheck disable=SC2086
- ${SHELLCHECKCMD} scripts/cdist-dump scripts/cdist-new-type > "${SHELLCHECKTMP}"
+ ${SHELLCHECKCMD} cdist/conf/libexec/cdist-dump cdist/conf/libexec/cdist-new-type > "${SHELLCHECKTMP}"
test ! -s "${SHELLCHECKTMP}" || { cat "${SHELLCHECKTMP}"; exit 1; }
;;
diff --git a/cdist/argparse.py b/cdist/argparse.py
index 611c484a..b1ee99da 100644
--- a/cdist/argparse.py
+++ b/cdist/argparse.py
@@ -6,7 +6,7 @@ import collections
import functools
import cdist.configuration
import cdist.preos
-import cdist.info
+import cdist.libexec as libexec
# set of beta sub-commands
@@ -437,36 +437,8 @@ def get_parsers():
' should be POSIX compatible shell.'))
parser['shell'].set_defaults(func=cdist.shell.Shell.commandline)
- # Info
- parser['info'] = parser['sub'].add_parser('info')
- parser['info'].add_argument(
- '-a', '--all', help='Display all info. This is the default.',
- action='store_true', default=False)
- parser['info'].add_argument(
- '-c', '--conf-dir',
- help='Add configuration directory (can be repeated).',
- action='append')
- parser['info'].add_argument(
- '-e', '--global-explorers',
- help='Display info for global explorers.', action='store_true',
- default=False)
- parser['info'].add_argument(
- '-F', '--fixed-string',
- help='Interpret pattern as a fixed string.', action='store_true',
- default=False)
- parser['info'].add_argument(
- '-f', '--full', help='Display full details.',
- action='store_true', default=False)
- parser['info'].add_argument(
- '-g', '--config-file',
- help='Use specified custom configuration file.',
- dest="config_file", required=False)
- parser['info'].add_argument(
- '-t', '--types', help='Display info for types.',
- action='store_true', default=False)
- parser['info'].add_argument(
- 'pattern', nargs='?', help='Glob pattern.')
- parser['info'].set_defaults(func=cdist.info.Info.commandline)
+ # Libexec
+ libexec.create_parsers(parser, parser['sub'])
for p in parser:
parser[p].epilog = EPILOG
diff --git a/scripts/cdist-dump b/cdist/conf/libexec/cdist-dump
similarity index 100%
rename from scripts/cdist-dump
rename to cdist/conf/libexec/cdist-dump
diff --git a/cdist/conf/libexec/cdist-info b/cdist/conf/libexec/cdist-info
new file mode 100755
index 00000000..19ec4cad
--- /dev/null
+++ b/cdist/conf/libexec/cdist-info
@@ -0,0 +1,399 @@
+#!/bin/sh
+
+VERSION="0.0.1"
+RELEASE=""
+
+set -u
+# set -x
+
+verbose=0
+myname=${0##*/}
+mydir=${0%/$myname}
+dist_conf=${mydir%/libexec}
+
+print_version()
+{
+ printf "%s %s %s\n" "${myname}" "${VERSION}" "${RELEASE}"
+}
+
+usage()
+{
+ cat << eof
+${myname}: [options]
+eof
+
+ print_version
+
+ cat << eof
+
+Display information for cdist types and explorers.
+
+Options
+ -C display only config types
+ -c CONF_DIR add configuration directory (can be repeated)
+ -D display only nondeprecated types
+ -d display only deprecated types
+ -E display only types without explorers
+ -e display only types with explorers
+ -G display global explorers (turns displaying types off,
+ unless -t is explicitly specified)
+ -g GLOB use GLOB as name pattern
+ -h display this help screen and exit
+ -i display only install types
+ -l display only types with gencode-local
+ -M display only types with man page
+ -m display only types with manifest
+ -P display only nonparallel types
+ -p display only parallel types
+ -R display type parameters
+ -r display only types with gencode-remote
+ -S display only nonsingleton types
+ -s display only singleton types
+ -t display types (by default, unless -G is specified)
+ -V display version and exit
+ -v increase verbosity (verbose output goes to stderr)
+ if verbosity is greater than 2 then 'set -x' is used
+ -x display type explorers
+
+Notes:
+
+By default, distribution and home dot cdist directories are used for
+configuration directories list.
+
+This helper tool does not parse cdist configuration files. Configuration
+directories should be specifed by command line options and/or CDIST_PATH
+environment variable.
+eof
+}
+
+exit_err()
+{
+ printf "%s\n" "$1"
+ exit 1
+}
+
+print_verbose()
+{
+ if [ "${verbose}" -ge "$1" ]
+ then
+ printf "%s\n" "$2" >&2
+ fi
+}
+
+print_parameters()
+{
+ param_title=$1
+ param_fname=$2
+
+ if test -f "${param_fname}"
+ then
+ printf " %s\n" "${param_title}"
+ sed "s/^\(.*\)$/ \1/" < "${param_fname}"
+ fi
+}
+
+type_name_matches()
+{
+ if test "$2" == "*"
+ then
+ return 0
+ else
+ case "$(basename "$1")" in
+ $2)
+ return 0
+ ;;
+ *)
+ return 1
+ ;;
+ esac
+ fi
+}
+
+# $1 - do check flag.
+# $2 - file path.
+# Return false only if check flag is 1 and file does not exist.
+type_file_exists()
+{
+ if test "$1" -eq "1"
+ then
+ test -f "$2"
+ else
+ return 0
+ fi
+}
+
+# $1 - do check flag.
+# $2 - file path.
+# Return false only if check flag is 1 and file does exist.
+type_file_not_exists()
+{
+ if test "$1" -eq "1"
+ then
+ test ! -f "$2"
+ else
+ return 0
+ fi
+}
+
+type_dir_empty()
+{
+ if test "$1" -eq "1"
+ then
+ if test ! -d "$2"
+ then
+ return 1
+ elif ! [ "$(ls -1 "${fname}/explorer")" ]
+ then
+ return 1
+ else
+ return 0
+ fi
+ else
+ return 0
+ fi
+}
+
+type_dir_not_empty()
+{
+ if test "$1" -eq "1"
+ then
+ if test -d "$2"
+ then
+ if [ "$(ls -1 "${fname}/explorer")" ]
+ then
+ return 1
+ fi
+ else
+ return 0
+ fi
+ else
+ return 0
+ fi
+}
+
+print_type_params()
+{
+ if test "$1" -eq "1"
+ then
+ print_parameters "required parameters:" "$2/parameter/required"
+ print_parameters "required multiple parameters:" "$2/parameter/required_multiple"
+ print_parameters "optional parameters:" "$2/parameter/optional"
+ print_parameters "optional multiple parameters:" "$2/parameter/optional_multiple"
+ print_parameters "boolean parameters:" "$2/parameter/boolean"
+ param_deprecated="$2/parameter/deprecated"
+ if test -d "${param_deprecated}"
+ then
+ printf " deprecated parameters:\n"
+ # shellcheck disable=SC2012
+ ls -1 "${param_deprecated}" | sed "s/^\(.*\)$/ \1/"
+ fi
+ fi
+}
+
+print_type_explorers()
+{
+ if test "$1" -eq "1"
+ then
+ find "$2" -path "*/explorer/*" -type f
+ fi
+}
+
+print_type()
+{
+ if test "$1" -eq "1"
+ then
+ printf "%s\n" "$2"
+ print_type_params "${display_type_params}" "$2"
+ print_type_explorers "${display_type_explorers}" "$2"
+ fi
+}
+
+print_global_explorers()
+{
+ find "$1" '(' -path "*/explorer/*" -a ! -path "*/type/*/explorer/*" -a ! -path "*/cache/*/explorer/*" ')' -type f -name "$2"
+}
+
+conf_dirs="${dist_conf}:${HOME}/.cdist"
+glob="*"
+manifest_only=0
+gencode_local_only=0
+gencode_remote_only=0
+install_only=0
+config_only=0
+parallel_only=0
+nonparallel_only=0
+singleton_only=0
+nonsingleton_only=0
+man_only=0
+explorers_only=0
+nonexplorers_only=0
+deprecated_only=0
+nondeprecated_only=0
+display_global_explorers=0
+display_types=1
+display_type_params=0
+display_type_explorers=0
+# parse options
+while [ "$#" -ge 1 ]
+do
+ case "$1" in
+ -C)
+ config_only=1
+ ;;
+ -c)
+ if [ "$#" -ge 2 ]
+ then
+ case "$2" in
+ -*)
+ exit_err "Missing configuration directory argument"
+ ;;
+ *)
+ conf_dirs="${conf_dirs}:$2"
+ shift
+ ;;
+ esac
+ else
+ exit_err "Missing configuration directory argument"
+ fi
+ ;;
+ -D)
+ nondeprecated_only=1
+ ;;
+ -d)
+ deprecated_only=1
+ ;;
+ -E)
+ nonexplorers_only=1
+ ;;
+ -e)
+ explorers_only=1
+ ;;
+ -G)
+ display_types=0
+ display_global_explorers=1
+ ;;
+ -g)
+ if [ "$#" -ge 2 ]
+ then
+ case "$2" in
+ -*)
+ exit_err "Missing glob argument"
+ ;;
+ *)
+ glob="$2"
+ shift
+ ;;
+ esac
+ else
+ exit_err "Missing glob argument"
+ fi
+ ;;
+ -h)
+ usage
+ exit 0
+ ;;
+ -i)
+ install_only=1
+ ;;
+ -l)
+ gencode_local_only=1
+ ;;
+ -M)
+ man_only=1
+ ;;
+ -m)
+ manifest_only=1
+ ;;
+ -P)
+ nonparallel_only=1
+ ;;
+ -p)
+ parallel_only=1
+ ;;
+ -R)
+ display_type_params=1
+ ;;
+ -r)
+ gencode_remote_only=1
+ ;;
+ -S)
+ nonsingleton_only=1
+ ;;
+ -s)
+ singleton_only=1
+ ;;
+ -t)
+ display_types=1
+ ;;
+ -V)
+ print_version
+ exit 0
+ ;;
+ -v)
+ verbose=$((verbose + 1))
+ ;;
+ -x)
+ display_type_explorers=1
+ ;;
+ *)
+ exit_err "Unknown argument $1"
+ ;;
+ esac
+ shift
+done
+
+if test "${verbose}" -gt "2"
+then
+ set -x
+fi
+
+if test "${CDIST_PATH:-}"
+then
+ conf_dirs="${conf_dirs}:${CDIST_PATH}"
+fi
+
+print_verbose 2 "conf_dirs=${conf_dirs}"
+
+OLD_IFS="${IFS}"
+IFS=':'
+for x in ${conf_dirs}
+do
+ print_verbose 1 "Processing conf dir '${x}'"
+
+ if test "${display_global_explorers}" -eq "1"
+ then
+ print_verbose 1 "Printing global explorers"
+ print_global_explorers "${x}" "${glob}"
+ fi
+
+ if test "${display_types}" -eq "1"
+ then
+ print_verbose 1 "Printing types"
+ find "${x}" -path "*/type/*" -type d -prune | \
+ while read -r fname
+ do
+ print_verbose 2 "Printing type '${fname}'"
+
+ display_type=1
+
+ type_name_matches "${fname}" "${glob}" || display_type=0
+ type_file_exists "${manifest_only}" "${fname}/manifest" || display_type=0
+ type_file_exists "${gencode_local_only}" "${fname}/gencode-local" || display_type=0
+ type_file_exists "${gencode_remote_only}" "${fname}/gencode-remote" || display_type=0
+ type_file_not_exists "${config_only}" "${fname}/install" || display_type=0
+ type_file_exists "${install_only}" "${fname}/install" || display_type=0
+ type_file_not_exists "${parallel_only}" "${fname}/nonparallel" || display_type=0
+ type_file_exists "${nonparallel_only}" "${fname}/nonparallel" || display_type=0
+ type_file_exists "${singleton_only}" "${fname}/singleton" || display_type=0
+ type_file_not_exists "${nonsingleton_only}" "${fname}/singleton" || display_type=0
+ type_file_exists "${man_only}" "${fname}/man.rst" || display_type=0
+ type_file_exists "${deprecated_only}" "${fname}/deprecated" || display_type=0
+ type_file_not_exists "${nondeprecated_only}" "${fname}/deprecated" || display_type=0
+ type_dir_empty "${explorers_only}" "${fname}/explorer" || display_type=0
+ type_dir_not_empty "${nonexplorers_only}" "${fname}/explorer" || display_type=0
+
+ print_type "${display_type}" "${fname}"
+ done
+ fi
+done
+IFS="${OLD_IFS}"
diff --git a/scripts/cdist-new-type b/cdist/conf/libexec/cdist-new-type
similarity index 100%
rename from scripts/cdist-new-type
rename to cdist/conf/libexec/cdist-new-type
diff --git a/cdist/conf/type/__acl/gencode-remote b/cdist/conf/type/__acl/gencode-remote
index f4f0d1e2..6dab4d09 100755
--- a/cdist/conf/type/__acl/gencode-remote
+++ b/cdist/conf/type/__acl/gencode-remote
@@ -28,10 +28,7 @@ acl_path="/$__object_id"
acl_is="$( cat "$__object/explorer/acl_is" )"
-if [ -f "$__object/parameter/entry" ]
-then
- acl_should="$( cat "$__object/parameter/entry" )"
-elif [ -f "$__object/parameter/acl" ]
+if [ -f "$__object/parameter/acl" ]
then
acl_should="$( cat "$__object/parameter/acl" )"
elif
diff --git a/cdist/conf/type/__acl/man.rst b/cdist/conf/type/__acl/man.rst
index c3493e49..85e946ce 100644
--- a/cdist/conf/type/__acl/man.rst
+++ b/cdist/conf/type/__acl/man.rst
@@ -15,7 +15,7 @@ See ``setfacl`` and ``acl`` manpages for more details.
REQUIRED MULTIPLE PARAMETERS
----------------------------
-entry
+acl
Set ACL entry following ``getfacl`` output syntax.
@@ -36,8 +36,8 @@ remove
DEPRECATED PARAMETERS
---------------------
-Parameters ``acl``, ``user``, ``group``, ``mask`` and ``other`` are deprecated and they
-will be removed in future versions. Please use ``entry`` parameter instead.
+Parameters ``user``, ``group``, ``mask`` and ``other`` are deprecated and they
+will be removed in future versions. Please use ``acl`` parameter instead.
EXAMPLES
@@ -49,27 +49,27 @@ EXAMPLES
--default \
--recursive \
--remove \
- --entry user:alice:rwx \
- --entry user:bob:r-x \
- --entry group:project-group:rwx \
- --entry group:some-other-group:r-x \
- --entry mask::r-x \
- --entry other::r-x
+ --acl user:alice:rwx \
+ --acl user:bob:r-x \
+ --acl group:project-group:rwx \
+ --acl group:some-other-group:r-x \
+ --acl mask::r-x \
+ --acl other::r-x
# give Alice read-only access to subdir,
# but don't allow her to see parent content.
__acl /srv/project2 \
--remove \
- --entry default:group:secret-project:rwx \
- --entry group:secret-project:rwx \
- --entry user:alice:--x
+ --acl default:group:secret-project:rwx \
+ --acl group:secret-project:rwx \
+ --acl user:alice:--x
__acl /srv/project2/subdir \
--default \
--remove \
- --entry group:secret-project:rwx \
- --entry user:alice:r-x
+ --acl group:secret-project:rwx \
+ --acl user:alice:r-x
AUTHORS
diff --git a/cdist/conf/type/__acl/parameter/deprecated/acl b/cdist/conf/type/__acl/parameter/deprecated/acl
deleted file mode 100644
index 94e14159..00000000
--- a/cdist/conf/type/__acl/parameter/deprecated/acl
+++ /dev/null
@@ -1 +0,0 @@
-see manual for details
diff --git a/cdist/conf/type/__acl/parameter/optional_multiple b/cdist/conf/type/__acl/parameter/optional_multiple
index c615d507..95c25d55 100644
--- a/cdist/conf/type/__acl/parameter/optional_multiple
+++ b/cdist/conf/type/__acl/parameter/optional_multiple
@@ -1,4 +1,3 @@
-entry
acl
user
group
diff --git a/cdist/conf/type/__consul_agent/manifest b/cdist/conf/type/__consul_agent/manifest
index ee682d72..a88d26ed 100755
--- a/cdist/conf/type/__consul_agent/manifest
+++ b/cdist/conf/type/__consul_agent/manifest
@@ -181,7 +181,7 @@ init_upstart()
# Install init script to start on boot
case "$os" in
- devuan)
+ alpine|devuan)
init_sysvinit debian
;;
centos|redhat)
diff --git a/cdist/conf/type/__install_chroot_umount/manifest b/cdist/conf/type/__install_chroot_umount/manifest
deleted file mode 120000
index f17af67a..00000000
--- a/cdist/conf/type/__install_chroot_umount/manifest
+++ /dev/null
@@ -1 +0,0 @@
-../__chroot_umount/manifest
\ No newline at end of file
diff --git a/cdist/conf/type/__mysql_database/explorer/state b/cdist/conf/type/__mysql_database/explorer/state
deleted file mode 100755
index 79858695..00000000
--- a/cdist/conf/type/__mysql_database/explorer/state
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh -e
-#
-# 2020 Ander Punnar (ander-at-kvlt-dot-ee)
-#
-# This file is part of cdist.
-#
-# cdist is free software: 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 later version.
-#
-# cdist is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with cdist. If not, see .
-#
-
-if [ -f "$__object/parameter/name" ]
-then
- name="$( cat "$__object/parameter/name" )"
-else
- name="$__object_id"
-fi
-
-if [ -n "$( mysql -B -N -e "show databases like '$name'" )" ]
-then
- echo 'present'
-else
- echo 'absent'
-fi
diff --git a/cdist/conf/type/__mysql_database/gencode-remote b/cdist/conf/type/__mysql_database/gencode-remote
index 1bdb2b11..23e51b05 100755
--- a/cdist/conf/type/__mysql_database/gencode-remote
+++ b/cdist/conf/type/__mysql_database/gencode-remote
@@ -1,6 +1,6 @@
#!/bin/sh -e
#
-# 2020 Ander Punnar (ander-at-kvlt-dot-ee)
+# 2012 Benedikt Koeppel (code@benediktkoeppel.ch)
#
# This file is part of cdist.
#
@@ -17,30 +17,38 @@
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see .
#
+#
-state_is="$( cat "$__object/explorer/state" )"
-
-state_should="$( cat "$__object/parameter/state" )"
-
-if [ "$state_is" = "$state_should" ]
-then
- exit 0
+# if --database was specified
+if [ -f "$__object/parameter/name" ]; then
+ database="$(cat "$__object/parameter/name")"
+else # otherwise use the object id as database name
+ database="$__object_id"
fi
-if [ -f "$__object/parameter/name" ]
-then
- name="$( cat "$__object/parameter/name" )"
-else
- name="$__object_id"
-fi
+cat <<-EOFF
+mysql -u root <<-EOF
+ CREATE DATABASE IF NOT EXISTS $database
+EOF
+EOFF
-case "$state_should" in
- present)
- echo "mysql -e 'create database \`$name\`'"
- echo "create database $name" >> "$__messages_out"
- ;;
- absent)
- echo "mysql -e 'drop database \`$name\`'"
- echo "drop database $name" >> "$__messages_out"
- ;;
-esac
+# if --user was specified
+if [ -f "$__object/parameter/user" ]; then
+ user="$(cat "$__object/parameter/user")"
+
+ # if --password was specified
+ if [ -f "$__object/parameter/password" ]; then
+ password="$(cat "$__object/parameter/password")"
+ cat <<-EOFF
+ mysql -u root <<-EOF
+ GRANT ALL PRIVILEGES ON $database.* to '$user'@'localhost' IDENTIFIED BY '$password';
+EOF
+EOFF
+ else
+ cat <<-EOFF
+ mysql -u root <<-EOF
+ GRANT ALL PRIVILEGES ON $database.* to '$user'@'localhost';
+EOF
+EOFF
+ fi
+fi
diff --git a/cdist/conf/type/__mysql_database/man.rst b/cdist/conf/type/__mysql_database/man.rst
index b3b56b5f..1e245a08 100644
--- a/cdist/conf/type/__mysql_database/man.rst
+++ b/cdist/conf/type/__mysql_database/man.rst
@@ -8,24 +8,24 @@ cdist-type__mysql_database - Manage a MySQL database
DESCRIPTION
-----------
+This cdist type allows you to install a MySQL database.
-Create MySQL database and optionally user with all privileges.
+REQUIRED PARAMETERS
+-------------------
+None.
OPTIONAL PARAMETERS
-------------------
name
- Name of database. Defaults to object id.
+ The name of the database to install
+ defaults to the object id
user
- Create user and give all privileges to database.
+ A user that should have access to the database
password
- Password for user.
-
-state
- Defaults to present.
- If absent and user is also set, both will be removed (with privileges).
+ The password for the user who manages the database
EXAMPLES
@@ -33,23 +33,17 @@ EXAMPLES
.. code-block:: sh
- # just create database
- __mysql_database foo
-
- # create database with respective user with all privileges to database
- __mysql_database bar \
- --user name \
- --password secret
+ __mysql_database "cdist" --name "cdist" --user "myuser" --password "mypwd"
AUTHORS
-------
-Ander Punnar
+Benedikt Koeppel
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
-later version.
+Copyright \(C) 2012 Benedikt Koeppel. 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 later version.
diff --git a/cdist/conf/type/__mysql_database/manifest b/cdist/conf/type/__mysql_database/manifest
deleted file mode 100755
index a3c9ed5d..00000000
--- a/cdist/conf/type/__mysql_database/manifest
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh -e
-#
-# 2020 Ander Punnar (ander-at-kvlt-dot-ee)
-#
-# This file is part of cdist.
-#
-# cdist is free software: 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 later version.
-#
-# cdist is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with cdist. If not, see .
-#
-
-if [ -f "$__object/parameter/user" ]
-then
- user="$( cat "$__object/parameter/user" )"
-fi
-
-if [ -f "$__object/parameter/password" ]
-then
- password="$( cat "$__object/parameter/password" )"
-fi
-
-if [ -n "$user" ] && [ -n "$password" ]
-then
- if [ -f "$__object/parameter/name" ]
- then
- database="$( cat "$__object/parameter/name" )"
- else
- database="$__object_id"
- fi
-
- state_should="$( cat "$__object/parameter/state" )"
-
- __mysql_user "$user" \
- --password "$password" \
- --state "$state_should"
-
- # removing user should remove all user's privileges
- require="__mysql_user/$user" \
- __mysql_privileges "$database/$user" \
- --database "$database" \
- --user "$user" \
- --state "$state_should"
-fi
diff --git a/cdist/conf/type/__mysql_database/parameter/default/state b/cdist/conf/type/__mysql_database/parameter/default/state
deleted file mode 100644
index e7f6134f..00000000
--- a/cdist/conf/type/__mysql_database/parameter/default/state
+++ /dev/null
@@ -1 +0,0 @@
-present
diff --git a/cdist/conf/type/__mysql_database/parameter/optional b/cdist/conf/type/__mysql_database/parameter/optional
index 6c0b1e85..756afee7 100644
--- a/cdist/conf/type/__mysql_database/parameter/optional
+++ b/cdist/conf/type/__mysql_database/parameter/optional
@@ -1,4 +1,3 @@
name
user
password
-state
diff --git a/cdist/conf/type/__mysql_privileges/explorer/state b/cdist/conf/type/__mysql_privileges/explorer/state
deleted file mode 100755
index 0cfbaacd..00000000
--- a/cdist/conf/type/__mysql_privileges/explorer/state
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh -e
-#
-# 2020 Ander Punnar (ander-at-kvlt-dot-ee)
-#
-# This file is part of cdist.
-#
-# cdist is free software: 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 later version.
-#
-# cdist is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with cdist. If not, see .
-#
-
-privileges="$( cat "$__object/parameter/privileges" )"
-
-database="$( cat "$__object/parameter/database" )"
-
-table="$( cat "$__object/parameter/table" )"
-
-user="$( cat "$__object/parameter/user" )"
-
-host="$( cat "$__object/parameter/host" )"
-
-check_privileges="$(
- mysql -B -N -e "show grants for '$user'@'$host'" \
- | grep -Ei "^grant $privileges on .$database.\..$table. to " || true )"
-
-if [ -n "$check_privileges" ]
-then
- echo 'present'
-else
- echo 'absent'
-fi
diff --git a/cdist/conf/type/__mysql_privileges/gencode-remote b/cdist/conf/type/__mysql_privileges/gencode-remote
deleted file mode 100755
index bcd362e6..00000000
--- a/cdist/conf/type/__mysql_privileges/gencode-remote
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh -e
-#
-# 2020 Ander Punnar (ander-at-kvlt-dot-ee)
-#
-# This file is part of cdist.
-#
-# cdist is free software: 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 later version.
-#
-# cdist is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with cdist. If not, see .
-#
-
-state_is="$( cat "$__object/explorer/state" )"
-
-state_should="$( cat "$__object/parameter/state" )"
-
-if [ "$state_is" = "$state_should" ]
-then
- exit 0
-fi
-
-privileges="$( cat "$__object/parameter/privileges" )"
-
-database="$( cat "$__object/parameter/database" )"
-
-table="$( cat "$__object/parameter/table" )"
-
-user="$( cat "$__object/parameter/user" )"
-
-host="$( cat "$__object/parameter/host" )"
-
-case "$state_should" in
- present)
- echo "mysql -e 'grant $privileges on \`$database\`.\`$table\` to \`$user\`@\`$host\`'"
- echo "grant $privileges on $database.$table to $user@$host" >> "$__messages_out"
- ;;
- absent)
- echo "mysql -e 'revoke $privileges on \`$database\`.\`$table\` from \`$user\`@\`$host\`'"
- echo "revoke $privileges on $database.$table from $user@$host" >> "$__messages_out"
- ;;
-esac
diff --git a/cdist/conf/type/__mysql_privileges/man.rst b/cdist/conf/type/__mysql_privileges/man.rst
deleted file mode 100644
index 8208d7d4..00000000
--- a/cdist/conf/type/__mysql_privileges/man.rst
+++ /dev/null
@@ -1,57 +0,0 @@
-cdist-type__mysql_privileges(7)
-===============================
-
-NAME
-----
-cdist-type__mysql_privileges - Manage MySQL privileges
-
-
-DESCRIPTION
------------
-
-Grant and revoke privileges of MySQL user.
-
-
-REQUIRED PARAMETERS
--------------------
-database
- Name of database.
-
-User
- Name of user.
-
-
-OPTIONAL PARAMETERS
--------------------
-privileges
- Defaults to "all".
-
-table
- Defaults to "*".
-
-host
- Defaults to localhost.
-
-state
- "present" grants and "absent" revokes. Defaults to present.
-
-
-EXAMPLES
---------
-
-.. code-block:: sh
-
- __mysql_privileges user-to-db --database db --user user
-
-
-AUTHORS
--------
-Ander Punnar
-
-
-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
-later version.
diff --git a/cdist/conf/type/__mysql_privileges/parameter/default/host b/cdist/conf/type/__mysql_privileges/parameter/default/host
deleted file mode 100644
index 2fbb50c4..00000000
--- a/cdist/conf/type/__mysql_privileges/parameter/default/host
+++ /dev/null
@@ -1 +0,0 @@
-localhost
diff --git a/cdist/conf/type/__mysql_privileges/parameter/default/privileges b/cdist/conf/type/__mysql_privileges/parameter/default/privileges
deleted file mode 100644
index 5472efad..00000000
--- a/cdist/conf/type/__mysql_privileges/parameter/default/privileges
+++ /dev/null
@@ -1 +0,0 @@
-all privileges
diff --git a/cdist/conf/type/__mysql_privileges/parameter/default/state b/cdist/conf/type/__mysql_privileges/parameter/default/state
deleted file mode 100644
index e7f6134f..00000000
--- a/cdist/conf/type/__mysql_privileges/parameter/default/state
+++ /dev/null
@@ -1 +0,0 @@
-present
diff --git a/cdist/conf/type/__mysql_privileges/parameter/default/table b/cdist/conf/type/__mysql_privileges/parameter/default/table
deleted file mode 100644
index 72e8ffc0..00000000
--- a/cdist/conf/type/__mysql_privileges/parameter/default/table
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/cdist/conf/type/__mysql_privileges/parameter/optional b/cdist/conf/type/__mysql_privileges/parameter/optional
deleted file mode 100644
index d4ed5bc5..00000000
--- a/cdist/conf/type/__mysql_privileges/parameter/optional
+++ /dev/null
@@ -1,4 +0,0 @@
-privileges
-table
-host
-state
diff --git a/cdist/conf/type/__mysql_privileges/parameter/required b/cdist/conf/type/__mysql_privileges/parameter/required
deleted file mode 100644
index 152b4a1e..00000000
--- a/cdist/conf/type/__mysql_privileges/parameter/required
+++ /dev/null
@@ -1,2 +0,0 @@
-database
-user
diff --git a/cdist/conf/type/__mysql_user/explorer/state b/cdist/conf/type/__mysql_user/explorer/state
deleted file mode 100755
index 6817ee9d..00000000
--- a/cdist/conf/type/__mysql_user/explorer/state
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/sh -e
-#
-# 2020 Ander Punnar (ander-at-kvlt-dot-ee)
-#
-# This file is part of cdist.
-#
-# cdist is free software: 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 later version.
-#
-# cdist is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with cdist. If not, see .
-#
-
-if [ -f "$__object/parameter/name" ]
-then
- name="$( cat "$__object/parameter/name" )"
-else
- name="$__object_id"
-fi
-
-if [ -f "$__object/parameter/password" ]
-then
- password="$( cat "$__object/parameter/password" )"
-else
- password=''
-fi
-
-host="$( cat "$__object/parameter/host" )"
-
-check_user="$( mysql -B -N -e "select user from mysql.user where user = '$name' and host = '$host'" )"
-
-if [ -n "$check_user" ]
-then
- if [ -n "$password" ]
- then
- check_password="$( mysql -B -N -e "select user from mysql.user where user = '$name' and host = '$host' and password = password( '$password' )" )"
- fi
-
- if [ -n "$password" ] && [ -z "$check_password" ]
- then
- echo 'change-password'
- else
- echo 'present'
- fi
-else
- echo 'absent'
-fi
diff --git a/cdist/conf/type/__mysql_user/gencode-remote b/cdist/conf/type/__mysql_user/gencode-remote
deleted file mode 100755
index 5f13bc87..00000000
--- a/cdist/conf/type/__mysql_user/gencode-remote
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/sh -e
-#
-# 2020 Ander Punnar (ander-at-kvlt-dot-ee)
-#
-# This file is part of cdist.
-#
-# cdist is free software: 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 later version.
-#
-# cdist is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with cdist. If not, see .
-#
-
-state_is="$( cat "$__object/explorer/state" )"
-
-state_should="$( cat "$__object/parameter/state" )"
-
-if [ "$state_is" = "$state_should" ]
-then
- exit 0
-fi
-
-if [ -f "$__object/parameter/name" ]
-then
- name="$( cat "$__object/parameter/name" )"
-else
- name="$__object_id"
-fi
-
-host="$( cat "$__object/parameter/host" )"
-
-if [ -f "$__object/parameter/password" ]
-then
- password="$( cat "$__object/parameter/password" )"
-else
- if [ "$state_should" = 'present' ]
- then
- echo '--password needed' >&2
- exit 1
- else
- password=''
- fi
-fi
-
-if [ "$state_is" = 'absent' ] && [ "$state_should" = 'present' ]
-then
- echo "mysql -e 'create user \`$name\`@\`$host\` identified by \"$password\"'"
- echo "create user $name@$host" >> "$__messages_out"
-
-elif [ "$state_is" != 'absent' ] && [ "$state_should" = 'absent' ]
-then
- echo "mysql -e 'drop user \`$name\`@\`$host\`'"
- echo "drop user $name@$host" >> "$__messages_out"
-
-elif [ "$state_is" = 'change-password' ]
-then
- # this only works with MySQL 5.7.6 and later or MariaDB 10.1.20 and later
- echo "mysql -e 'alter user \`$name\`@\`$host\` identified by \"$password\"'"
- echo "mysql -e 'flush privileges'"
- echo "change password $name@$host" >> "$__messages_out"
-fi
diff --git a/cdist/conf/type/__mysql_user/man.rst b/cdist/conf/type/__mysql_user/man.rst
deleted file mode 100644
index c2b222d5..00000000
--- a/cdist/conf/type/__mysql_user/man.rst
+++ /dev/null
@@ -1,48 +0,0 @@
-cdist-type__mysql_user(7)
-=========================
-
-NAME
-----
-cdist-type__mysql_user - Manage a MySQL user
-
-
-DESCRIPTION
------------
-
-Create MySQL user or change password for the user.
-
-
-OPTIONAL PARAMETERS
--------------------
-name
- Name of user. Defaults to object id.
-
-host
- Host of user. Defaults to localhost.
-
-password
- Password of user.
-
-state
- Defaults to present.
-
-
-EXAMPLES
---------
-
-.. code-block:: sh
-
- __mysql_user user --password secret
-
-
-AUTHORS
--------
-Ander Punnar
-
-
-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
-later version.
diff --git a/cdist/conf/type/__mysql_user/parameter/default/host b/cdist/conf/type/__mysql_user/parameter/default/host
deleted file mode 100644
index 2fbb50c4..00000000
--- a/cdist/conf/type/__mysql_user/parameter/default/host
+++ /dev/null
@@ -1 +0,0 @@
-localhost
diff --git a/cdist/conf/type/__mysql_user/parameter/default/state b/cdist/conf/type/__mysql_user/parameter/default/state
deleted file mode 100644
index e7f6134f..00000000
--- a/cdist/conf/type/__mysql_user/parameter/default/state
+++ /dev/null
@@ -1 +0,0 @@
-present
diff --git a/cdist/conf/type/__mysql_user/parameter/optional b/cdist/conf/type/__mysql_user/parameter/optional
deleted file mode 100644
index a286266c..00000000
--- a/cdist/conf/type/__mysql_user/parameter/optional
+++ /dev/null
@@ -1,4 +0,0 @@
-name
-host
-password
-state
diff --git a/cdist/conf/type/__postgres_database/gencode-remote b/cdist/conf/type/__postgres_database/gencode-remote
index 47e6b97c..61cfa50d 100755
--- a/cdist/conf/type/__postgres_database/gencode-remote
+++ b/cdist/conf/type/__postgres_database/gencode-remote
@@ -41,16 +41,12 @@ if [ "$state_should" != "$state_is" ]; then
present)
owner=""
if [ -f "$__object/parameter/owner" ]; then
- owner="-O \"$(cat "$__object/parameter/owner")\""
+ owner="-O '$(cat "$__object/parameter/owner")'"
fi
- cat << EOF
-su - '$postgres_user' -c "createdb $owner \"$name\""
-EOF
+ echo "su - '$postgres_user' -c \"createdb $owner '$name'\""
;;
absent)
- cat << EOF
-su - '$postgres_user' -c "dropdb \"$name\""
-EOF
+ echo "su - '$postgres_user' -c \"dropdb '$name'\""
;;
esac
fi
diff --git a/cdist/conf/type/__postgres_role/gencode-remote b/cdist/conf/type/__postgres_role/gencode-remote
index 977832c9..fd56e85d 100755
--- a/cdist/conf/type/__postgres_role/gencode-remote
+++ b/cdist/conf/type/__postgres_role/gencode-remote
@@ -53,13 +53,11 @@ case "$state_should" in
done
[ -n "$password" ] && password="PASSWORD '$password'"
- cat << EOF
-su - '$postgres_user' -c "psql postgres -wc 'CREATE ROLE \"$name\" WITH $password $booleans;'"
-EOF
+
+ cmd="CREATE ROLE $name WITH $password $booleans"
+ echo "su - '$postgres_user' -c \"psql postgres -wc \\\"$cmd\\\"\""
;;
absent)
- cat << EOF
-su - '$postgres_user' -c "dropuser \"$name\""
-EOF
+ echo "su - '$postgres_user' -c \"dropuser \\\"$name\\\"\""
;;
esac
diff --git a/cdist/exec/local.py b/cdist/exec/local.py
index ad6c6e36..f83c85df 100644
--- a/cdist/exec/local.py
+++ b/cdist/exec/local.py
@@ -69,6 +69,7 @@ class Local(object):
self.exec_path = exec_path
self.custom_initial_manifest = initial_manifest
+ self._add_conf_dirs = add_conf_dirs
self.cache_path_pattern = cache_path_pattern
self.quiet_mode = quiet_mode
if configuration:
@@ -83,7 +84,16 @@ class Local(object):
self._init_cache_dir(None)
self._init_paths()
self._init_object_marker()
- self._init_conf_dirs(add_conf_dirs)
+ self._init_conf_dirs()
+
+ @property
+ def dist_conf_dir(self):
+ return os.path.abspath(os.path.join(os.path.dirname(cdist.__file__),
+ "conf"))
+
+ @property
+ def home_dir(self):
+ return cdist.home_dir()
def _init_log(self):
self.log = logging.getLogger(self.target_host[0])
@@ -130,9 +140,28 @@ class Local(object):
# Does not need to be secure - just randomly different from .cdist
self.object_marker_name = tempfile.mktemp(prefix='.cdist-', dir='')
- def _init_conf_dirs(self, add_conf_dirs):
- self.conf_dirs = util.resolve_conf_dirs(
- self.configuration, add_conf_dirs=add_conf_dirs)
+ def _init_conf_dirs(self):
+ self.conf_dirs = []
+
+ self.conf_dirs.append(self.dist_conf_dir)
+
+ # Is the default place for user created explorer, type and manifest
+ if self.home_dir:
+ self.conf_dirs.append(self.home_dir)
+
+ # Add directories defined in the CDIST_PATH environment variable
+ # if 'CDIST_PATH' in os.environ:
+ # cdist_path_dirs = re.split(r'(?.
-#
-#
-
-import cdist
-import cdist.configuration
-import cdist.core
-import cdist.exec.util as util
-import os
-import glob
-import fnmatch
-
-
-class Info(object):
-
- def __init__(self, conf_dirs, args):
- self.conf_dirs = conf_dirs
- self.all = args.all
- self.display_global_explorers = args.global_explorers
- self.display_types = args.types
- if not self.display_global_explorers and not self.display_types:
- self.all = True
- self.fixed_string = args.fixed_string
- self._setup_glob_pattern(args.pattern)
- self.full = args.full
-
- def _setup_glob_pattern(self, pattern):
- if pattern is None:
- self.glob_pattern = '*'
- elif ('?' in pattern or '*' in pattern or '[' in pattern or
- self.fixed_string):
- self.glob_pattern = pattern
- else:
- self.glob_pattern = '*' + pattern + '*'
-
- @classmethod
- def commandline(cls, args):
- conf_dirs = util.resolve_conf_dirs_from_config_and_args(args)
- c = cls(conf_dirs, args)
- c.run()
-
- def _get_global_explorers(self, conf_path):
- rv = []
- global_explorer_path = os.path.join(conf_path, "explorer",
- self.glob_pattern)
- if self.fixed_string:
- if os.path.exists(global_explorer_path):
- rv.append(global_explorer_path)
- else:
- for explorer in glob.glob(global_explorer_path):
- rv.append(explorer)
- return rv
-
- def _should_display_type(self, dir_entry):
- if not dir_entry.is_dir():
- return False
- if self.glob_pattern is None:
- return True
- if self.fixed_string:
- return dir_entry.name == self.glob_pattern
- else:
- return fnmatch.fnmatch(dir_entry.name, self.glob_pattern)
-
- def _get_types(self, conf_path):
- rv = []
- types_path = os.path.join(conf_path, "type")
- if not os.path.exists(types_path):
- return rv
- with os.scandir(types_path) as it:
- for entry in it:
- if self._should_display_type(entry):
- rv.append(entry.path)
- return rv
-
- def _display_details(self, title, details, default_values=None,
- deprecated=None):
- if not details:
- return
- if isinstance(details, bool):
- print("\t{}: {}".format(title, 'yes' if details else 'no'))
- elif isinstance(details, str):
- print("\t{}: {}".format(title, details))
- elif isinstance(details, list):
- dv = dict(default_values) if default_values else {}
- dp = dict(deprecated) if deprecated else {}
-
- print("\t{}:".format(title))
- for x in sorted(details):
- print("\t\t{}".format(x), end='')
- has_default = x in dv
- is_deprecated = x in dp
- need_comma = False
- if has_default or is_deprecated:
- print(" (", end='')
- if has_default:
- print("default: {}".format(dv[x]), end='')
- need_comma = True
- if is_deprecated:
- print("{}deprecated".format(', ' if need_comma else ''),
- end='')
- if has_default or is_deprecated:
- print(")", end='')
- print()
-
- def _display_type_parameters(self, cdist_type):
- self._display_details("required parameters",
- cdist_type.required_parameters,
- default_values=cdist_type.parameter_defaults,
- deprecated=cdist_type.deprecated_parameters)
- self._display_details("required multiple parameters",
- cdist_type.required_multiple_parameters,
- default_values=cdist_type.parameter_defaults,
- deprecated=cdist_type.deprecated_parameters)
- self._display_details("optional parameters",
- cdist_type.optional_parameters,
- default_values=cdist_type.parameter_defaults,
- deprecated=cdist_type.deprecated_parameters)
- self._display_details("optional multiple parameters",
- cdist_type.optional_multiple_parameters,
- default_values=cdist_type.parameter_defaults,
- deprecated=cdist_type.deprecated_parameters)
- self._display_details("boolean parameters",
- cdist_type.boolean_parameters,
- default_values=cdist_type.parameter_defaults,
- deprecated=cdist_type.deprecated_parameters)
-
- def _display_type_characteristics(self, cdist_type):
- characteristics = []
- if cdist_type.is_install:
- characteristics.append('install')
- else:
- characteristics.append('config')
- if cdist_type.is_singleton:
- characteristics.append('singleton')
- if cdist_type.is_nonparallel:
- characteristics.append('nonparallel')
- else:
- characteristics.append('parallel')
- if cdist_type.deprecated is not None:
- characteristics.append('deprecated')
- print("\t{}".format(', '.join(characteristics)))
-
- def _display_type_details(self, type_path):
- dirname, basename = os.path.split(type_path)
- cdist_type = cdist.core.CdistType(dirname, basename)
-
- self._display_type_characteristics(cdist_type)
- self._display_type_parameters(cdist_type)
-
- def run(self):
- rv = []
- for cp in self.conf_dirs:
- conf_path = os.path.expanduser(cp)
- if self.all or self.display_global_explorers:
- rv.extend((x, 'E', ) for x in self._get_global_explorers(
- conf_path))
- if self.all or self.display_types:
- rv.extend((x, 'T', ) for x in self._get_types(conf_path))
- rv = sorted(rv, key=lambda x: x[0])
- for x, t in rv:
- print(x)
- if self.full and t == 'T':
- self._display_type_details(x)
diff --git a/cdist/libexec.py b/cdist/libexec.py
new file mode 100644
index 00000000..bd22eb86
--- /dev/null
+++ b/cdist/libexec.py
@@ -0,0 +1,45 @@
+import os
+import os.path
+import cdist.argparse
+import subprocess
+import sys
+
+
+libexec_delimiter = '-'
+libexec_prefix = 'cdist' + libexec_delimiter
+libexec_path = os.path.abspath(
+ os.path.join(os.path.dirname(cdist.__file__), 'conf', 'libexec'))
+
+
+def scan():
+ if os.path.isdir(libexec_path):
+ with os.scandir(libexec_path) as it:
+ for entry in it:
+ if (entry.name.startswith(libexec_prefix) and
+ entry.is_file() and
+ os.access(entry.path, os.X_OK)):
+ start = entry.name.find(libexec_delimiter) + 1
+ yield entry.name[start:]
+
+
+def is_libexec_command(name):
+ for x in scan():
+ if name == x:
+ return True
+ return False
+
+
+def create_parsers(parser, parent_parser):
+ for name in scan():
+ parser[name] = parent_parser.add_parser(name, add_help=False)
+
+
+def run(name, argv):
+ lib_name = libexec_prefix + name
+ lib_path = os.path.join(libexec_path, lib_name)
+ args = [lib_path, ]
+ args.extend(argv)
+ try:
+ subprocess.check_call(args)
+ except subprocess.CalledProcessError as e:
+ sys.exit(e.returncode)
diff --git a/cdist/preos.py b/cdist/preos.py
index bf2a8e60..378071db 100644
--- a/cdist/preos.py
+++ b/cdist/preos.py
@@ -5,9 +5,8 @@ import inspect
import argparse
import cdist
import logging
+import re
import cdist.argparse
-import cdist.configuration
-import cdist.exec.util as util
_PREOS_CALL = "commandline"
@@ -25,6 +24,16 @@ def extend_plugins_path(dirs):
_PLUGINS_PATH.append(preos_dir)
+cdist_home = cdist.home_dir()
+if cdist_home:
+ extend_plugins_path((cdist_home, ))
+x = 'CDIST_PATH'
+if x in os.environ:
+ vals = re.split(r'(?`_.
+`cdist dump `_.
For more info see:
.. code-block:: sh
- cdist-dump -h
+ cdist_dump -h
Or from cdist git cloned directory:
.. code-block:: sh
- ./scripts/cdist-dump -h
+ ./bin/cdist dump -h
diff --git a/docs/src/man1/cdist-dump.rst b/docs/src/man1/cdist-dump.rst
index 907cd192..5a73b4a8 100644
--- a/docs/src/man1/cdist-dump.rst
+++ b/docs/src/man1/cdist-dump.rst
@@ -11,17 +11,17 @@ SYNOPSIS
::
- cdist-dump [options] [host...]
+ cdist dump [options] [host...]
DESCRIPTION
-----------
-cdist-dump is a helper script that dumps data from local cdist cache for
+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'.
-cdist-dump can be used for debugging existing types, host configuration and
+cdist dump can be used for debugging existing types, host configuration and
new types.
@@ -88,10 +88,10 @@ EXAMPLES
.. code-block:: sh
# Dump all
- % cdist-dump -a
+ % cdist dump -a
# Dump only code-* output
- % cdist-dump -c
+ % cdist dump -c
SEE ALSO
diff --git a/docs/src/man1/cdist.rst b/docs/src/man1/cdist.rst
index 38248821..55db82ed 100644
--- a/docs/src/man1/cdist.rst
+++ b/docs/src/man1/cdist.rst
@@ -11,7 +11,7 @@ SYNOPSIS
::
- cdist [-h] [-V] {banner,config,install,inventory,preos,shell,info} ...
+ cdist [-h] [-V] {banner,config,install,inventory,preos,shell} ...
cdist banner [-h] [-l LOGLEVEL] [-q] [-v]
@@ -59,9 +59,7 @@ SYNOPSIS
[-I INVENTORY_DIR] [-a] [-f HOSTFILE] [-H] [-t]
[host [host ...]]
- cdist preos [-h] [-l LOGLEVEL] [-q] [-v] [-c CONF_DIR] [-g CONFIG_FILE]
- [-L]
- [preos] ...
+ cdist preos [-h] [-l LOGLEVEL] [-q] [-v] [-c CONF_DIR] [-L] [preos] ...
cdist preos [preos-options] debian [-h] [-l LOGLEVEL] [-q] [-v] [-b] [-a ARCH] [-B]
[-C] [-c CDIST_PARAMS] [-D DRIVE] [-e REMOTE_EXEC]
@@ -86,8 +84,6 @@ SYNOPSIS
cdist shell [-h] [-l LOGLEVEL] [-q] [-v] [-s SHELL]
- cdist info [-h] [-a] [-c CONF_DIR] [-e] [-F] [-f] [-g CONFIG_FILE] [-t] [pattern]
-
DESCRIPTION
-----------
@@ -466,9 +462,6 @@ 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.
@@ -611,39 +604,6 @@ usage. Its primary use is for debugging type parameters.
be POSIX compatible shell.
-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.
-
-
CONFIGURATION
-------------
cdist obtains configuration data from the following sources in the following
diff --git a/scripts/cdist b/scripts/cdist
index 7bf12c01..4fc74fb3 100755
--- a/scripts/cdist
+++ b/scripts/cdist
@@ -30,14 +30,20 @@ import cdist.config
import cdist.install
import cdist.shell
import cdist.inventory
+import cdist.libexec as libexec
def commandline():
"""Parse command line"""
- # preos subcommand hack
- if len(sys.argv) > 1 and sys.argv[1] == 'preos':
- return cdist.preos.PreOS.commandline(sys.argv[1:])
+ if len(sys.argv) > 1:
+ # preos subcommand hack
+ if sys.argv[1] == 'preos':
+ return cdist.preos.PreOS.commandline(sys.argv[1:])
+ # libexec subcommands hack
+ if libexec.is_libexec_command(sys.argv[1]):
+ return libexec.run(sys.argv[1], sys.argv[2:])
+
parser, cfg = cdist.argparse.parse_and_configure(sys.argv[1:])
args = cfg.get_args()
diff --git a/setup.py b/setup.py
index 7b000041..95ce9574 100644
--- a/setup.py
+++ b/setup.py
@@ -56,7 +56,7 @@ setup(
name="cdist",
packages=["cdist", "cdist.core", "cdist.exec", "cdist.util", ],
package_data={'cdist': package_data},
- scripts=["scripts/cdist", "scripts/cdist-dump", "scripts/cdist-new-type"],
+ scripts=["scripts/cdist", ],
version=cdist.version.VERSION,
description="A Usable Configuration Management System",
author="Nico Schottelius",