#!/usr/bin/env bash function addExtensions() { local extensions=${1} if [[ ${EXTENSIONS} == "" ]] then EXTENSIONS="${extensions}" else EXTENSIONS="${EXTENSIONS},${extensions}" fi } function createQuarkusProject() { # GIT_API=${GIT_API:-https://api.github.com/user/repos} # GIT_KEYS=${GIT_KEYS:-${HOME}/.git_token} EXTENSIONS="" BASE_EXTENSIONS="resteasy-reactive-jackson,rest-client-reactive-jackson,smallrye-health,config-yaml" GITEA="false" QUARKUS_VERSION="" for i in "$@" do case $i in -a=*|--app=*) APP_NAME="${i#*=}" ;; -g=*|--group-id=*) GROUP_ID="${i#*=}" ;; -q=*|--quarkus-ver=*) QUARKUS_VERSION="--platform-bom=io.quarkus.platform:quarkus-bom:${i#*=}.Final" ;; -x=*|--extensions=*) addExtensions "${i#*=}" ;; -j=*|--java=*) JAVA_VER="${i#*=}" ;; -b|--base) addExtensions "${BASE_EXTENSIONS}" # -u=*|--git-url=*) # GIT_URL="${i#*=}" # ;; # -o=*|--git-org=*) # GIT_API="https://api.github.com/orgs/${i#*=}/repos" # ;; esac done JAVA_VER=${JAVA_VER:-17} quarkus create app --maven --java=${JAVA_VER} --no-wrapper --no-code --package-name=${GROUP_ID}.${APP_NAME} --extensions=${EXTENSIONS} ${QUARKUS_VERSION} ${GROUP_ID}:${APP_NAME}:0.1 cd ${APP_NAME} rm README.md touch README.md mkdir -p ./src/test/java/${GROUP_ID//.//}/${APP_NAME} touch ./src/test/java/${GROUP_ID//.//}/.gitkeep mkdir -p ./src/main/java/${GROUP_ID//.//}/${APP_NAME}/{aop,api,dto,collaborators,event,mapper,model,service} touch ./src/main/java/${GROUP_ID//.//}/${APP_NAME}/{aop,api,dto,collaborators,event,mapper,model,service}/.gitkeep git init -b main git add . git commit -m "create repo" cd - } function gitInit(){ # Unused right now. local project=${1} curl -u ${GIT_USER}:${ACCESS_TOKEN} -X POST ${GIT_API} -d "{\"name\":\"${project}\",\"private\":false}" git remote add origin ${GIT_URL}/${project}.git git push -u origin main } function addProperty() { for i in "$@" do case $i in -p=*|--property=*) PROPERTY="${i#*=}" ;; -v=*|--value=*) VALUE="${i#*=}" ;; esac done mv pom.xml pom.xml.tmp yq -p=xml ".project.properties += {\"${PROPERTY}\":\"${VALUE}\"}" pom.xml.tmp | yq -o=xml >> pom.xml rm pom.xml.tmp } function addDependency() { for i in "$@" do case $i in -g=*|--groupid=*) GROUP_ID="${i#*=}" ;; -a=*|--artifactid=*) ARTIFACT_ID="${i#*=}" ;; -v=*|--version=*) VERSION="${i#*=}" ;; esac done mv pom.xml pom.xml.tmp yq -p=xml ".project.dependencies.dependency += [{\"groupId\":\"${GROUP_ID}\",\"artifactId\":\"${ARTIFACT_ID}\",\"version\":\"${VERSION}\"}]" pom.xml.tmp | yq -o=xml >> pom.xml rm pom.xml.tmp } function printHelp() { echo "Usage:" echo " code --create [-b] -a= -g= [-q=] [-x= -v=" echo " The --property subcommand adds a property to your pom.xml" echo " code --dependency -g= -a= -v=" echo " The --dependency subcommand adds a new dependency to your pom.xml" } for i in "$@" do case $i in --create) createQuarkusProject "$@" ;; --property) addProperty "$@" ;; --dependency) addDependency "$@" ;; --help) printHelp ;; esac done