tools/squashfskit: fix version detection on non-linux system
[openwrt/staging/wigyori.git] / scripts / env
index afa6d9fff48e52a31073ab51e026fe436f5d5132..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:
@@ -62,8 +64,8 @@ env_init() {
                git init &&
                touch .config &&
                mkdir files &&
-               git-add . && 
-               git-commit -q -m "Initial import"
+               git add . && 
+               git commit -q -m "Initial import"
        } || {
                rm -rf .git
                error "Failed to initialize the environment directory"
@@ -72,14 +74,14 @@ env_init() {
 
 env_sync_data() {
        [ \! -L "$BASEDIR/.config" -a -f "$BASEDIR/.config" ] && mv "$BASEDIR/.config" "$ENVDIR"
-       git-add .
-       git-add -u
+       git add .
+       git add -u
 }
 
 env_sync() {
        local STR="$1"
        env_sync_data
-       git-commit -m "${STR:-Update} at $(date)"
+       git commit -m "${STR:-Update} at $(date)"
 }
 
 env_link_config() {
@@ -90,24 +92,25 @@ env_link_config() {
 }
 
 env_do_reset() {
-       git-reset --hard HEAD
-       git-clean -d -f
+       git reset --hard HEAD
+       git clean -d -f
 }
 
 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
 }
 
@@ -118,12 +121,12 @@ env_revert() {
 }
 
 env_ask_sync() {
+       env_sync_data
        LINES="$(env_diff | wc -l)" # implies env_init
        [ "$LINES" -gt 0 ] && {
                if ask_bool 1 "Do you want to save your changes"; then
                        env_sync
                else
-                       env_sync_data
                        env_do_reset
                fi
        }
@@ -137,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"
-               cp -a "$ENVDIR/files/*" "$BASEDIR/files" 2>/dev/null >/dev/null
+               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"
@@ -148,28 +153,27 @@ env_clear() {
 
 env_delete() {
        local name="${1##*/}"
+       env_init
        [ -z "$name" ] && usage
-       [ -f "$envdir/.git/refs/heads/$name" ] || error "environment '$name' not found"
-       branch="$(git-branch | grep '^\* ' | awk '{print $2}')"
-       [ "$name" = "branch" ] && error "cannot delete the currently selected environment"
-       git-branch -D "$name"
+       branch="$(git branch | grep '^\* ' | awk '{print $2}')"
+       [ "$name" = "$branch" ] && error "cannot delete the currently selected environment"
+       git branch -D "$name"
 }
 
 env_switch() {
        local name="${1##*/}"
        [ -z "$name" ] && usage
-       [ -f "$ENVDIR/.git/refs/heads/$name" ] || error "environment '$name' not found"
 
        env_init
        env_ask_sync
-       git-checkout "$NAME"
+       git checkout "$name" || error "environment '$name' not found"
        env_link_config
 }
 
 env_rename() {
        local NAME="${1##*/}"
        env_init
-       git-branch -m "$NAME"
+       git branch -m "$NAME"
 }
 
 env_new() {
@@ -180,7 +184,7 @@ env_new() {
        [ -z "$NAME" ] && usage
        env_init 1
        
-       branch="$(git-branch | grep '^\* ' | awk '{print $2}')"
+       branch="$(git branch | grep '^\* ' | awk '{print $2}')"
        if [ -n "$branch" -a "$branch" != "master" ]; then
                env_ask_sync
                if ask_bool 0 "Do you want to clone the current environment?"; then
@@ -188,11 +192,14 @@ env_new() {
                fi
                rm -f "$BASEDIR/.config" "$BASEDIR/files"
        fi
-       git-checkout -b "$1" "$from"
+       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" ] && {
-                               mv "$BASEDIR/files/"* "$ENVDIR/" 2>/dev/null
+                               mkdir -p "$ENVDIR/files"
+                               shopt -s dotglob
+                               mv "$BASEDIR/files/"* "$ENVDIR/files/" 2>/dev/null
+                               shopt -u dotglob
                                rmdir "$BASEDIR/files"
                        }
                        env_sync