diff options
author | Karel Kočí <cynerd@email.cz> | 2017-05-07 11:43:33 +0200 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2017-05-07 11:49:39 +0200 |
commit | 36e9201b0fd130f3aaf924b06bf29c0e46c88743 (patch) | |
tree | 20e48fafa829da0a2aeac92e54a0e355b21d4f84 /utils/inst | |
parent | a793b23435567f2d4f49846196ceebcc47cd764c (diff) | |
parent | 9fbf8d27ddbfb136351780615d42af82ddb42337 (diff) | |
download | myconfigs-36e9201b0fd130f3aaf924b06bf29c0e46c88743.tar.gz myconfigs-36e9201b0fd130f3aaf924b06bf29c0e46c88743.tar.bz2 myconfigs-36e9201b0fd130f3aaf924b06bf29c0e46c88743.zip |
Merge branch 'master' into server
Diffstat (limited to 'utils/inst')
-rw-r--r-- | utils/inst | 30 |
1 files changed, 17 insertions, 13 deletions
@@ -1,6 +1,12 @@ # Functions used for interactive installation of new changes to running system # vim: ft=sh +ask() { + echo -ne "\e[1;34m$1 (Y/n) \e[0m" + read + [[ $REPLY =~ ^[Yy]?$ ]] +} + dodiff() { if [ -d "$2" ]; then # If we just copying some file to directory @@ -9,15 +15,14 @@ dodiff() { OUT=$2 fi if ! [ -f "$OUT" ]; then - echo "Not installed: $1 => $OUT" - read -p "Install? (Y/n) " - if [[ $REPLY =~ ^[Yy]?$ ]]; then + echo -e "\e[1;33mNot installed:\e[0m $1 => $OUT" + if ask "Install?"; then doinst "$1" "$OUT" fi return fi - if cmp "$1" "$OUT" >/dev/null; then - echo "No difference detected: $OUT" + if cmp "$1" "$OUT" >/dev/null 2>&1; then + echo -e "\e[1;32mNo difference detected:\e[0m $OUT" return fi vimdiff "$1" "$OUT" @@ -31,7 +36,7 @@ checkdiff() { # directory than it have to have trailing slash to ensure that no # additional directory is created. if ! echo "$1" | grep -qE '/$'; then - echo ERROR: Directory without trailing slash detected: $1 + echo -e "\e[1;31mERROR: Directory without trailing slash detected:\e[0m $1" exit 1 fi # Got trough all files ignoring git repositories @@ -43,9 +48,8 @@ checkdiff() { for d in `find "$1" -type d -print -exec test -e '{}'/.git \; -prune`; do D="${d#$1}" if [ ! -d "$2/$D" ]; then - echo "Directory not installed: $1/$D => $2/$D" - read -p "Install? (Y/n) " - if [[ $REPLY =~ ^[Yy]?$ ]]; then + echo -e "\e[1;33mDirectory not installed:\e[0m $1/$D => $2/$D" + if ask "Install?"; then doinst "$1/$D/" "$2/$D" fi fi @@ -57,9 +61,9 @@ checkdiff() { cd "$2/$G" # Check if we have any change at all if git --work-tree=. diff --exit-code -s; then - echo "No difference detected in git: $2/$G" + echo -e "\e[1;32mNo difference detected in git:\e[0m $2/$G" else - echo "Checkout of git repository: $2/$G" + echo -e "\e[0;32mCheckout of git repository:\e[0m $2/$G" # Checkout all files to HEAD git --work-tree=. checkout -f HEAD # Update all submodules @@ -77,14 +81,14 @@ checkdiff() { # commands not on deployed tree but on tree in this repository, so we need specify # work tree on command line every time we want target deployed work tree. doinst() { - echo rsync -rlpt $1 $2 + echo -e "\e[1;34mrsync -rlpt $1 $2\e[0m" rsync -rlpt $1 $2 # Now edit all .git files in target directory for g in `find "$2" -name '.git' -type f`; do if ! grep -q "gitdir: " "$g"; then continue # Probably not a git repository or who knows. fi - echo "Pointing git repository $g to this repository" + echo -e "\e[1;34mPointing git repository $g to this repository\e[0m" echo gitdir: $PWD/.git`sed "s/^gitdir: [./]*git//" "$g"` > "$g" done } |