From b891bb05d5751fe0f80829d7fe54cd56468d5e51 Mon Sep 17 00:00:00 2001
From: Ander Punnar <ander@kvlt.ee>
Date: Wed, 19 Feb 2020 12:58:22 +0200
Subject: [PATCH] __update_alternatives: add state explorer

---
 cdist/conf/type/__update_alternatives/explorer/state | 8 ++++++++
 cdist/conf/type/__update_alternatives/gencode-remote | 4 ++++
 2 files changed, 12 insertions(+)
 create mode 100755 cdist/conf/type/__update_alternatives/explorer/state

diff --git a/cdist/conf/type/__update_alternatives/explorer/state b/cdist/conf/type/__update_alternatives/explorer/state
new file mode 100755
index 00000000..04a78aaa
--- /dev/null
+++ b/cdist/conf/type/__update_alternatives/explorer/state
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+path="$(cat "$__object/parameter/path")"
+name="$__object_id"
+link="$(readlink "/etc/alternatives/$name")"
+if [ "$path" = "$link" ]
+then echo present
+else echo absent
+fi
diff --git a/cdist/conf/type/__update_alternatives/gencode-remote b/cdist/conf/type/__update_alternatives/gencode-remote
index 0e7b0d89..b632deb2 100755
--- a/cdist/conf/type/__update_alternatives/gencode-remote
+++ b/cdist/conf/type/__update_alternatives/gencode-remote
@@ -21,6 +21,10 @@
 # Setup alternative - no standard way to create, always set
 #
 
+if [ "$(cat "$__object/explorer/state")" = 'present' ]
+then exit 0
+fi
+
 path="$(cat "$__object/parameter/path")"
 name="$__object_id"
 echo "update-alternatives --quiet --set '$name' '$path'"