Last active
December 27, 2015 13:39
-
-
Save wybczu/7334471 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
[[ -z $DEBUG ]] || set -x | |
HOST="gerrit.example.com" | |
PORT="29418" | |
function usage | |
{ | |
echo "usage: $(basename $0) [-eg] project-name" | |
echo | |
echo " -e tworzy pusty commit w repozytorium" | |
echo " -g nie twórz grup 'project-name' i 'project-name Lead'" | |
} | |
GERRIT="ssh $HOST -p $PORT gerrit" | |
TEMP="$( mktemp -d )" | |
trap "rm -rf $TEMP; exit" EXIT INT TERM | |
while getopts ":eg" option; do | |
case $option in | |
e) | |
CREATE_EMPTY_COMMIT="yes" | |
;; | |
g) | |
DO_NOT_CREATE_GROUPS="yes" | |
;; | |
*) | |
usage | |
exit 1 | |
;; | |
esac | |
done | |
shift $(($OPTIND - 1)) | |
PROJECT="$1" | |
PROJECT_GROUP="$PROJECT" | |
PROJECT_LEAD_GROUP="$PROJECT Lead" | |
READONLY_GROUP="Non-Interactive Users" | |
if [ -z $PROJECT ]; then | |
usage | |
exit 1 | |
fi | |
$GERRIT ls-projects | grep -q $PROJECT | |
if [ $? -eq 0 ]; then | |
echo "Błąd: Projekt $PROJECT już istnieje" | |
exit 1 | |
fi | |
cd $TEMP | |
if [ -z "$DO_NOT_CREATE_GROUPS" ]; then | |
echo "[+] Tworze grupe '$PROJECT_LEAD_GROUP'" | |
$GERRIT create-group "'$PROJECT_LEAD_GROUP'" | |
echo "[+] Tworze grupe '$PROJECT_GROUP'" | |
$GERRIT create-group "$PROJECT_GROUP" -o "'$PROJECT_LEAD_GROUP'" -g "'$PROJECT_LEAD_GROUP'" | |
else | |
if ! $GERRIT ls-groups | grep -q -e "^$PROJECT_GROUP$"; then | |
echo "Błąd: Grupa '$PROJECT' nie istnieje." | |
exit 1 | |
fi | |
if ! $GERRIT ls-groups | grep -q -e "^$PROJECT_LEAD_GROUP$"; then | |
echo "Błąd: Grupa '$PROJECT_LEAD_GROUP' nie istnieje." | |
exit 1 | |
fi | |
fi | |
if ! $GERRIT ls-groups | grep -q -e "^$READONLY_GROUP$"; then | |
echo "Błąd: Grupa '$READONLY_GROUP' nie istnieje." | |
exit 1 | |
fi | |
GERRIT_CREATE_PROJECT_OPTS="" | |
if [ -z "$CREATE_EMPTY_COMMIT" ]; then | |
GERRIT_CREATE_PROJECT_OPTS="--empty-commit" | |
fi | |
echo "[+] Tworze projekt $PROJECT" | |
$GERRIT create-project $GERRIT_CREATE_PROJECT_OPTS $PROJECT | |
git clone ssh://${HOST}:${PORT}/$PROJECT | |
cd $PROJECT | |
git fetch origin refs/meta/config:refs/remotes/origin/meta/config | |
git checkout meta/config | |
cat <<EOF > project.config | |
[project] | |
state = active | |
[access "refs/*"] | |
read = group $READONLY_GROUP | |
read = group $PROJECT_GROUP | |
create = group $PROJECT_LEAD_GROUP | |
forgeAuthor = group $PROJECT_LEAD_GROUP | |
pushTag = group $PROJECT_GROUP | |
owner = group $PROJECT_LEAD_GROUP | |
[access "refs/for/*"] | |
push = group $PROJECT_GROUP | |
pushMerge = group $PROJECT_GROUP | |
[access "refs/heads/*"] | |
label-Code-Review = -2..+2 group $PROJECT_GROUP | |
label-Verified = -1..+1 group $READONLY_GROUP | |
label-Verified = -1..+1 group $PROJECT_LEAD_GROUP | |
rebase = group $PROJECT_GROUP | |
submit = group $PROJECT_LEAD_GROUP | |
EOF | |
cat <<EOF > groups | |
# UUID Group Name | |
# | |
EOF | |
$GERRIT ls-groups -v -q "'$PROJECT_GROUP'" | awk -F'\t' '{print $2, "\t", $1}' >> groups | |
$GERRIT ls-groups -v -q "'$PROJECT_LEAD_GROUP'" | awk -F'\t' '{print $2, "\t", $1}' >> groups | |
$GERRIT ls-groups -v -q "'$READONLY_GROUP'" | awk -F'\t' '{print $2, "\t", $1}' >> groups | |
git add project.config groups | |
git commit -a -m 'Initial project configuration.' | |
git push origin meta/config:meta/config |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment