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 +1 -1
- package/template/scripts/run.sh +36 -21
- package/template/scripts/{install-systemd.sh → service-install.sh} +1 -31
- package/template/scripts/{remove-systemd.sh → service-remove.sh} +5 -25
- package/template/scripts/update-server.ps1 +36 -20
- package/template/scripts/update-server.sh +46 -20
package/package.json
CHANGED
package/template/scripts/run.sh
CHANGED
|
@@ -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
|
-
|
|
256
|
-
return
|
|
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
|
-
|
|
271
|
-
|
|
272
|
-
|
|
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
|
-
|
|
294
|
-
return
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
217
|
-
|
|
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
|
-
|
|
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
|
-
|
|
274
|
-
|
|
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
|
-
|
|
317
|
-
echo "✅ 최신 버전입니다."
|
|
318
|
-
else
|
|
319
|
-
echo "💡 업데이트 가능: ./scripts/update-server.sh latest"
|
|
320
|
-
fi
|
|
346
|
+
_print_version_status
|
|
321
347
|
;;
|
|
322
348
|
|
|
323
349
|
"latest")
|