Newer
Older
#!/bin/bash
# My GiLab Backup (mygb) is a script for backup my GitLab's groups and projects
# Copyright (C) 2021 Christophe Chaudier
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Constant
readonly USAGE='
mygb.sh <command> [options] \n
\n
Command : \n
init : create the configuration file \n
export : export from GitLab \n
import : import to GitLab \n
\n
Options : \n
-h : print help \n
-c path/to/conf : read one config file \n
-p path/to/projet : export the projet \n
-g path/to/group : export the group and is subgroups and projects \n
-a : export all my group and subgroup \n
'
# Vars
config_file='.mygb_config'
export_all=false
_help() {
echo -e "${USAGE}"
exit 1
}
_load_config() {
if [[ -e ${config_file} ]]; then
# shellcheck disable=SC1090
source ${config_file}
else
_create_config
fi
}
_create_config() {
echo "There is no file!"
echo "What is the GitLab URL :"
read -r gitlab_url
echo "What is the GitLab API token :"
read -rs gitlab_api_token
echo "gitlab_url=\"${gitlab_url}\"" >${config_file}
echo "gitlab_api_token=\"${gitlab_api_token}\"" >>${config_file}
echo "The file ${config_file} was created with this content."
echo "Please add the line below on your .gitignore"
echo "${config_file}"
}
main() {
echo "My GitLab Backup"
while getopts c:p:g:ah flag; do
case "${flag}" in
c) config_file=${OPTARG} ;;
p) project=${OPTARG} ;;
g) groups=${OPTARG} ;;
a) export_all=true ;;
h | *) _help ;;
esac
done
_load_config
}
main "$@"