#!/usr/bin/env bash
#####################################################################
#
-# Call by cron/etc/nb
+# Pull update and run install script
+# Called by cron/etc/nb
#
#####################################################################
#su nico -c "cd /opt/nb && git -C /opt/nb pull"
export GIT_SSH="$TMP"
for repo in \
+ $((ls /{opt,home,home/www}/*/.nb-install | xargs -n1 dirname) 2>/dev/null) \
$NB_ROOT \
/opt/backup_servers \
/{opt,home/www}/rent \
/home/www/izideal \
; do
+ # Check dir
+ [ -d "$repo/.git" ] || continue
+ cd "$repo" || continue
+
+ name="$(basename $repo)"
+
+ # Get user
case "$repo" in
*:*) user=${repo%%:*}; repo=${repo#*:} ;;
*) user="" ;;
esac
- [ -d "$repo/.git" ] || continue
- cd "$repo" || continue
-
[ -z "$user" ] && user=`ls -dl "$repo" |awk '{print $3}'`
- cmd="git pull"
+
+ # Pull
echo ">git pull $repo (user=$user)"
+ cmd="GIT_SSH=$TMP cd \"$repo\" && git pull"
+ [ -x bin/$name-install ] && cmd="$cmd && echo '>$name-install' && bin/$name-install"
+
if [ "$USER" == "$user" ]; then
- timeout 30 git pull
+ bash -c "$cmd"
elif [ "$USER" == "root" ]; then
- timeout 30 su $user -c "GIT_SSH=$TMP cd \"$repo\" && git pull"
+ su $user -c "$cmd"
else
echo "Ignore $repo: current user=$USER repo user=$user"
continue
fi
+ break
ret=$?
[ "$ret" != "0" ] && ex=$ret && echo ">err $ret"
done
rm -f "$TMP"
-#####################################################################
-# Install
-#
-echo ">nb-install"
-nb-install
-
#####################################################################
# End
#
git init
# Create files
- printf "$dir\n=============\n\n\n## Synopsis\n\nDESCRIPTION\n" > README.md
+ printf "$dir\n=============\n## Synopsis\n\nDESCRIPTION\n" > README.md
echo ">git add ."
git add .
echo ">git commit -m \"Created by $FUNCNAME\""
git commit -m "Created by $FUNCNAME"
- #git push --set-upstream origin master
+ echo ">git push --set-upstream origin master"
+ git push --set-upstream origin master
+
echo ">git remote add origin $repo:${dir}.git"
git remote add origin $repo:${dir}.git
}