-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit-micros.sh
More file actions
126 lines (102 loc) · 3.32 KB
/
init-micros.sh
File metadata and controls
126 lines (102 loc) · 3.32 KB
1
2
3
4
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
91
92
93
94
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
#!/usr/bin/env bash
set -euo pipefail
echo "Init for Quarkus micro service with hexagonal architecture"
echo
read -rp "Name? (use project name possibly) : " MICROS_NAME
if [[ -z "${MICROS_NAME}" ]]; then
echo "! The name must have a value"
exit 1
fi
read -rp "Define groupId (es. org.acme) : " GROUP_ID
if [[ -z "${GROUP_ID}" ]]; then
echo "! groupId is mandatory"
exit 1
fi
DEFAULT_BASE_PACKAGE="${GROUP_ID}.$(echo "${MICROS_NAME}" | tr '-' '.')"
read -rp "Base package [${DEFAULT_BASE_PACKAGE}] (press enter) : " BASE_PACKAGE
BASE_PACKAGE="${BASE_PACKAGE:-$DEFAULT_BASE_PACKAGE}"
echo
echo "summary info:"
echo " MICROS_NAME = ${MICROS_NAME}"
echo " GROUP_ID = ${GROUP_ID}"
echo " BASE_PACK = ${BASE_PACKAGE}"
echo
read -rp "Proceed? [y/N] :" CONFIRM
if [[ "${CONFIRM}" != "y" && "${CONFIRM}" != "Y" ]]; then
echo "wrong digit"
exit 0
fi
# START BONUS-STEP - sed cross-platform by chatGPT (idk if actually work)
if [[ "$OSTYPE" == "darwin"* ]]; then
SED_INPLACE=(sed -i '')
else
SED_INPLACE=(sed -i)
fi
escape_sed() {
# escape / e .
printf '%s' "$1" | sed 's/[\/&]/\\&/g'
}
ESC_MICROS_NAME=$(escape_sed "${MICROS_NAME}")
ESC_GROUP_ID=$(escape_sed "${GROUP_ID}")
ESC_BASE_PACKAGE=$(escape_sed "${BASE_PACKAGE}")
echo "Replace placeholder..."
echo
# END BONUS STEP from chatGPT
FILES=$(find . \
-type f \
! -path "*/.git/*" \
! -path "*/target/*" \
! -name "init-micros.sh" \
\( -name "*.java" -o \
-name "*.xml" -o \
-name "*.properties" -o \
-name "*.yml" -o \
-name "*.yaml" -o \
-name "*.md" -o \
-name "pom.xml" \))
if [[ -z "${FILES}" ]]; then
echo "No files found to replace, please check script if work correctly"
else
echo "__MICROS_TEMPLATE__ replacing"
"${SED_INPLACE[@]}" "s/__MICROS_TEMPLATE__/${ESC_MICROS_NAME}/g" ${FILES}
echo "__GROUP_ID__ replacing"
"${SED_INPLACE[@]}" "s/__GROUP_ID__/${ESC_GROUP_ID}/g" ${FILES}
echo "__BASE_PACKAGE__ replacing"
"${SED_INPLACE[@]}" "s/__BASE_PACKAGE__/${ESC_BASE_PACKAGE}/g" ${FILES}
fi
echo
echo "Renaming module directory"
rename_if_exists() {
local OLD="$1"
local NEW="$2"
if [[ -d "${OLD}" ]]; then
mv "${OLD}" "${NEW}"
echo " ${OLD} -> ${NEW} "
fi
}
rename_if_exists "__MICROS_TEMPLATE__-domain" "${MICROS_NAME}-domain"
rename_if_exists "__MICROS_TEMPLATE__-application" "${MICROS_NAME}-application"
rename_if_exists "__MICROS_TEMPLATE__-inbound-adapter" "${MICROS_NAME}-inbound-adapter"
rename_if_exists "__MICROS_TEMPLATE__-outbound-adapter" "${MICROS_NAME}-outbound-adapter"
rename_if_exists "__MICROS_TEMPLATE__-boot" "${MICROS_NAME}-boot"
echo
echo "Rename directory base package Java"
DIR_PATH="${BASE_PACKAGE//./\/}"
while IFS= read -r DIR; do
PARENT_DIR="$(dirname "$DIR")"
TARGET_DIR="${PARENT_DIR}/${DIR_PATH}"
mkdir -p "${PARENT_DIR}"
mkdir -p "$(dirname "${TARGET_DIR}")"
mv "$DIR" "$TARGET_DIR"
echo " ${DIR} -> ${TARGET_DIR}"
done < <(find . -type d -name "__BASE_PACKAGE__")
echo
echo "New micro service initialized"
echo "Next step:"
echo " - Rename root directory with '__MICROS_TEMPLATE__' in '${MICROS_NAME}' "
echo " - Run: ./mvnw clean install from terminal "
echo " - Run: quarkus:dev from ${MICROS_NAME}-boot:"
echo " cd ${MICROS_NAME}-boot"
echo " ../mvnw quarkus:dev"
echo
echo " - Start programming your fresh new micro service with hexagonal architecture"