tools/patchelf: update to 0.18.0
[openwrt/staging/dedeckeh.git] / scripts / env
index 5542b2017be31c4282ba4677aa10d50a6619d52b..5987b4160f4a87a825ee13d8459ee9ae2c31e780 100755 (executable)
@@ -15,13 +15,14 @@ Commands:
        delete <name>     Delete an environment
        rename <newname>  Rename the current environment
        diff              Show differences between current state and environment
-       save              Save your changes to the environment
+       save [message]    Save your changes to the environment, optionally using
+                         the given commit message
        revert            Revert your changes since last save
 
 Options:
 
 EOF
-       exit ${1:-1}
+       exit "${1:-1}"
 }
 
 error() {
@@ -41,7 +42,7 @@ ask_bool() {
                local VAL
 
                echo -n "$* ($defstr): "
-               read VAL
+               read -r VAL
                case "$VAL" in
                        y*|Y*) val=0;;
                        n*|N*) val=1;;
@@ -56,11 +57,11 @@ env_init() {
        if [ -z "$CREATE" ]; then
                [ -d "$ENVDIR" ] || exit 0
        fi
-       [ -x "$(which git 2>/dev/null)" ] || error "Git is not installed"
+       command -v git >/dev/null || error "Git is not installed"
        mkdir -p "$ENVDIR" || error "Failed to create the environment directory"
        cd "$ENVDIR" || error "Failed to switch to the environment directory"
        [ -d .git ] || { 
-               git init &&
+               git init -b master &&
                touch .config &&
                mkdir files &&
                git add . && 
@@ -72,7 +73,7 @@ env_init() {
 }
 
 env_sync_data() {
-       [ \! -L "$BASEDIR/.config" -a -f "$BASEDIR/.config" ] && mv "$BASEDIR/.config" "$ENVDIR"
+       [ ! -L "$BASEDIR/.config" ] && [ -f "$BASEDIR/.config" ] && mv "$BASEDIR/.config" "$ENVDIR"
        git add .
        git add -u
 }
@@ -103,13 +104,13 @@ env_list() {
 env_diff() {
        env_init
        env_sync_data
-       git diff --cached --color
+       git diff --cached --color=auto
        env_link_config
 }
 
 env_save() {
        env_init
-       env_sync
+       env_sync "$@"
        env_link_config
 }
 
@@ -135,7 +136,7 @@ env_clear() {
        env_init
        [ -L "$BASEDIR/.config" ] && rm -f "$BASEDIR/.config"
        [ -L "$BASEDIR/files" ] && rm -f "$BASEDIR/files"
-       [ -f "$ENVDIR/.config" ] || ( cd "$ENVDIR/files" && find | grep -vE '^\.$' > /dev/null )
+       [ -f "$ENVDIR/.config" ] || ( cd "$ENVDIR/files" && find | grep -vE '^\.$' > /dev/null )
        env_sync_data
        if ask_bool 1 "Do you want to keep your current config and files"; then
                mkdir -p "$BASEDIR/files"
@@ -146,7 +147,7 @@ env_clear() {
        else
                rm -rf "$BASEDIR/files" "$BASEDIR/.config"
        fi
-       cd "$BASEDIR"
+       cd "$BASEDIR" || exit 1
        rm -rf "$ENVDIR"
 }
 
@@ -184,7 +185,7 @@ env_new() {
        env_init 1
        
        branch="$(git branch | grep '^\* ' | awk '{print $2}')"
-       if [ -n "$branch" -a "$branch" != "master" ]; then
+       if [ -n "$branch" ] && [ "$branch" != "master" ]; then
                env_ask_sync
                if ask_bool 0 "Do you want to clone the current environment?"; then
                        from="$branch"
@@ -192,15 +193,15 @@ env_new() {
                rm -f "$BASEDIR/.config" "$BASEDIR/files"
        fi
        git checkout -b "$1" "$from"
-       if [ -f "$BASEDIR/.config" -o -d "$BASEDIR/files" ]; then
+       if [ -f "$BASEDIR/.config" ] || [ -d "$BASEDIR/files" ]; then
                if ask_bool 1 "Do you want to start your configuration repository with the current configuration?"; then
-                       [ -d "$BASEDIR/files" -a \! -L "$BASEDIR/files" ] && {
+                       if [ -d "$BASEDIR/files" ] && [ ! -L "$BASEDIR/files" ]; then
                                mkdir -p "$ENVDIR/files"
                                shopt -s dotglob
                                mv "$BASEDIR/files/"* "$ENVDIR/files/" 2>/dev/null
                                shopt -u dotglob
                                rmdir "$BASEDIR/files"
-                       }
+                       fi
                        env_sync
                else
                        rm -rf "$BASEDIR/.config" "$BASEDIR/files"