X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=scripts%2Fenv;h=7bfca58c5dd9dc815685e5003df2f1ca03cde772;hb=e575a7f777ef8af1f7916333f9d812cd0c46e505;hp=65594f9a5d04b74f7372bf65ed699615426a817a;hpb=02052624df9bfeac34c9aa4d7760e55787e87ab6;p=oweals%2Fopenwrt.git diff --git a/scripts/env b/scripts/env index 65594f9a5d..7bfca58c5d 100755 --- a/scripts/env +++ b/scripts/env @@ -1,6 +1,7 @@ #!/usr/bin/env bash BASEDIR="$PWD" ENVDIR="$PWD/env" +export GREP_OPTIONS= usage() { cat < Delete an environment rename 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: @@ -71,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 } @@ -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 - env_link_config + git diff --cached --color=auto + env_link_config } env_save() { env_init - env_sync + env_sync "$@" env_link_config } @@ -134,11 +136,13 @@ 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" - 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" @@ -181,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" @@ -189,12 +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 ask_bool 1 "Do you want to keep your current config and files?"; then - [ -d "$BASEDIR/files" -a \! -L "$BASEDIR/files" ] && { - mv "$BASEDIR/files/"* "$ENVDIR/" 2>/dev/null + 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 + 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"