infra/services/hydra/create-declarative-project.sh

48 lines
1.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
#
# Usage example
# URL=http://localhost:3000 ./create-declarative-project.sh
set -euo pipefail
HYDRA_ADMIN_USERNAME=${HYDRA_ADMIN_USERNAME:-admin}
HYDRA_ADMIN_PASSWORD=${HYDRA_ADMIN_PASSWORD:-admin}
URL=${URL:-http://localhost:3000}
DECL_FILE=${DECL_FILE:-"spec.json"}
DECL_TYPE=${DECL_TYPE:-"git"}
DECL_VALUE=${DECL_VALUE:-"https://github.com/shlevy/declarative-hydra-example"}
DECL_PROJECT_NAME=${DECL_PROJECT_NAME:-"example"}
DECL_DISPLAY_NAME=${DECL_DISPLAY_NAME:-"An example project"}
DECL_DESCRIPTION=${DECL_DESCRIPTION:-""}
DECL_HOMEPAGE=${DECL_HOMEPAGE:-""}
mycurl() {
curl --fail --referer "${URL}" -H "Accept: application/json" -H "Content-Type: application/json" "$@"
}
echo "Logging to $URL with user $HYDRA_ADMIN_USERNAME"
cat >data.json <<EOF
{ "username": "$HYDRA_ADMIN_USERNAME", "password": "$HYDRA_ADMIN_PASSWORD" }
EOF
mycurl -X POST -d '@data.json' "$URL/login" -c hydra-cookie.txt
echo -e "\nCreating project:"
cat >data.json <<EOF
{
"displayname":"$DECL_DISPLAY_NAME",
"description":"$DECL_DESCRIPTION",
"homepage":"$DECL_HOMEPAGE",
"enabled":"1",
"visible":"1",
"declarative": {
"file": "$DECL_FILE",
"type":"$DECL_TYPE",
"value":"$DECL_VALUE"
}
}
EOF
cat data.json
mycurl --silent -X PUT "$URL/project/$DECL_PROJECT_NAME" -d @data.json -b hydra-cookie.txt
rm -f data.json hydra-cookie.txt