env: only use color diffs on terminals
[openwrt/openwrt.git] / scripts / env
index c9eab5dfab1beaed524830024cf674ead1e68a17..84166ae5fe45ddeefb82f060fb8d3d1b898e81c9 100755 (executable)
@@ -1,6 +1,7 @@
 #!/usr/bin/env bash
 BASEDIR="$PWD"
 ENVDIR="$PWD/env"
+export GREP_OPTIONS=
 
 usage() {
        cat <<EOF
@@ -14,7 +15,8 @@ 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:
@@ -96,19 +98,19 @@ env_do_reset() {
 
 env_list() {
        env_init
-       git branch | grep -vE '^. master$'
+       git branch --color | grep -vE '^. master$'
 }
 
 env_diff() {
        env_init
        env_sync_data
-       git diff --cached
+       git diff --cached --color=auto
        env_link_config
 }
 
 env_save() {
        env_init
-       env_sync
+       env_sync "$@"
        env_link_config
 }
 
@@ -138,7 +140,9 @@ env_clear() {
        env_sync_data
        if ask_bool 1 "Do you want to keep your current config and files"; then
                mkdir -p "$BASEDIR/files"
+               shopt -s dotglob
                cp -a "$ENVDIR/files/"* "$BASEDIR/files" 2>/dev/null >/dev/null
+               shopt -u dotglob
                cp "$ENVDIR/.config" "$BASEDIR/"
        else
                rm -rf "$BASEDIR/files" "$BASEDIR/.config"
@@ -190,10 +194,12 @@ env_new() {
        fi
        git checkout -b "$1" "$from"
        if [ -f "$BASEDIR/.config" -o -d "$BASEDIR/files" ]; then
-               if ask_bool 1 "Do you want to keep your current config and 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" ] && {
                                mkdir -p "$ENVDIR/files"
+                               shopt -s dotglob
                                mv "$BASEDIR/files/"* "$ENVDIR/files/" 2>/dev/null
+                               shopt -u dotglob
                                rmdir "$BASEDIR/files"
                        }
                        env_sync