Newer
Older
#Created by Sam Gleske
#MIT License
#Created Thu Sep 12 16:04:35 EDT 2013
5
6
7
8
9
10
11
12
13
14
15
16
17
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
86
87
88
89
90
#bash option stop on first error
set -e
#Include all user options and dependencies
git_mirrors_dir="$(dirname "${0}")"
cd "${git_mirrors_dir}"
. "config.sh"
. "lib/VERSION"
. "lib/functions.sh"
PROGNAME="${0##*/}"
PROGVERSION="${VERSION}"
#Default script options
project_name=""
quiet=false
#
# ARGUMENT HANDLING
#
usage()
{
cat <<EOF
${PROGNAME} ${PROGVERSION} - MIT License by Sam Gleske
USAGE:
${PROGNAME} --delete PROJECT
DESCRIPTION:
This program deletes a project so that it will no longer be mirrored.
-h,--help Show help
-v,--version Show program version
-d,--delete PROJECT
Deletes a project so it is no longer mirrored.
-q,--quiet Suppress user confirmation messages.
EOF
}
#Short options are one letter. If an argument follows a short opt then put a colon (:) after it
SHORTOPTS="hvd:q"
LONGOPTS="help,version,delete:,quiet"
ARGS=$(getopt -s bash --options "${SHORTOPTS}" --longoptions "${LONGOPTS}" --name "${PROGNAME}" -- "$@")
eval set -- "$ARGS"
while true; do
case $1 in
-h|--help)
usage
exit 1
;;
-v|--version)
echo "${PROGNAME} ${PROGVERSION}"
exit 1
;;
-d|--delete)
project_name="${2}"
shift 2
;;
-q|--quiet)
quiet=true
shift
;;
--)
shift
break
;;
*)
shift
;;
esac
done
#
# Program functions
#
function preflight() {
STATUS=0
if [ -z "${project_name}" ];then
red_echo -n "Must specify " 1>&2
yellow_echo -n "--delete" 1>&2
red_echo " option." 1>&2
STATUS=1
elif [ ! -e "${repo_dir}/${gitlab_namespace}/${project_name}" ];then
yellow_echo -n "${repo_dir}/${gitlab_namespace}/${project_name}" 1>&2
echo " does not exist." 1>&2
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
fi
return ${STATUS}
}
#
# Main execution
#
#Run a preflight check on options for compatibility.
if ! preflight;then
echo "Command aborted due to previous errors." 1>&2
exit 1
fi
if ! ${quiet};then
echo -n "Will DELETE "
red_echo "${repo_dir}/${gitlab_namespace}/${project_name}"
echo
echo -n "Are you sure you wish to delete project "
yellow_echo -n "${gitlab_namespace}/${project_name}"
echo -n "? (y/N): "
read ans
echo
#convert upper case to lower case
ans="$(echo "${ans}" | tr '[A-Z]' '[a-z]')"
if [ ! "${ans}" = "y" -a ! "${ans}" = "yes" ];then
echo "User aborted operation." 1>&2
exit 1
fi
fi
rm -rf "${repo_dir}/${gitlab_namespace}/${project_name}"
green_echo -n "DELETED" 1>&2
echo " ${repo_dir}/${gitlab_namespace}/${project_name}" 1>&2
echo 1>&2
yellow_echo -n "**NOTE**:" 1>&2
echo " You must log into the GitLab web interface in order to delete the project from GitLab!" 1>&2