create-entity-server 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-entity-server",
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "description": "Create a new entity-server project in one command — like create-react-app or create-vite.",
5
5
  "keywords": [
6
6
  "entity-server",
@@ -18,7 +18,7 @@ JWT_SECRET=your-jwt-secret-here
18
18
  # 비워두면 암호화 비활성화. 설정 시 충분한 길이의 랜덤 문자열 권장.
19
19
  # BACKUP_ENCRYPT_KEY=your-backup-encryption-key-here
20
20
 
21
- # Database values (database.json의 ${ENV_VAR}와 매핑)
21
+ # 개발 환경 DB 설정 (database.json의 ${ENV_VAR}와 매핑)
22
22
  DB_HOST_DEVELOPMENT=127.0.0.1
23
23
  DB_PORT_DEVELOPMENT=3306
24
24
  DB_NAME_DEVELOPMENT=your-development-db-name
@@ -30,6 +30,35 @@ if [ -f .env ]; then
30
30
  fi
31
31
  LANGUAGE=${LANGUAGE:-ko}
32
32
 
33
+ warn_running_server_reload_needed() {
34
+ local run_pid_file="$PROJECT_ROOT/.run/entity-server.pid"
35
+ local server_pid=""
36
+
37
+ if [ -f "$run_pid_file" ]; then
38
+ server_pid=$(cat "$run_pid_file" 2>/dev/null || true)
39
+ fi
40
+
41
+ if [ -n "$server_pid" ] && kill -0 "$server_pid" 2>/dev/null; then
42
+ echo ""
43
+ echo "=================================================="
44
+ if [ "$LANGUAGE" = "en" ]; then
45
+ echo "⚠️ Entity Server is still running with the previous in-memory API key map."
46
+ echo " CLI reset-all updates the DB only, so restart the server before using the new API key:"
47
+ echo ""
48
+ echo " ./scripts/run.sh stop"
49
+ echo " ./scripts/run.sh start"
50
+ else
51
+ echo "⚠️ Entity Server가 이전 메모리 API 키 맵으로 계속 실행 중입니다."
52
+ echo " CLI reset-all 은 DB만 갱신하므로, 새 API 키를 사용하기 전에 서버를 재시작해야 합니다:"
53
+ echo ""
54
+ echo " ./scripts/run.sh stop"
55
+ echo " ./scripts/run.sh start"
56
+ fi
57
+ echo "=================================================="
58
+ echo ""
59
+ fi
60
+ }
61
+
33
62
  get_env_value() {
34
63
  local key="$1"
35
64
  local value="${!key}"
@@ -196,6 +225,8 @@ case "$1" in
196
225
  NEW_HMAC=$(echo "$API_KEY_OUTPUT" | grep -E '^hmac_secret' | awk '{print $NF}' || true)
197
226
 
198
227
  if [ -n "$NEW_API_KEY" ] && [ -n "$NEW_HMAC" ]; then
228
+ warn_running_server_reload_needed
229
+
199
230
  # 게이트웨이 .env 자동 업데이트 (개발 환경: entity-app-server/ 폴더가 같은 레벨에 있을 때만)
200
231
  GW_DIR="$(dirname "$PROJECT_ROOT")/entity-app-server"
201
232
  GW_ENV="$GW_DIR/.env"
@@ -258,8 +258,14 @@ stop_pid_with_confirm() {
258
258
 
259
259
  stop_server() {
260
260
  if [ ! -f "$PID_FILE" ]; then
261
+ local port_pid
262
+ port_pid=$(find_pid_by_port)
263
+ if [ -n "$port_pid" ] && kill -0 "$port_pid" 2>/dev/null; then
264
+ stop_pid_with_confirm "$port_pid" "port"
265
+ return $?
266
+ fi
261
267
  if is_port_in_use; then
262
- show_unmanaged_server_message
268
+ show_port_in_use_message
263
269
  return 0
264
270
  fi
265
271
  if [ "$LANGUAGE" = "en" ]; then
@@ -274,8 +280,14 @@ stop_server() {
274
280
  pid=$(cat "$PID_FILE" 2>/dev/null)
275
281
  if [ -z "$pid" ]; then
276
282
  rm -f "$PID_FILE"
283
+ local port_pid
284
+ port_pid=$(find_pid_by_port)
285
+ if [ -n "$port_pid" ] && kill -0 "$port_pid" 2>/dev/null; then
286
+ stop_pid_with_confirm "$port_pid" "port"
287
+ return $?
288
+ fi
277
289
  if is_port_in_use; then
278
- show_unmanaged_server_message
290
+ show_port_in_use_message
279
291
  return 0
280
292
  fi
281
293
  if [ "$LANGUAGE" = "en" ]; then
@@ -288,14 +300,24 @@ stop_server() {
288
300
 
289
301
  if ! kill -0 "$pid" 2>/dev/null; then
290
302
  rm -f "$PID_FILE"
303
+ local port_pid
304
+ port_pid=$(find_pid_by_port)
305
+ if [ -n "$port_pid" ] && kill -0 "$port_pid" 2>/dev/null; then
306
+ stop_pid_with_confirm "$port_pid" "port"
307
+ return $?
308
+ fi
291
309
  if is_port_in_use; then
292
- show_unmanaged_server_message
310
+ show_port_in_use_message
293
311
  return 0
294
312
  fi
295
313
  if [ "$LANGUAGE" = "en" ]; then
296
- echo "ℹ️ Stale pid file removed (process not found)."
314
+ echo "ℹ️ Server process already exited (stale pid file removed)."
315
+ echo " Last log ($STDOUT_LOG):"
316
+ tail -5 "$STDOUT_LOG" 2>/dev/null | sed 's/^/ /'
297
317
  else
298
- echo "ℹ️ 실행 중인 프로세스가 없어 stale pid 파일을 정리했습니다."
318
+ echo "ℹ️ 서버 프로세스가 이미 종료되어 있습니다 (stale pid 파일 정리됨)."
319
+ echo " 최근 로그 ($STDOUT_LOG):"
320
+ tail -5 "$STDOUT_LOG" 2>/dev/null | sed 's/^/ /'
299
321
  fi
300
322
  return 0
301
323
  fi
@@ -422,7 +444,6 @@ fi
422
444
  case "$MODE" in
423
445
  dev|development)
424
446
  if is_running; then
425
- local running_pid
426
447
  running_pid=$(find_pid_by_port)
427
448
  if [ -n "$running_pid" ]; then
428
449
  if [ "$LANGUAGE" = "en" ]; then
@@ -443,7 +464,6 @@ case "$MODE" in
443
464
 
444
465
  start)
445
466
  if is_running; then
446
- local running_pid
447
467
  running_pid=$(find_pid_by_port)
448
468
  if [ -n "$running_pid" ]; then
449
469
  if [ "$LANGUAGE" = "en" ]; then
@@ -462,11 +482,24 @@ case "$MODE" in
462
482
  SERVER_PID=$!
463
483
  echo "$SERVER_PID" > "$PID_FILE"
464
484
 
465
- sleep 0.3
466
- if kill -0 "$SERVER_PID" 2>/dev/null; then
485
+ # 포트가 실제로 Listen 상태가 될 때까지 최대 5초 대기 (25 × 0.2s)
486
+ start_ok=0
487
+ for _ in $(seq 1 25); do
488
+ sleep 0.2
489
+ if ! kill -0 "$SERVER_PID" 2>/dev/null; then
490
+ break # 프로세스 사망
491
+ fi
492
+ if is_port_in_use; then
493
+ start_ok=1
494
+ break
495
+ fi
496
+ done
497
+
498
+ if [ "$start_ok" -eq 1 ]; then
467
499
  if [ "$LANGUAGE" = "en" ]; then
468
500
  echo "✅ Entity Server started in background (pid: $SERVER_PID)"
469
501
  echo "Status: ./run.sh status"
502
+ echo "Stop: ./run.sh stop"
470
503
  else
471
504
  echo "✅ Entity Server가 백그라운드에서 시작되었습니다 (pid: $SERVER_PID)"
472
505
  echo "상태: ./run.sh status"
@@ -476,10 +509,12 @@ case "$MODE" in
476
509
  rm -f "$PID_FILE"
477
510
  if [ "$LANGUAGE" = "en" ]; then
478
511
  echo "❌ Failed to start Entity Server in background"
479
- echo "Check logs: $STDOUT_LOG"
512
+ echo "Last log ($STDOUT_LOG):"
513
+ tail -20 "$STDOUT_LOG" 2>/dev/null | sed 's/^/ /'
480
514
  else
481
515
  echo "❌ Entity Server 백그라운드 시작에 실패했습니다"
482
- echo "로그 확인: $STDOUT_LOG"
516
+ echo "최근 로그 ($STDOUT_LOG):"
517
+ tail -20 "$STDOUT_LOG" 2>/dev/null | sed 's/^/ /'
483
518
  fi
484
519
  exit 1
485
520
  fi