#!/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 # Determine repository URL if [ ! -d "$HYDRA_FOLDER/$repository" ]; then if [ -e "$HYDRA_FOLDER/config/repository/url" ]; then url="`cat $HYDRA_FOLDER/config/repository/url`" else if [ ! -e "$HYDRA_FOLDER/config/domain" ]; then echo "Please set domain configuration" exit 1 fi url="gitolite@admin.`cat $HYDRA_FOLDER/config/domain`:$repository" fi git clone $url $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 if git remote | grep -q "origin"; then git pull origin master git submodule update --init else echo "No origin repository configured for $repository, skipping..." fi ) fi fi done } # Basic parameters. if [ -z "$1" ]; then REPOSITORIES="config doc bootless dns git/public git/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