#!/bin/bash # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public # License along with this program. If not, see # . # Load. source $APP_BASE/lib/hydra/functions || exit 1 hydra_config_load # Sync each repository. function hydra_sync { for repository in $*; do if [ "$repository" == "keyringer" ]; then UPDATE_KEYRINGER="yes" continue fi if [ ! -d "$HYDRA_FOLDER/$repository/.git" ]; then git clone $PRIVATE_REPOS/$repository $HYDRA_FOLDER/$repository fi if [ -d "$HYDRA_FOLDER/$repository/.git" ]; then echo "Syncing $repository..." if [ "$repository" == "bootless" ]; then ( cd $HYDRA_FOLDER/$repository && git annex sync ) else ( cd $HYDRA_FOLDER/$repository && git pull origin master && git submodule update --init ) fi fi done } # Basic parameters. if [ -z "$1" ]; then REPOSITORIES="bootless dns gitolite/public gitolite/private gitosis/public gitosis/private puppet" else REPOSITORIES="$*" UPDATE_KEYRINGER="no" fi # Check for requirements. for req in git-annex; do hydra_install_package $req done hydra_sync $REPOSITORIES # Update keyring. if [ "$UPDATE_KEYRINGER" != "no" ]; then if ! which keyringer &> /dev/null; then echo "Please install keyringer for a full hydra experience." elif [ ! -e "$HOME/.keyringer/$HYDRA" ]; then echo "Initializing keyring for $HYDRA..." keyringer $HYDRA init $HYDRA_FOLDER/$repository fi echo "Syncing keyringer..." keyringer $HYDRA git pull fi # Update puppet configuration. if [ -z "$PUPPET" ]; then echo "Searching for a puppet repository at $BASEDIR..." PUPPET="$(dirname `find $BASEDIR -name puppet.conf | tail -n 1` 2> /dev/null)" if [ ! -z "$PUPPET" ]; then if ! grep -q -e "^PUPPET=" $PREFERENCES; then echo "Found puppet repository at $PUPPET." echo "PUPPET=$PUPPET" >> $PREFERENCES fi fi fi