#!/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