Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects

Draft: Resolve "fix: export all don't export projects"

Open Christophe Chaudier requested to merge 39-fix-export-all-don-t-export-projects into master
1 file
+ 24
20
Compare changes
  • Side-by-side
  • Inline
+ 24
20
@@ -130,6 +130,7 @@ _load_config() {
mygb_tmp_dir=${backup_dir}/${mygb_date}
mygb_file="${backup_dir}/mygb_${mygb_date}.tgz"
mkdir -p "${mygb_tmp_dir}"
projects_exported_list="${mygb_tmp_dir}/projects_exported_list.txt"
if [[ ${export_archived} == false ]]; then
archived_filter="&archived=false"
@@ -204,6 +205,18 @@ _get_projects_from_group() {
done
}
_nb_of_projects_page() {
_api GET "projects?per_page=${API_PER_PAGE}${archived_filter}${owned_filter}" --head \
| grep 'x-total-pages'| cut -d ':' -f 2 | tr -d "[:space:]"
}
_get_projects() {
total_projects_pages=$(_nb_of_projects_page)
for (( page=1; page<=total_projects_pages; page++ )); do
_api GET "projects?per_page=${API_PER_PAGE}&page=${page}${archived_filter}${owned_filter}" | jq -r '.[].path_with_namespace'
done
}
_get_project_infos() {
project_infos="$(_get_export_filename project "${project}").json"
_api GET "projects/${project_url_encoded}" | jq > "${project_infos}"
@@ -267,6 +280,7 @@ _export_project() {
_dry_run _schedule_project_export
_dry_run _wait_export_finished
_dry_run _download_project_export
echo "${project}" >> "${projects_exported_list}"
((nb_projects_exported++))
fi
}
@@ -308,12 +322,10 @@ _export_group() {
_dry_run _download_group_export
((nb_groups_exported++))
if [[ ${export_all} == false ]]; then
projects=$(_get_projects_from_group)
for project in ${projects}; do
_export_project
done
fi
projects=$(_get_projects_from_group)
for project in ${projects}; do
_export_project
done
fi
}
@@ -329,18 +341,6 @@ _get_groups() {
done
}
_nb_of_projects_page() {
_api GET "projects?per_page=${API_PER_PAGE}${archived_filter}${owned_filter}" --head \
| grep 'x-total-pages'| cut -d ':' -f 2 | tr -d "[:space:]"
}
_get_projects() {
total_projects_pages=$(_nb_of_projects_page)
for (( page=1; page<=total_projects_pages; page++ )); do
_api GET "projects?per_page=${API_PER_PAGE}&page=${page}${archived_filter}${owned_filter}" | jq -r '.[].path'
done
}
_export_all(){
if [[ ${export_all} == true ]]; then
echo "Export all my groups and projects"
@@ -350,10 +350,14 @@ _export_all(){
done
curent_user_id="$(_get_curent_user_id)"
# on Gitlab.com we want only owned project
if [[ "${gitlab_url}" == "https://gitlab.com/" ]]; then
owned_filter="&owned=true"
fi
for project in $(_get_projects); do
_export_project
# export the project only if is not already exported
grep -q "${project}" "${projects_exported_list}" || _export_project
done
fi
}
Loading