From 43f5de4849dacfd0bfd1354380a902c783dd6e70 Mon Sep 17 00:00:00 2001 From: Christophe Chaudier <christophe@lydra.fr> Date: Fri, 21 May 2021 17:47:08 +0200 Subject: [PATCH] feat: add export of one project --- mygb.sh | 53 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/mygb.sh b/mygb.sh index 09521d4..4a978ff 100755 --- a/mygb.sh +++ b/mygb.sh @@ -114,6 +114,8 @@ _get_project_info() { _api GET "projects/${project_url_encoded}" | jq } +# ---[ Export Project ]--- + _schedule_project_export() { _api POST "projects/${project_url_encoded}/export" | jq | grep --silent "202 Accepted" \ || _fail "Can't schedule export for project [${project}]" @@ -137,12 +139,54 @@ _download_project_export() { ls -l "${export_filename}" } +_export_project() { + if [[ -n ${project} ]]; then + _schedule_project_export + _wait_export_finished + _download_project_export + fi +} + +# ---[ Export Group ]--- + +_schedule_group_export() { + _api POST "groups/${group_url_encoded}/export" | jq | grep --silent "202 Accepted" \ + || _fail "Can't schedule export for group [${group}]" +} + +_group_export_status() { + _api GET "groups/${group_url_encoded}/export/download" | jq -r '.message' | grep 404 \ + || echo finished +} + +_wait_group_finished() { + while [[ "$(_group_export_status)" != "finished" ]]; do + echo "Waiting end of export ..." + sleep ${WAITING_TIME} + done +} + +_download_group_export() { + export_filename="${group/\//-}_$(date +"%Y%m%d_%H%M")_export.tar.gz" + _api GET "group/${group_url_encoded}/export/download" "-o ${export_filename}" + echo "The group was exported :" + ls -l "${export_filename}" +} + +_export_group() { + if [[ -n ${group} ]]; then + _schedule_group_export + _wait_group_finished + _download_group_export + fi +} + _export() { _load_config - _schedule_project_export - _wait_export_finished - _download_project_export + _export_project + _export_group + _succed "Export done" } @@ -163,13 +207,14 @@ main() { case "${flag}" in c) config_file=${OPTARG} ;; p) project=${OPTARG} ;; - g) groups=${OPTARG} ;; + g) group=${OPTARG} ;; a) export_all=true ;; h | *) _help ;; esac done project_url_encoded="${project/\//%2F}" + group_url_encoded="${group/\//%2F}" case "${action}" in init) _create_config ;; -- GitLab