#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" BACKEND_DIR="${ROOT_DIR}/../water-backend/sw-business-bank" SERVER_DIR="${BACKEND_DIR}/sw-business-bank-server" CP_FILE="/tmp/sw-business-bank-server.cp" MODE="${1:-}" if [[ -z "${MODE}" ]]; then echo "Usage: $0 [sample-file]" exit 1 fi SAMPLE_FILE="${2:-${ROOT_DIR}/infra/docker/bank-transfer-test/tmp/sample.txt}" if [[ ! -f "${SAMPLE_FILE}" ]]; then echo "Sample file not found: ${SAMPLE_FILE}" exit 1 fi case "${MODE}" in sftp) MAIN_CLASS="cn.com.emsoft.sw.bankbusiness.tools.BankTransferSftpSmokeCli" PORT="2222" SEND_DIR="/upload/{companyId}" REMOTE_FILE="smoke-cli-sample.txt" DOWNLOAD_TARGET="${ROOT_DIR}/infra/docker/bank-transfer-test/tmp/sftp-smoke-download-smoke-cli-sample.txt" BATCH_NO="SMOKE010" ;; ftp) MAIN_CLASS="cn.com.emsoft.sw.bankbusiness.tools.BankTransferFtpSmokeCli" PORT="2121" SEND_DIR="{companyId}" REMOTE_FILE="smoke-cli-ftp-sample.txt" DOWNLOAD_TARGET="${ROOT_DIR}/infra/docker/bank-transfer-test/tmp/ftp-smoke-download-smoke-cli-sample.txt" BATCH_NO="SMOKE010FTP" ;; *) echo "Unsupported mode: ${MODE}" echo "Usage: $0 [sample-file]" exit 1 ;; esac echo "[1/3] Compile sw-business-bank-server" mvn -f "${BACKEND_DIR}/pom.xml" -pl sw-business-bank-server -am -DskipTests compile echo "[2/3] Build runtime classpath" mvn -f "${SERVER_DIR}/pom.xml" -DincludeScope=runtime dependency:build-classpath -Dmdep.outputFile="${CP_FILE}" echo "[3/3] Run ${MODE^^} smoke" java -cp "$(cat "${CP_FILE}"):${SERVER_DIR}/target/classes" "${MAIN_CLASS}" \ --local-file "${SAMPLE_FILE}" \ --host 127.0.0.1 \ --port "${PORT}" \ --username demo \ --password demo123 \ --send-dir "${SEND_DIR}" \ --company-id C001 \ --channel-code 00001 \ --batch-no "${BATCH_NO}" \ --business-date 2026-03-24 \ --remote-file-name "${REMOTE_FILE}" \ --download-target "${DOWNLOAD_TARGET}"