commit: 8c334ae2a91edbb44b2c7b9a472dfe3fc4d73276
Author: James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 30 22:53:25 2017 +0000
Commit: James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Tue Jan 2 22:54:55 2018 +0000
URL: https://gitweb.gentoo.org/proj/eselect-java.git/commit/?id=8c334ae2
Add --if-unset option to java-vm's set action
NEWS | 1 +
src/modules/java-vm.eselect.in | 22 +++++++++++++++++-----
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/NEWS b/NEWS
index 8e0d519..6895cbc 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,7 @@
* Sort java-vm targets in version order rather than alphanumeric
* Fix showing and highlighting current ecj + mvn targets (#585224)
* Fix insufficient quoting in java-vm module
+ * Add --if-unset option to java-vm's set action
0.3.0:
diff --git a/src/modules/java-vm.eselect.in b/src/modules/java-vm.eselect.in
index b9043e6..b8654e3 100644
--- a/src/modules/java-vm.eselect.in
+++ b/src/modules/java-vm.eselect.in
@@ -103,20 +103,30 @@ describe_set() {
echo "Set a new system or user vm"
}
+describe_set_options() {
+ echo "--if-unset : do not change if already set"
+}
+
do_set() {
local usage="Usage [user|system] [vm]"
+ local ifunset=0
+
+ if [[ ${1} == "--if-unset" ]]; then
+ ifunset=1
+ shift
+ fi
+
if [[ ${#} != 2 ]]; then
die -q ${usage}
-
elif [[ ${1} == "system" ]]; then
if [[ -w ${VM_SYSTEM%/*} ]]; then
- my_set "${VM_SYSTEM}" "${2}"
+ my_set "${VM_SYSTEM}" "${2}" ${ifunset}
else
die -q "Sorry, you don't have enough permission to set
system"
fi
elif [[ ${1} == "user" ]]; then
if [[ ${UID} != 0 ]]; then
- my_set "${VM_USER}" "${2}"
+ my_set "${VM_USER}" "${2}" ${ifunset}
else
die -q "Sorry, you cannot set a user vm as root. Set
the system vm instead"
fi
@@ -126,12 +136,14 @@ do_set() {
}
my_set() {
- local target=${2} symlink=${1}
+ local symlink=${1} target=${2} ifunset=${3}
if [[ -z ${target} ]] ; then
die -q "You didn't tell me what to set the symlink to"
elif [[ -L "${symlink}" ]] ; then
- set_symlink "${target}" "${symlink}" || die -q "Couldn't set a
new symlink"
+ if [[ ${ifunset} == 0 || ! -d ${symlink} ]]; then
+ set_symlink "${target}" "${symlink}" || die -q
"Couldn't set a new symlink"
+ fi
elif [[ -e ${symlink} ]] ; then
die -q "Target file already exists and is not a symlink:
${symlink}"