File pacemaker-tools-improve-crm_master-help-and-error-messages.patch of Package pacemaker

commit 10c67a049ede5b3b9572efb104fb7e77b3afcecb
Author: Ken Gaillot <kgaillot@redhat.com>
Date:   Wed Jan 3 14:11:55 2018 -0600

    Doc: tools: improve crm_master help and error messages

Index: pacemaker-1.1.18+20180126.bfe4e8042/tools/crm_master
===================================================================
--- pacemaker-1.1.18+20180126.bfe4e8042.orig/tools/crm_master
+++ pacemaker-1.1.18+20180126.bfe4e8042/tools/crm_master
@@ -1,12 +1,46 @@
 #!/bin/bash
 
+USAGE_TEXT="Usage: crm_master <command> [<options>]
+Common options:
+ --help 		Display this text, then exit
+ --version 		Display version information, then exit
+ -V, --verbose 		Specify multiple times to increase debug output
+ -q, --quiet 		Print only the value (if querying)
+
+Commands:
+ -G, --query 		Query the current value of the master score
+ -v, --update=VALUE	Update the value of the master score
+ -D, --delete 		Delete the master score
+
+Additional Options:
+ -N, --node=NODE	Use master score on named node (instead of local node)
+ -l, --lifetime=VALUE	Until when should the setting take effect
+                     	(valid values: reboot, forever)
+ -i, --id=VALUE		(Advanced) XML ID used to identify master score attribute"
+
+HELP_TEXT="crm_master - Query, update, or delete a resource's promotion score
+
+This program should normally be invoked only from inside an OCF resource agent.
+
+$USAGE_TEXT"
+
+exit_usage() {
+	if [ $# -gt 0 ]; then
+		echo "error: $@" >&2
+	fi
+	echo
+	echo "$USAGE_TEXT"
+	exit 1
+}
+
 TEMP=`getopt -o qDGQVN:U:v:i:l:r: --long version,help,resource:,node:,uname:,attr-value:,id:,update:,delete-attr,get-value,attr-id:,lifetime:,quiet \
      -n 'crm_master' -- "$@"`
 
-if [ $? != 0 ] ; then echo "crm_master - A convenience wrapper for crm_attribute"; echo ""; crm_attribute -?; exit 1 ; fi
+if [ $? -ne 0 ]; then
+	exit_usage
+fi
 
-# Note the quotes around `$TEMP': they are essential!
-eval set -- "$TEMP"
+eval set -- "$TEMP" # Quotes around $TEMP are essential
 
 # Explicitly set the (usual default) lifetime, so the attribute gets set as a
 # node attribute and not a cluster property.
@@ -18,41 +52,28 @@ while true ; do
 	    -v|--attr-value|--update|-i|--id|--attr-id|-l|--lifetime) options="$options $1 $2"; shift; shift;;
 	    -Q|-q|--quiet|-D|--delete-attr|-G|--get-value|-V) options="$options $1"; shift;;
 	    -r|--resource) OCF_RESOURCE_INSTANCE=$2; shift; shift;;
-	    --version) crm_attribute --version; exit 0;;
-	    --help) 
-		echo "crm_master - A convenience wrapper for crm_attribute"; 
-		echo ""; 
-		echo "Set, update or delete a resource's promotion score"; 
-		echo "";
-		echo "This program should normally only be invoked from inside an OCF resource agent"
-		echo ""; 
-		echo "Usage: crm_master command [options]"; 
-		echo "Options:"
-		echo " --help 		This text"
-		echo " --version 		Version information"
-		echo " -V, --verbose 		Increase debug output"
-		echo " -q, --quiet 		Print only the value on stdout"
-		echo ""
-		echo "Commands:"
-		echo " -G, --query 		Query the current value of the attribute/option"
-		echo " -v, --update=value	Update the value of the attribute/option"
-		echo " -D, --delete 		Delete the attribute/option"
-		echo ""
-		echo "Additional Options:"
-		echo " -N, --node=value	Set an attribute for the named node (instead of the current one)."
-		echo " -l, --lifetime=value	Until when should the setting take affect."
-		echo "	       		Valid values: reboot, forever"
-		echo " -i, --id=value		(Advanced) The ID used to identify the attribute"
-		exit 0;;
-	    --) shift ; break ;;
-	    *) echo "Unknown option: $1. See --help for details." exit 1;;
+		--help) 
+			echo "$HELP_TEXT"
+			exit 0
+			;;
+		--version)
+			crm_attribute --version
+			exit 0
+			;;
+		--)
+			shift
+			break
+			;;
+		*)
+			exit_usage "unknown option '$1'"
+			;;
 	esac
 done
 
 if [ -z "$OCF_RESOURCE_INSTANCE" ]; then
-    echo "This program should normally only be invoked from inside an OCF resource agent"
-    echo "To set the promotion/master score from the command line, please specify a resource ID with -r" 
-    exit 1
+	echo "This program should normally only be invoked from inside an OCF resource agent."
+	echo "To set a promotion score from the command line, please specify resource with -r."
+	exit 1
 fi
 
 crm_attribute -n master-$OCF_RESOURCE_INSTANCE $options