#!/bin/bash
#
#***************************************************************************
# Author: liwanggui
# Email: liwanggui@163.com
# Date: 2023-02-20
# FileName: create-service.sh
# Description: 创建后端程序 service 文件
# Copyright (C): 2023 All rights reserved
#***************************************************************************
#

BASE_PATH=$(dirname $(realpath ${BASH_SOURCE[0]}))
SUFFIX=".service"

### 程序 bootstrap.yml 配置内容替换
### 如果修改程序源码中的配置文件此文件可以留空
## 
cat >/etc/sysconfig/aiwater.conf<<EOF
### nacos 配置
#SPRING_CLOUD_NACOS_CONFIG_NAMESPACE=44c6b09c-d296-4df7-b8d8-e06ba5782dc3
#SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=http://nacos.demo.local:8848
#SPRING_CLOUD_NACOS_CONFIG_GROUP=DEFAULT_GROUP
#SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE=44c6b09c-d296-4df7-b8d8-e06ba5782dc3
#SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR=http://nacos.demo.local:8848
#SPRING_CLOUD_NACOS_DISCOVERY_GROUP=DEFAULT_GROUP

### seata 配置
#SEATA_REGISTRY_TYPE=nacos
#SEATA_REGISTRY_NACOS_CLUSTER=default
#SEATA_REGISTRY_NACOS_GROUP=DEFAULT_GROUP
#SEATA_REGISTRY_NACOS_APPLICATION=seata-server
#SEATA_REGISTRY_NACOS_SERVER_ADDR=http://nacos.demo.local:8848
#SEATA_REGISTRY_NACOS_NAMESPACE=44c6b09c-d296-4df7-b8d8-e06ba5782dc3
#SEATA_CONFIG_TYPE=nacos
#SEATA_CONFIG_NACOS_GROUP=DEFAULT_GROUP
#SEATA_CONFIG_NACOS_SERVER_ADDR=http://nacos.demo.local:8848
#SEATA_CONFIG_NACOS_NAMESPACE=44c6b09c-d296-4df7-b8d8-e06ba5782dc3
#SEATA_CONFIG_NACOS_DATAID=seataServer.properties
EOF


### 如需要添加自定义字符，可以通过传参实现
### 例如参数: hgt  
###     最后 service 文件名为: <服务名>-hgt.service
if [[ -n $1 ]]; then
    SUFFIX="-${1}.service"
fi

cd "$BASE_PATH" || exit 1

[ -d systemd ] &&  mv systemd systemd-$(date +'%Y%m%d%H%M')
mkdir -v systemd

for app in $(cd "${BASE_PATH}/current/"; ls *.jar); do 
    app=${app%.jar}
    SERVICE_NAME=${app}${SUFFIX}

    echo "Create ${BASE_PATH}/systemd/${SERVICE_NAME}"
    cat > ${BASE_PATH}/systemd/${SERVICE_NAME} <<EOF
[Unit]
Description=$app
After=network.target
After=syslog.target

[Service]
Type=simple
User=aiwater
Group=aiwater
EnvironmentFile=-/etc/sysconfig/aiwater.conf
WorkingDirectory=${BASE_PATH}/current
ExecStartPre=/bin/chown -R aiwater.aiwater ${BASE_PATH}
ExecStart=/usr/bin/java -server -Xmx2g -Xms2g -Xmn1g -Xss512k \\
                   -XX:MaxDirectMemorySize=128m \\
                   -XX:+UseG1GC -XX:+UseStringDeduplication \\
                   -XX:-OmitStackTraceInFastThrow \\
                   -XX:+HeapDumpOnOutOfMemoryError \\
                   -XX:HeapDumpPath=${BASE_PATH}/current \\
                   -XX:+PrintGCDetails -Xloggc:${BASE_PATH}/logs/${app}-gc.log \\
                   -jar ${app}.jar
StandardOutput=journal+console
StandardError=journal+console
PermissionsStartOnly=true
SuccessExitStatus=143
Restart=on-failure
RestartSec=15s
PrivateTmp=false

[Install]
WantedBy=multi-user.target
EOF

done
