mirror of
https://github.com/gabrie30/ghorg.git
synced 2025-08-10 00:07:12 +02:00
353 lines
15 KiB
Bash
Executable File
353 lines
15 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -ex
|
|
|
|
TOKEN=${1:-'password'}
|
|
GITLAB_URL=${2:-'http://gitlab.example.com'}
|
|
LOCAL_GITLAB_GHORG_DIR=${3:-"${HOME}/Desktop/ghorg"}
|
|
|
|
export GHORG_INSECURE_GITLAB_CLIENT=true
|
|
|
|
############ ############
|
|
############ CLONE AND TEST ALL-GROUPS PRESERVING DIRECTORY STRUCTURE ############
|
|
############ ############
|
|
|
|
# run twice, once for clone then pull
|
|
ghorg clone all-groups --scm=gitlab --base-url="${GITLAB_URL}" --token="$TOKEN" --preserve-dir --output-dir=local-gitlab-v15-repos
|
|
ghorg clone all-groups --scm=gitlab --base-url="${GITLAB_URL}" --token="$TOKEN" --preserve-dir --output-dir=local-gitlab-v15-repos
|
|
|
|
GOT=$( ghorg ls local-gitlab-v15-repos/local-gitlab-group1 | grep -o 'local-gitlab-v15-repos/local-gitlab-group1.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-v15-repos/local-gitlab-group1/baz0
|
|
local-gitlab-v15-repos/local-gitlab-group1/baz1
|
|
local-gitlab-v15-repos/local-gitlab-group1/baz2
|
|
local-gitlab-v15-repos/local-gitlab-group1/baz3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "ALL_GROUPS GROUP1 PRESERVE DIR TEST FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
GOT=$( ghorg ls local-gitlab-v15-repos/local-gitlab-group2 | grep -o 'local-gitlab-v15-repos/local-gitlab-group2.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-v15-repos/local-gitlab-group2/baz0
|
|
local-gitlab-v15-repos/local-gitlab-group2/baz1
|
|
local-gitlab-v15-repos/local-gitlab-group2/baz2
|
|
local-gitlab-v15-repos/local-gitlab-group2/baz3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "ALL_GROUPS GROUP2 PRESERVE DIR TEST FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
GOT=$( ghorg ls local-gitlab-v15-repos/local-gitlab-group3/subgroup-a | grep -o 'local-gitlab-v15-repos/local-gitlab-group3/subgroup-a.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-v15-repos/local-gitlab-group3/subgroup-a/subgroup-b
|
|
local-gitlab-v15-repos/local-gitlab-group3/subgroup-a/subgroup_a_repo_0
|
|
local-gitlab-v15-repos/local-gitlab-group3/subgroup-a/subgroup_a_repo_1
|
|
local-gitlab-v15-repos/local-gitlab-group3/subgroup-a/subgroup_a_repo_2
|
|
local-gitlab-v15-repos/local-gitlab-group3/subgroup-a/subgroup_a_repo_3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "ALL_GROUPS GROUP3/SUBGROUP-A PRESERVE DIR TEST FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
############ ############
|
|
############ CLONE AND TEST ALL-GROUPS ############
|
|
############ ############
|
|
|
|
ghorg clone all-groups --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-repos-flat
|
|
ghorg clone all-groups --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-repos-flat
|
|
|
|
GOT=$( ghorg ls local-gitlab-v15-repos-flat | grep -o 'local-gitlab-v15-repos-flat.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-v15-repos-flat/Monitoring
|
|
local-gitlab-v15-repos-flat/local-gitlab-group1_baz0
|
|
local-gitlab-v15-repos-flat/local-gitlab-group1_baz1
|
|
local-gitlab-v15-repos-flat/local-gitlab-group1_baz2
|
|
local-gitlab-v15-repos-flat/local-gitlab-group1_baz3
|
|
local-gitlab-v15-repos-flat/local-gitlab-group2_baz0
|
|
local-gitlab-v15-repos-flat/local-gitlab-group2_baz1
|
|
local-gitlab-v15-repos-flat/local-gitlab-group2_baz2
|
|
local-gitlab-v15-repos-flat/local-gitlab-group2_baz3
|
|
local-gitlab-v15-repos-flat/subgroup_a_repo_0
|
|
local-gitlab-v15-repos-flat/subgroup_a_repo_1
|
|
local-gitlab-v15-repos-flat/subgroup_a_repo_2
|
|
local-gitlab-v15-repos-flat/subgroup_a_repo_3
|
|
local-gitlab-v15-repos-flat/subgroup_b_repo_0
|
|
local-gitlab-v15-repos-flat/subgroup_b_repo_1
|
|
local-gitlab-v15-repos-flat/subgroup_b_repo_2
|
|
local-gitlab-v15-repos-flat/subgroup_b_repo_3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "ALL_GROUPS FLAT TEST FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
ghorg clone root --clone-type=user --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-root-user-repos --prune --prune-no-confirm
|
|
ghorg clone root --clone-type=user --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-root-user-repos --prune --prune-no-confirm
|
|
|
|
ghorg clone all-groups --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --backup --clone-wiki --output-dir=local-gitlab-v15-backup
|
|
ghorg clone all-groups --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --backup --clone-wiki --output-dir=local-gitlab-v15-backup
|
|
|
|
ghorg clone local-gitlab-group1 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --backup --output-dir=local-gitlab-v15-group1-backup
|
|
ghorg clone local-gitlab-group1 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --backup --output-dir=local-gitlab-v15-group1-backup
|
|
|
|
ghorg clone local-gitlab-group1 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-group1
|
|
ghorg clone local-gitlab-group1 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-group1
|
|
|
|
############ ############
|
|
############ CLONE AND TEST GROUP WITH SUBGROUP AND PRESERVE DIR ############
|
|
############ ############
|
|
|
|
ghorg clone local-gitlab-group3 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --preserve-dir --output-dir=local-gitlab-v15-group3-preserve
|
|
ghorg clone local-gitlab-group3 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --preserve-dir --output-dir=local-gitlab-v15-group3-preserve
|
|
|
|
GOT=$(ghorg ls local-gitlab-v15-group3-preserve/local-gitlab-group3/subgroup-a | grep -o 'local-gitlab-v15-group3-preserve/local-gitlab-group3/subgroup-a.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-v15-group3-preserve/local-gitlab-group3/subgroup-a/subgroup-b
|
|
local-gitlab-v15-group3-preserve/local-gitlab-group3/subgroup-a/subgroup_a_repo_0
|
|
local-gitlab-v15-group3-preserve/local-gitlab-group3/subgroup-a/subgroup_a_repo_1
|
|
local-gitlab-v15-group3-preserve/local-gitlab-group3/subgroup-a/subgroup_a_repo_2
|
|
local-gitlab-v15-group3-preserve/local-gitlab-group3/subgroup-a/subgroup_a_repo_3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "TEST GROUP WITH SUBGROUP AND PRESERVE DIR TEST FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
############ ############
|
|
############ CLONE AND TEST GROUP WITH SUBGROUP WITHOUT PRESERVE DIR ############
|
|
############ ###########
|
|
|
|
ghorg clone local-gitlab-group3 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-group3
|
|
ghorg clone local-gitlab-group3 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-group3
|
|
|
|
GOT=$(ghorg ls local-gitlab-v15-group3 | grep -o 'local-gitlab-v15-group3.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-v15-group3/subgroup_a_repo_0
|
|
local-gitlab-v15-group3/subgroup_a_repo_1
|
|
local-gitlab-v15-group3/subgroup_a_repo_2
|
|
local-gitlab-v15-group3/subgroup_a_repo_3
|
|
local-gitlab-v15-group3/subgroup_b_repo_0
|
|
local-gitlab-v15-group3/subgroup_b_repo_1
|
|
local-gitlab-v15-group3/subgroup_b_repo_2
|
|
local-gitlab-v15-group3/subgroup_b_repo_3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "TEST GROUP WITH SUBGROUP AND PRESERVE DIR TEST FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
############ ############
|
|
############ CLONE AND TEST GROUP WITH SUBGROUP WITH PRESERVE DIR NO OUTPUT DIR ############
|
|
############ ###########
|
|
|
|
ghorg clone local-gitlab-group3 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --preserve-dir
|
|
ghorg clone local-gitlab-group3 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --preserve-dir
|
|
|
|
GOT=$(ghorg ls local-gitlab-group3/subgroup-a | grep -o 'local-gitlab-group3/subgroup-a.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-group3/subgroup-a/subgroup-b
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_0
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_1
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_2
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "TEST GROUP WITH SUBGROUP WITH PRESERVE DIR NO OUTPUT DIR FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf "${LOCAL_GITLAB_GHORG_DIR}"/local-gitlab-group3
|
|
|
|
############ ############
|
|
############ CLONE AND TEST SUBGROUP WITH NESTED SUBGROUP WITH NO PRESERVE DIR NO OUTPUT DIR ############
|
|
############ ###########
|
|
|
|
ghorg clone local-gitlab-group3/subgroup-a --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}"
|
|
ghorg clone local-gitlab-group3/subgroup-a --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}"
|
|
|
|
GOT=$(ghorg ls local-gitlab-group3/subgroup-a | grep -o 'local-gitlab-group3/subgroup-a.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_0
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_1
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_2
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_3
|
|
local-gitlab-group3/subgroup-a/subgroup_b_repo_0
|
|
local-gitlab-group3/subgroup-a/subgroup_b_repo_1
|
|
local-gitlab-group3/subgroup-a/subgroup_b_repo_2
|
|
local-gitlab-group3/subgroup-a/subgroup_b_repo_3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "TEST SUBGROUP WITH NESTED SUBGROUP WITH NO PRESERVE DIR NO OUTPUT DIR FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf "${LOCAL_GITLAB_GHORG_DIR}"/local-gitlab-group3
|
|
|
|
############ ############
|
|
############ CLONE AND TEST SUBGROUP WITH NESTED SUBGROUP WITH PRESERVE DIR NO OUTPUT DIR ############
|
|
############ ###########
|
|
|
|
ghorg clone local-gitlab-group3/subgroup-a --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --preserve-dir
|
|
ghorg clone local-gitlab-group3/subgroup-a --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --preserve-dir
|
|
|
|
GOT=$(ghorg ls local-gitlab-group3/subgroup-a | grep -o 'local-gitlab-group3/subgroup-a.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-group3/subgroup-a/subgroup-b
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_0
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_1
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_2
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "TEST SUBGROUP WITH NESTED SUBGROUP WITH PRESERVE DIR NO OUTPUT DIR FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf "${LOCAL_GITLAB_GHORG_DIR}"/local-gitlab-group3
|
|
|
|
############ ############
|
|
############ CLONE AND TEST GROUP WITH SUBGROUP WITH PRESERVE AND OUTPUT DIR ############
|
|
############ ############
|
|
|
|
ghorg clone local-gitlab-group3 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --preserve-dir --output-dir=local-gitlab-group3-opd
|
|
ghorg clone local-gitlab-group3 --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --preserve-dir --output-dir=local-gitlab-group3-opd
|
|
|
|
GOT=$(ghorg ls local-gitlab-group3-opd/local-gitlab-group3/subgroup-a | grep -o 'local-gitlab-group3/subgroup-a.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-group3/subgroup-a/subgroup-b
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_0
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_1
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_2
|
|
local-gitlab-group3/subgroup-a/subgroup_a_repo_3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "TEST GROUP WITH SUBGROUP WITH PRESERVE AND OUTPUT DIR FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
############ ############
|
|
############ CLONE AND TEST SUBGROUP AND PRESERVE DIR ############
|
|
############ ###########
|
|
|
|
ghorg clone local-gitlab-group3/subgroup-a --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --preserve-dir --output-dir=local-gitlab-v15-group3-subgroup-a-preserve
|
|
ghorg clone local-gitlab-group3/subgroup-a --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --preserve-dir --output-dir=local-gitlab-v15-group3-subgroup-a-preserve
|
|
|
|
GOT=$(ghorg ls local-gitlab-v15-group3-subgroup-a-preserve/local-gitlab-group3/subgroup-a | grep -o 'local-gitlab-v15-group3-subgroup-a-preserve/local-gitlab-group3.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-v15-group3-subgroup-a-preserve/local-gitlab-group3/subgroup-a/subgroup-b
|
|
local-gitlab-v15-group3-subgroup-a-preserve/local-gitlab-group3/subgroup-a/subgroup_a_repo_0
|
|
local-gitlab-v15-group3-subgroup-a-preserve/local-gitlab-group3/subgroup-a/subgroup_a_repo_1
|
|
local-gitlab-v15-group3-subgroup-a-preserve/local-gitlab-group3/subgroup-a/subgroup_a_repo_2
|
|
local-gitlab-v15-group3-subgroup-a-preserve/local-gitlab-group3/subgroup-a/subgroup_a_repo_3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "TEST SUBGROUP AND PRESERVE DIR FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
############ ############
|
|
############ CLONE AND TEST SUBGROUP WITHOUT PRESERVE DIR ############
|
|
############ ############
|
|
|
|
ghorg clone local-gitlab-group3/subgroup-a --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-group3-subgroup-a
|
|
ghorg clone local-gitlab-group3/subgroup-a --scm=gitlab --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-group3-subgroup-a
|
|
|
|
GOT=$(ghorg ls local-gitlab-v15-group3-subgroup-a | grep -o 'local-gitlab-v15-group3-subgroup-a.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-v15-group3-subgroup-a/subgroup_a_repo_0
|
|
local-gitlab-v15-group3-subgroup-a/subgroup_a_repo_1
|
|
local-gitlab-v15-group3-subgroup-a/subgroup_a_repo_2
|
|
local-gitlab-v15-group3-subgroup-a/subgroup_a_repo_3
|
|
local-gitlab-v15-group3-subgroup-a/subgroup_b_repo_0
|
|
local-gitlab-v15-group3-subgroup-a/subgroup_b_repo_1
|
|
local-gitlab-v15-group3-subgroup-a/subgroup_b_repo_2
|
|
local-gitlab-v15-group3-subgroup-a/subgroup_b_repo_3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "TEST SUBGROUP WITHOUT PRESERVE DIR FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
############ ############
|
|
############ CLONE AND TEST ALL-USERS PRESERVING DIRECTORY STRUCTURE ############
|
|
############ ############
|
|
|
|
ghorg clone all-users --scm=gitlab --clone-type=user --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-all-users-preserve --preserve-dir
|
|
|
|
GOT=$(ghorg ls local-gitlab-v15-all-users-preserve/root | grep -o 'local-gitlab-v15-all-users-preserve/root.*')
|
|
WANT=$(cat <<EOF
|
|
local-gitlab-v15-all-users-preserve/root/rootrepos0
|
|
local-gitlab-v15-all-users-preserve/root/rootrepos1
|
|
local-gitlab-v15-all-users-preserve/root/rootrepos2
|
|
local-gitlab-v15-all-users-preserve/root/rootrepos3
|
|
EOF
|
|
)
|
|
|
|
if [ "${WANT}" != "${GOT}" ]
|
|
then
|
|
echo "ALL_USERS PRESERVE DIR TEST FAILED"
|
|
exit 1
|
|
fi
|
|
|
|
############ ############
|
|
############ CLONE AND TEST ALL-USERS ############
|
|
############ ############
|
|
|
|
ghorg clone all-users --scm=gitlab --clone-type=user --base-url="${GITLAB_URL}" --token="${TOKEN}" --output-dir=local-gitlab-v15-all-users
|
|
|
|
TEST_ALL_USERS_GOT=$(ghorg ls local-gitlab-v15-all-users | grep -o 'local-gitlab-v15-all-users.*')
|
|
TEST_ALL_USERS_WANT=$(cat <<EOF
|
|
local-gitlab-v15-all-users/rootrepos0
|
|
local-gitlab-v15-all-users/rootrepos1
|
|
local-gitlab-v15-all-users/rootrepos2
|
|
local-gitlab-v15-all-users/rootrepos3
|
|
EOF
|
|
)
|
|
|
|
if [ "${TEST_ALL_USERS_WANT}" != "${TEST_ALL_USERS_GOT}" ]
|
|
then
|
|
echo "ALL_USERS TEST FAILED"
|
|
exit 1
|
|
fi
|