Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 20 additions & 11 deletions api/gitlab-bash-api.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,12 @@
#
# Last version is available on GitHub: https://github.com/cClaude/gitlab-bash-api
#
declare LF
LF="
"
declare -r LF
chr() {
printf \\$(printf '%03o' $1)
}

declare CR
CR="$(echo -e "\r")"
declare -r CR
declare -r LF=$(chr "10")
declare -r CR=$(chr "13")

NEXT_PAGE='*'

Expand All @@ -32,7 +30,7 @@ function gitlab_get_page {
local curl_url="${GITLAB_URL_PREFIX}/api/${GITLAB_API_VERSION}/${api_url}?page=${page}&per_page=${PER_PAGE_MAX}&${api_params}"
local curl_result

curl_result=$(curl --include --silent --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" "${curl_url}")
curl_result=$(curl --include --silent --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" "${curl_url}" ${client_certificate})
local curl_rc=$?

if [ $curl_rc -ne 0 ]; then
Expand Down Expand Up @@ -110,7 +108,7 @@ function gitlab_post {
local curl_url="${GITLAB_URL_PREFIX}/api/${GITLAB_API_VERSION}/${api_url}?per_page=${PER_PAGE_MAX}&${api_params}"
local curl_result

curl_result=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X POST --silent "${curl_url}")
curl_result=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X POST --silent "${curl_url}" ${client_certificate})
local curl_rc=$?

if [ $curl_rc -ne 0 ]; then
Expand All @@ -131,7 +129,7 @@ function gitlab_put {
local curl_url="${GITLAB_URL_PREFIX}/api/${GITLAB_API_VERSION}/${api_url}?per_page=${PER_PAGE_MAX}&${api_params}"
local curl_result

curl_result=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X PUT --silent "${curl_url}")
curl_result=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X PUT --silent "${curl_url}" ${client_certificate})
local curl_rc=$?

if [ $curl_rc -ne 0 ]; then
Expand All @@ -152,7 +150,7 @@ function gitlab_delete {
local curl_url="${GITLAB_URL_PREFIX}/api/${GITLAB_API_VERSION}/${api_url}?per_page=${PER_PAGE_MAX}&${api_params}"
local curl_result

curl_result=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X DELETE --silent "${curl_url}")
curl_result=$(curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X DELETE --silent "${curl_url}" ${client_certificate})
local curl_rc=$?

if [ $curl_rc -ne 0 ]; then
Expand Down Expand Up @@ -398,3 +396,14 @@ if [ -z "${PER_PAGE_MAX}" ]; then
# Max value for GitLab is 100
PER_PAGE_MAX=50
fi

#prepare client_certificate part of CURL
if [ -n ${GITLAB_CLIENT_CERTIFICATE} ]; then
client_certificate=" --cert ${GITLAB_CLIENT_CERTIFICATE}"
if [ ! -n ${GITLAB_CLIENT_CERTIFICATE_PASSWORD} ]; then
client_certificate+=":${GITLAB_CLIENT_CERTIFICATE_PASSWORD}"
fi
client_certificate+=" --key ${GITLAB_PRIVATE_KEY}"
else
client_certificate=""
fi
5 changes: 5 additions & 0 deletions custom-config-sample/my-secrets-configuration.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,8 @@ GITLAB_PRIVATE_TOKEN=__YOUR_GITLAB_TOKEN_HERE__
#GITLAB_USER=__YOUR_GIT_USER__
#GITLAB_PASSWORD=$(url_encode '__YOUR_GIT_USER_PASSWORD__')
#GITLAB_CLONE_HTTP_PREFIX="https://${GITLAB_USER}:${GITLAB_PASSWORD}@${GITLAB_URL_PREFIX#"https://"}"

# If client certificate is needed for HTTPS communication with GitLab server
#GITLAB_CLIENT_CERTIFICATE=__PATH_TO_YOUR_CLIENT_CERTIFICATE__
#GITLAB_CLIENT_CERTIFICATE_PASSWORD=__PASSWORD_FOR_YOUR_CLIENT_CERTIFICATE__
#GITLAB_PRIVATE_KEY=__PATH_TO_YOUR_PRIVATE_KEY__