Sfoglia il codice sorgente

improve error handling and output

Kyle P Davis 10 anni fa
parent
commit
424aef442e
21 ha cambiato i file con 33 aggiunte e 10 eliminazioni
  1. 12 10
      gimme
  2. 1 0
      gimmes/_default
  3. 1 0
      gimmes/_node_pkg
  4. 1 0
      gimmes/_python_pkg
  5. 1 0
      gimmes/atom
  6. 1 0
      gimmes/firefox
  7. 1 0
      gimmes/gcc
  8. 1 0
      gimmes/gimme
  9. 2 0
      gimmes/git
  10. 1 0
      gimmes/git-extras
  11. 1 0
      gimmes/go
  12. 1 0
      gimmes/google-chrome
  13. 1 0
      gimmes/liquidprompt
  14. 1 0
      gimmes/mongodb
  15. 1 0
      gimmes/my/difftool
  16. 1 0
      gimmes/my/dotfiles
  17. 1 0
      gimmes/my/mergetool
  18. 1 0
      gimmes/my/tools
  19. 1 0
      gimmes/node
  20. 1 0
      gimmes/python
  21. 1 0
      gimmes/redis

+ 12 - 10
gimme

@@ -45,6 +45,8 @@ if [[ "$0" =~ [-]?bash ]]; then # sourced or piped
 
 	else # piped
 
+		set -o errexit -o pipefail
+
 		if ! [[ -d "$GIMME_DIR" ]]; then
 
 			echo "Installing $GIMME_DIR/gimme ..."
@@ -65,17 +67,12 @@ if [[ "$0" =~ [-]?bash ]]; then # sourced or piped
 	fi
 
 else # normal usage
-	set -e
-	set -E
-	set -o pipefail
 
-	on_err() {
-		echo "ERROR: Unable to gimme \"$GIMME\" (EXIT=$?)" 1>&2
-	}
-	trap on_err ERR
+	set -o errexit -o pipefail
 
 	for GIMME; do
 
+		echo "# WANT: gimme $GIMME"
 		! [[ "$GIMMES" == *" $GIMME "* ]]  ||  exit 0
 		export GIMMES+=" $GIMME " GIMME
 
@@ -91,15 +88,20 @@ else # normal usage
 			done
 			# no default
 			if ! [[ "$P" = "$GIMME_GIMMES_DIR"* ]]; then
-				echo "# ERROR: Unable to find $GIMME_GIMMES_DIR/_default handler" 1>&2
+				echo "# ERROR: Unable to find $GIMME_GIMMES_DIR/_default handler"
 				exit 1
 			fi
 		fi
 
 		if [[ -x "$P" ]]; then
 			[[ "$PATH" = "$LINK_DIR"* ]]  ||  export PATH="$LINK_DIR:$PATH"
-			"$P"
-			echo "# DONE: gimme $GIMME"
+			if "$P" | sed "s/^/  /"; then
+				echo "# DONE: gimme $GIMME"
+			else
+				OUCH=$?
+				echo "# FAIL: Error for gimme \"$GIMME\" (EXIT_CODE=$OUCH)"
+				exit $OUCH
+			fi
 		else
 			echo "# WARN: gimme $GIMME was SKIPPED because $P is not marked executable!"
 		fi

+ 1 - 0
gimmes/_default

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 has curl  ||  gimme_pkg curl
 
 if [[ "$OS" = "Darwin" ]]; then

+ 1 - 0
gimmes/_node_pkg

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 PKG=$(basename "$0")
 if [[ "$OS" = "Darwin" ]]; then
 	has "$PKG"  ||  npm install -g "$PKG"

+ 1 - 0
gimmes/_python_pkg

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 gimme python
 PKG=$(basename "$0")
 if ! has "$PKG"; then

+ 1 - 0
gimmes/atom

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 if [[ "$OS" = "Darwin" ]]; then
 	[[ -d "$HOME/Applications/Atom.app" ]]  ||  brew cask install atom
 else

+ 1 - 0
gimmes/firefox

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 if [[ "$OS" = "Darwin" ]]; then
 	[[ -d "$HOME/Applications/Firefox.app" ]]  ||  brew cask install firefox
 else

+ 1 - 0
gimmes/gcc

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 if [[ "$OS" = "Darwin" ]]; then
 	"xcode-select" --install 2>&1 | grep -q "already installed"
 else

+ 1 - 0
gimmes/gimme

@@ -1,2 +1,3 @@
 #!/bin/bash
+set -o errexit -o pipefail
 curl -fsSL "https://github.com/KylePDavis/gimme/raw/master/gimme" | bash -

+ 2 - 0
gimmes/git

@@ -1,4 +1,6 @@
 #!/bin/bash
+set -o errexit -o pipefail
+echo "FAILED"; exit 1
 has git  ||  gimme_pkg git
 if ! [[ -f "$HOME/.gitconfig" ]]; then
 	git config --global color.ui true

+ 1 - 0
gimmes/git-extras

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 
 gimme git
 

+ 1 - 0
gimmes/go

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 #TODO: setup go vs golang dirs
 if ! has go; then
 	if [[ "$OS" = "Darwin" ]]; then

+ 1 - 0
gimmes/google-chrome

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 if [[ "$OS" = "Darwin" ]]; then
 	[[ -d "$HOME/Applications/Google Chrome.app" ]]  ||  brew cask install google-chrome
 else

+ 1 - 0
gimmes/liquidprompt

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 
 gimme git
 

+ 1 - 0
gimmes/mongodb

@@ -1,2 +1,3 @@
 #!/bin/bash
+set -o errexit -o pipefail
 has mongod  ||  gimme_pkg mongodb

+ 1 - 0
gimmes/my/difftool

@@ -1,2 +1,3 @@
 #!/bin/bash
+set -o errexit -o pipefail
 gimme colordiff

+ 1 - 0
gimmes/my/dotfiles

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 REPO_URL="https://github.com/KylePDavis/dotfiles"
 REPO_DIR="$HOME/.dotfiles"
 

+ 1 - 0
gimmes/my/mergetool

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 if [[ "$OS" = "Darwin" ]]; then
 	[[ -d "$HOME/Applications/SourceTree.app" ]]  ||  brew cask install sourcetree
 else

+ 1 - 0
gimmes/my/tools

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 
 # tools
 gimme \

+ 1 - 0
gimmes/node

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 gimme gcc git
 if ! has node; then
 	if [[ "$OS" = "Darwin" ]]; then

+ 1 - 0
gimmes/python

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 if [[ "$OS" = "Darwin" ]]; then
 	mkdir -p "$PYTHONPATH"
 fi

+ 1 - 0
gimmes/redis

@@ -1,4 +1,5 @@
 #!/bin/bash
+set -o errexit -o pipefail
 if ! has redis-server; then
 	if [[ "$OS" = "Darwin" ]]; then
 		gimme_pkg redis