create-entity-server 0.3.1 → 0.3.4

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.3.1",
3
+ "version": "0.3.4",
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",
@@ -183,6 +183,19 @@ show_port_in_use_message() {
183
183
  fi
184
184
  }
185
185
 
186
+ show_unmanaged_server_message() {
187
+ local port
188
+ port=$(get_server_value "port" "3400")
189
+
190
+ if [ "$LANGUAGE" = "en" ]; then
191
+ echo "ℹ️ A process is using port $port, but it was not started by this project's pid file."
192
+ echo " For safety, run.sh stop does not kill processes based on port match alone."
193
+ else
194
+ echo "ℹ️ 포트 $port 를 사용하는 프로세스가 있지만, 현재 프로젝트의 pid 파일로 시작한 서버가 아닙니다."
195
+ echo " 안전을 위해 run.sh stop 은 포트 일치만으로 프로세스를 종료하지 않습니다."
196
+ fi
197
+ }
198
+
186
199
  stop_pid_with_confirm() {
187
200
  local pid="$1"
188
201
  local reason="$2"
@@ -245,15 +258,9 @@ stop_pid_with_confirm() {
245
258
 
246
259
  stop_server() {
247
260
  if [ ! -f "$PID_FILE" ]; then
248
- local port_pid
249
- port_pid=$(find_pid_by_port)
250
- if [ -n "$port_pid" ]; then
251
- stop_pid_with_confirm "$port_pid" "port fallback"
252
- return $?
253
- fi
254
261
  if is_port_in_use; then
255
- show_port_in_use_message
256
- return 1
262
+ show_unmanaged_server_message
263
+ return 0
257
264
  fi
258
265
  if [ "$LANGUAGE" = "en" ]; then
259
266
  echo "ℹ️ Server is not running (pid file not found)."
@@ -267,11 +274,9 @@ stop_server() {
267
274
  pid=$(cat "$PID_FILE" 2>/dev/null)
268
275
  if [ -z "$pid" ]; then
269
276
  rm -f "$PID_FILE"
270
- local port_pid
271
- port_pid=$(find_pid_by_port)
272
- if [ -n "$port_pid" ]; then
273
- stop_pid_with_confirm "$port_pid" "port fallback"
274
- return $?
277
+ if is_port_in_use; then
278
+ show_unmanaged_server_message
279
+ return 0
275
280
  fi
276
281
  if [ "$LANGUAGE" = "en" ]; then
277
282
  echo "ℹ️ Empty pid file removed."
@@ -283,15 +288,9 @@ stop_server() {
283
288
 
284
289
  if ! kill -0 "$pid" 2>/dev/null; then
285
290
  rm -f "$PID_FILE"
286
- local port_pid
287
- port_pid=$(find_pid_by_port)
288
- if [ -n "$port_pid" ]; then
289
- stop_pid_with_confirm "$port_pid" "port fallback"
290
- return $?
291
- fi
292
291
  if is_port_in_use; then
293
- show_port_in_use_message
294
- return 1
292
+ show_unmanaged_server_message
293
+ return 0
295
294
  fi
296
295
  if [ "$LANGUAGE" = "en" ]; then
297
296
  echo "ℹ️ Stale pid file removed (process not found)."
@@ -372,6 +371,22 @@ if [ $# -eq 0 ]; then
372
371
  echo " $0 stop # 서버 중지"
373
372
  echo " $0 status # 상태 조회"
374
373
  fi
374
+
375
+ echo ""
376
+ if [ -f "$SERVER_CONFIG" ] && [ -f "$DATABASE_CONFIG" ] && [ -f "$SERVER_BIN" ]; then
377
+ if [ "$LANGUAGE" = "en" ]; then
378
+ echo "Current status:"
379
+ else
380
+ echo "현재 상태:"
381
+ fi
382
+ show_status
383
+ else
384
+ if [ "$LANGUAGE" = "en" ]; then
385
+ echo "Current status: unavailable (missing config or server binary)"
386
+ else
387
+ echo "현재 상태: 확인 불가 (설정 파일 또는 서버 바이너리 없음)"
388
+ fi
389
+ fi
375
390
  exit 0
376
391
  fi
377
392
 
@@ -38,36 +38,6 @@ load_namespace() {
38
38
 
39
39
  load_namespace
40
40
 
41
- show_help() {
42
- if [ "$LANGUAGE" = "en" ]; then
43
- echo "Install systemd service for Entity Server"
44
- echo "========================================"
45
- echo ""
46
- echo "Usage: $0 [options]"
47
- echo ""
48
- echo "Options:"
49
- echo " --user=<user> Service run user (default: project owner)"
50
- echo " --group=<group> Service run group (default: user's primary group)"
51
- echo " --no-start Enable only, do not start immediately"
52
- echo ""
53
- echo "Service name is auto-generated as '<namespace>-entity-server'."
54
- echo "Run without arguments to enter interactive mode."
55
- else
56
- echo "Entity Server systemd 서비스 등록"
57
- echo "==============================="
58
- echo ""
59
- echo "사용법: $0 [옵션]"
60
- echo ""
61
- echo "옵션:"
62
- echo " --user=<사용자> 실행 사용자 (기본값: 프로젝트 소유자)"
63
- echo " --group=<그룹> 실행 그룹 (기본값: 사용자 기본 그룹)"
64
- echo " --no-start enable만 수행, 즉시 start 하지 않음"
65
- echo ""
66
- echo "서비스명은 '<namespace>-entity-server' 형식으로 자동 생성됩니다."
67
- echo "인수 없이 실행하면 인터랙티브 모드로 진입합니다."
68
- fi
69
- }
70
-
71
41
  if [ $# -eq 0 ]; then
72
42
  INTERACTIVE=true
73
43
  fi
@@ -223,4 +193,4 @@ else
223
193
  echo " 시작: sudo systemctl start $SERVICE_NAME"
224
194
  echo " 중지: sudo systemctl stop $SERVICE_NAME"
225
195
  echo " 상태: sudo systemctl status $SERVICE_NAME"
226
- fi
196
+ fi
@@ -32,26 +32,6 @@ load_namespace() {
32
32
 
33
33
  load_namespace
34
34
 
35
- show_help() {
36
- if [ "$LANGUAGE" = "en" ]; then
37
- echo "Remove systemd service for Entity Server"
38
- echo "======================================="
39
- echo ""
40
- echo "Usage: $0 [options]"
41
- echo ""
42
- echo "Service name is auto-generated as '<namespace>-entity-server'."
43
- echo "Run without arguments to enter interactive mode."
44
- else
45
- echo "Entity Server systemd 서비스 제거"
46
- echo "==============================="
47
- echo ""
48
- echo "사용법: $0"
49
- echo ""
50
- echo "서비스명은 '<namespace>-entity-server' 형식으로 자동 생성됩니다."
51
- echo "인수 없이 실행하면 인터랙티브 모드로 진입합니다."
52
- fi
53
- }
54
-
55
35
  if [ $# -eq 0 ]; then
56
36
  INTERACTIVE=true
57
37
  fi
@@ -123,13 +103,13 @@ if [ ! -f "$UNIT_PATH" ] && [ "$SERVICE_EXISTS" = false ]; then
123
103
  echo " Nothing to remove."
124
104
  echo ""
125
105
  echo " To register the service, run:"
126
- echo " sudo $(dirname "$0")/install-systemd.sh"
106
+ echo " sudo $(dirname "$0")/service-install.sh"
127
107
  else
128
108
  echo "ℹ️ '$SERVICE_NAME' 서비스가 등록되어 있지 않습니다."
129
109
  echo " 제거할 항목이 없습니다."
130
110
  echo ""
131
111
  echo " 서비스를 등록하려면:"
132
- echo " sudo $(dirname "$0")/install-systemd.sh"
112
+ echo " sudo $(dirname "$0")/service-install.sh"
133
113
  fi
134
114
  exit 0
135
115
  fi
@@ -149,10 +129,10 @@ if [ "$LANGUAGE" = "en" ]; then
149
129
  echo "✅ Service removed: $SERVICE_NAME"
150
130
  echo ""
151
131
  echo " To re-register the service, run:"
152
- echo " sudo $(dirname "$0")/install-systemd.sh"
132
+ echo " sudo $(dirname "$0")/service-install.sh"
153
133
  else
154
134
  echo "✅ 서비스 제거 완료: $SERVICE_NAME"
155
135
  echo ""
156
136
  echo " 서비스를 다시 등록하려면:"
157
- echo " sudo $(dirname "$0")/install-systemd.sh"
158
- fi
137
+ echo " sudo $(dirname "$0")/service-install.sh"
138
+ fi
@@ -1,8 +1,7 @@
1
1
  # update-server.ps1 — entity-server / entity-cli 바이너리 및 파일 업데이트
2
2
  #
3
3
  # 사용법:
4
- # .\scripts\update-server.ps1 # 도움말
5
- # .\scripts\update-server.ps1 version # 현재 버전 + 최신 버전 확인
4
+ # .\scripts\update-server.ps1 # 도움말 + 현재 버전 + 최신 버전 확인
6
5
  # .\scripts\update-server.ps1 latest # 최신 버전으로 업데이트
7
6
  # .\scripts\update-server.ps1 1.5.0 # 특정 버전으로 업데이트
8
7
  #
@@ -106,6 +105,21 @@ function Get-LatestVer {
106
105
  }
107
106
  }
108
107
 
108
+ function Show-VersionStatus {
109
+ Write-Host "🔍 버전 확인 중..."
110
+ $Current = Get-CurrentVer
111
+ $Latest = Get-LatestVer
112
+ Write-Host ""
113
+ Write-Host " 현재 버전: v$Current"
114
+ Write-Host " 최신 버전: v$Latest"
115
+ Write-Host ""
116
+ if ($Current -eq $Latest) {
117
+ Write-Host "✅ 최신 버전입니다."
118
+ } else {
119
+ Write-Host "💡 업데이트 가능: .\scripts\update-server.ps1 latest"
120
+ }
121
+ }
122
+
109
123
  # ── 설치 ──────────────────────────────────────────────────────────────────────
110
124
 
111
125
  function Install-Version([string]$TargetVer) {
@@ -149,6 +163,18 @@ function Install-Version([string]$TargetVer) {
149
163
  Write-Host " 서버를 재시작하면 새 버전이 적용됩니다."
150
164
  }
151
165
 
166
+ function Sync-ScriptsDir([string]$Src, [string]$Dest) {
167
+ if (Test-Path $Dest) {
168
+ Remove-Item -Recurse -Force $Dest
169
+ }
170
+ New-Item -ItemType Directory -Path $Dest | Out-Null
171
+
172
+ $Scripts = Get-ChildItem -Path $Src -Filter *.ps1 -File -ErrorAction SilentlyContinue
173
+ foreach ($Script in $Scripts) {
174
+ Copy-Item -Force $Script.FullName (Join-Path $Dest $Script.Name)
175
+ }
176
+ }
177
+
152
178
  # ── dist 파일 업데이트 (scripts / samples) ──────────────────────────────────
153
179
 
154
180
  function Install-Dist([string]$TargetVer) {
@@ -213,10 +239,14 @@ function Install-Dist([string]$TargetVer) {
213
239
  $Src = Join-Path $SrcRoot $Dir
214
240
  $Dest = Join-Path $ProjectRoot $Dir
215
241
  if (Test-Path $Src) {
216
- if (Test-Path $Dest) {
217
- Remove-Item -Recurse -Force $Dest
242
+ if ($Dir -eq "scripts") {
243
+ Sync-ScriptsDir $Src $Dest
244
+ } else {
245
+ if (Test-Path $Dest) {
246
+ Remove-Item -Recurse -Force $Dest
247
+ }
248
+ Copy-Item -Recurse -Force $Src $Dest
218
249
  }
219
- Copy-Item -Recurse -Force $Src $Dest
220
250
  Write-Host (" ✔ {0,-20}" -f ("$Dir/"))
221
251
  } else {
222
252
  Write-Host (" – {0,-20} (릴리스에 없음, 스킵)" -f ("$Dir/"))
@@ -234,7 +264,6 @@ switch ($Action) {
234
264
  Write-Host "update-server.ps1 — entity-server / entity-cli 바이너리 및 파일 업데이트"
235
265
  Write-Host ""
236
266
  Write-Host "사용법:"
237
- Write-Host " .\scripts\update-server.ps1 version 현재 버전 + 최신 버전 확인"
238
267
  Write-Host " .\scripts\update-server.ps1 latest 최신 버전으로 업데이트"
239
268
  Write-Host " .\scripts\update-server.ps1 <버전> 특정 버전으로 업데이트"
240
269
  Write-Host ""
@@ -244,23 +273,10 @@ switch ($Action) {
244
273
  Write-Host " 제외 configs/ entities/ docs/ (local 설정 보존)"
245
274
  Write-Host ""
246
275
  Write-Host "예시:"
247
- Write-Host " .\scripts\update-server.ps1 version"
248
276
  Write-Host " .\scripts\update-server.ps1 latest"
249
277
  Write-Host " .\scripts\update-server.ps1 1.5.0"
250
- }
251
- "version" {
252
- Write-Host "🔍 버전 확인 중..."
253
- $Current = Get-CurrentVer
254
- $Latest = Get-LatestVer
255
278
  Write-Host ""
256
- Write-Host " 현재 버전: v$Current"
257
- Write-Host " 최신 버전: v$Latest"
258
- Write-Host ""
259
- if ($Current -eq $Latest) {
260
- Write-Host "✅ 최신 버전입니다."
261
- } else {
262
- Write-Host "💡 업데이트 가능: .\scripts\update-server.ps1 latest"
263
- }
279
+ Show-VersionStatus
264
280
  }
265
281
  "latest" {
266
282
  Write-Host "🔍 최신 버전 확인 중..."
@@ -2,8 +2,7 @@
2
2
  # update-server.sh — entity-server / entity-cli 바이너리 및 파일 업데이트
3
3
  #
4
4
  # 사용법:
5
- # ./scripts/update-server.sh # 도움말
6
- # ./scripts/update-server.sh version # 현재 버전 + 최신 버전 확인
5
+ # ./scripts/update-server.sh # 도움말 + 현재 버전 + 최신 버전 확인
7
6
  # ./scripts/update-server.sh latest # 최신 버전으로 업데이트
8
7
  # ./scripts/update-server.sh 1.5.0 # 특정 버전으로 업데이트
9
8
  #
@@ -140,6 +139,24 @@ _latest_ver() {
140
139
  echo "$ver"
141
140
  }
142
141
 
142
+ _print_version_status() {
143
+ local current latest
144
+
145
+ echo "🔍 버전 확인 중..."
146
+ current="$(_current_ver)"
147
+ latest="$(_latest_ver)"
148
+
149
+ echo ""
150
+ echo " 현재 버전: v${current}"
151
+ echo " 최신 버전: v${latest}"
152
+ echo ""
153
+ if [ "$current" = "$latest" ]; then
154
+ echo "✅ 최신 버전입니다."
155
+ else
156
+ echo "💡 업데이트 가능: ./scripts/update-server.sh latest"
157
+ fi
158
+ }
159
+
143
160
  # ── 다운로드 ──────────────────────────────────────────────────────────────────
144
161
 
145
162
  _download() {
@@ -177,6 +194,26 @@ _download_plain() {
177
194
  mv "$tmp" "$dest"
178
195
  }
179
196
 
197
+ _sync_scripts_dir() {
198
+ local src="$1"
199
+ local dest="$2"
200
+
201
+ rm -rf "$dest"
202
+ mkdir -p "$dest"
203
+
204
+ local copied=0
205
+ for script in "$src"/*.sh; do
206
+ [ -f "$script" ] || continue
207
+ cp "$script" "$dest/"
208
+ chmod +x "$dest/$(basename "$script")"
209
+ copied=1
210
+ done
211
+
212
+ if [ "$copied" -eq 0 ]; then
213
+ rmdir "$dest" 2>/dev/null || true
214
+ fi
215
+ }
216
+
180
217
  _install() {
181
218
  local target_ver="${1#v}" # v 접두사 제거
182
219
  local current_ver
@@ -270,8 +307,12 @@ _install_dist() {
270
307
  local src="${src_root}/${DIR}"
271
308
  local dest="${PROJECT_ROOT}/${DIR}"
272
309
  if [ -d "$src" ]; then
273
- rm -rf "$dest"
274
- cp -r "$src" "$dest"
310
+ if [ "$DIR" = "scripts" ]; then
311
+ _sync_scripts_dir "$src" "$dest"
312
+ else
313
+ rm -rf "$dest"
314
+ cp -r "$src" "$dest"
315
+ fi
275
316
  printf " ✔ %-20s\n" "${DIR}/"
276
317
  else
277
318
  printf " – %-20s (릴리스에 없음, 스킵)\n" "${DIR}/"
@@ -290,7 +331,6 @@ case "$ARG" in
290
331
  echo "update-server.sh — entity-server / entity-cli 바이너리 및 파일 업데이트"
291
332
  echo ""
292
333
  echo "사용법:"
293
- echo " ./scripts/update-server.sh version 현재 버전 + 최신 버전 확인"
294
334
  echo " ./scripts/update-server.sh latest 최신 버전으로 업데이트"
295
335
  echo " ./scripts/update-server.sh <버전> 특정 버전으로 업데이트"
296
336
  echo ""
@@ -300,24 +340,10 @@ case "$ARG" in
300
340
  echo " 제외 configs/ entities/ docs/ (local 설정 보존)"
301
341
  echo ""
302
342
  echo "예시:"
303
- echo " ./scripts/update-server.sh version"
304
343
  echo " ./scripts/update-server.sh latest"
305
344
  echo " ./scripts/update-server.sh 1.5.0"
306
- ;;
307
-
308
- "version")
309
- echo "🔍 버전 확인 중..."
310
- CURRENT="$(_current_ver)"
311
- LATEST="$(_latest_ver)"
312
- echo ""
313
- echo " 현재 버전: v${CURRENT}"
314
- echo " 최신 버전: v${LATEST}"
315
345
  echo ""
316
- if [ "$CURRENT" = "$LATEST" ]; then
317
- echo "✅ 최신 버전입니다."
318
- else
319
- echo "💡 업데이트 가능: ./scripts/update-server.sh latest"
320
- fi
346
+ _print_version_status
321
347
  ;;
322
348
 
323
349
  "latest")