diff --git a/conf/manifest/init b/conf/manifest/init index be9d10c5..f6d973f8 100755 --- a/conf/manifest/init +++ b/conf/manifest/init @@ -20,13 +20,14 @@ case "$__target_host" in __package_pacman wireshark-cli --state installed __package_pacman zsh --state installed ;; + cdist-gentoo) + __package tree --state installed + ;; + # Real machines ikq*) __package_apt zsh --state installed ;; - icarus) - __package tree --ensure installed - ;; esac diff --git a/conf/type/__package/hints b/conf/type/__package/hints deleted file mode 100644 index 86282e3b..00000000 --- a/conf/type/__package/hints +++ /dev/null @@ -1,7 +0,0 @@ -install/pacman: -pacman --noconfirm --noprogressbar -S --------------------------------------------------------------------------------- - -ensure: What state the package should be in: present | absent | latest | versionstring (1.0.3) -name: The package name as used by the packaging system - diff --git a/conf/type/__package/manifest b/conf/type/__package/manifest index 5ac1ae7b..89b3f179 100755 --- a/conf/type/__package/manifest +++ b/conf/type/__package/manifest @@ -23,21 +23,28 @@ # system. # -. cdist-config - -object_id="$1"; shift - -if [ -f type ]; then - type="$(cat type)" +type="$__object/parameter/type" +if [ -f "$type" ]; then + type="$(cat "$type")" else - # Default to value taken from explorer - type="$(cat $__cdist_out_explorers/pkg_system)" + # By default determine package manager based on operating system + os="$(cat "out/explorer/os")" + case "$os" in + archlinux) type="pacman" ;; + debian|ubuntu) type="apt" ;; + gentoo) type="emerge" ;; + *) + echo "Don't know how to manage packages on: $os" >&2 + exit 1 + ;; + esac fi -set -- "$@" "$object_id" +set -- "$@" "$__object_id" +cd "$__object/parameter" for property in $(ls .); do if [ "$property" != "type" ]; then - set -- "$@" "--$property" "$(cat $property)" + set -- "$@" "--$property" "$(cat "$property")" fi done diff --git a/conf/type/__package/parameter/optional b/conf/type/__package/parameter/optional index d3598a51..712ea892 100644 --- a/conf/type/__package/parameter/optional +++ b/conf/type/__package/parameter/optional @@ -1,2 +1,3 @@ name +version type diff --git a/conf/type/__package/parameter/required b/conf/type/__package/parameter/required index 5f0c1c12..ff72b5c7 100644 --- a/conf/type/__package/parameter/required +++ b/conf/type/__package/parameter/required @@ -1 +1 @@ -ensure +state diff --git a/conf/type/__package_apt/gencode b/conf/type/__package_apt/gencode index 8523e01e..cfb7a9d6 100755 --- a/conf/type/__package_apt/gencode +++ b/conf/type/__package_apt/gencode @@ -22,7 +22,7 @@ # if [ -f "$__object/parameter/name" ]; then - name="$__object/parameter/name" + name="$(cat "$__object/parameter/name")" else name="$__object_id" fi diff --git a/conf/type/__package_emerge/gencode b/conf/type/__package_emerge/gencode index e4313c5c..ee95b823 100755 --- a/conf/type/__package_emerge/gencode +++ b/conf/type/__package_emerge/gencode @@ -21,18 +21,24 @@ # Manage packages on gentoo. # -. cdist-config - -object_id="$1"; shift - -if [ -f name ]; then - name="$(cat name)" +if [ -f "$__object/parameter/name" ]; then + name="$(cat "$__object/parameter/name")" else - name="$object_id" + name="$__object_id" fi +state="$(cat "$__object/parameter/state")" -# FIXME: super simple proof of concept -echo "emerge -q \"$name\"" +case "$state" in + installed) + # FIXME: only install if not already installed + echo "emerge -q \"$name\"" + ;; + deinstalled) + # FIXME: only uninstall if currently installed + # FIXME: rename deinstalled to uninstalled + echo "emerge -q -C \"$name\"" + ;; +esac exit 0 diff --git a/conf/type/__package_emerge/hints b/conf/type/__package_emerge/hints deleted file mode 100644 index 86282e3b..00000000 --- a/conf/type/__package_emerge/hints +++ /dev/null @@ -1,7 +0,0 @@ -install/pacman: -pacman --noconfirm --noprogressbar -S --------------------------------------------------------------------------------- - -ensure: What state the package should be in: present | absent | latest | versionstring (1.0.3) -name: The package name as used by the packaging system - diff --git a/conf/explorer/pkg_system b/conf/type/__package_emerge/manifest similarity index 60% rename from conf/explorer/pkg_system rename to conf/type/__package_emerge/manifest index fad2a9f0..178fa510 100755 --- a/conf/explorer/pkg_system +++ b/conf/type/__package_emerge/manifest @@ -1,6 +1,6 @@ #!/bin/sh # -# 2010 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) # # This file is part of cdist. # @@ -18,15 +18,19 @@ # along with cdist. If not, see . # # +# __package is an abstract type which dispatches to the lower level +# __package_$name types which do the actual interaction with the packaging +# system. +# -os="$("$__explorer/os")" +# TODO: depend on package gentoolkit for qpkg + +# TODO: +# if /var/cache/eix is older then /usr/portage/metadata/timestamp +# then run /usr/bin/eix-update +# +# check if package is installed: +# +# get currently installed version: +# -case "$os" in - archlinux) echo pacman ;; - debian|ubuntu) echo apt ;; - gentoo) echo emerge ;; - *) - echo "Unknown OS: $os" >&2 - exit 1 - ;; -esac diff --git a/conf/type/__package_emerge/parameter/optional b/conf/type/__package_emerge/parameter/optional index f121bdbf..a52167d3 100644 --- a/conf/type/__package_emerge/parameter/optional +++ b/conf/type/__package_emerge/parameter/optional @@ -1 +1,2 @@ name +version diff --git a/conf/type/__package_emerge/parameter/required b/conf/type/__package_emerge/parameter/required index 5f0c1c12..ff72b5c7 100644 --- a/conf/type/__package_emerge/parameter/required +++ b/conf/type/__package_emerge/parameter/required @@ -1 +1 @@ -ensure +state