yjcli 0.2.1__tar.gz → 0.2.2__tar.gz

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.
Files changed (63) hide show
  1. {yjcli-0.2.1 → yjcli-0.2.2}/PKG-INFO +2 -2
  2. {yjcli-0.2.1 → yjcli-0.2.2}/pyproject.toml +1 -1
  3. yjcli-0.2.2/src/yjcli/data/templates/platform/scripts/run-all.ps1 +46 -0
  4. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/scripts/run.bat +2 -16
  5. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/scripts/run.sh +20 -4
  6. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/services/scaffold.py +1 -0
  7. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/services/sync.py +1 -1
  8. {yjcli-0.2.1 → yjcli-0.2.2}/.gitignore +0 -0
  9. {yjcli-0.2.1 → yjcli-0.2.2}/LICENSE +0 -0
  10. {yjcli-0.2.1 → yjcli-0.2.2}/README.md +0 -0
  11. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/__init__.py +0 -0
  12. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/__main__.py +0 -0
  13. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/cli.py +0 -0
  14. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/commands/__init__.py +0 -0
  15. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/commands/init_cmd.py +0 -0
  16. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/commands/platform.py +0 -0
  17. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/commands/service.py +0 -0
  18. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/commands/sync.py +0 -0
  19. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/__init__.py +0 -0
  20. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/skills/yj-arch-core/SKILL.md +0 -0
  21. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/skills/yj-backend-msa/SKILL.md +0 -0
  22. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/skills/yj-backend-service/SKILL.md +0 -0
  23. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/skills/yj-browser-extension/SKILL.md +0 -0
  24. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/skills/yj-cli/SKILL.md +0 -0
  25. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/skills/yj-frontend/SKILL.md +0 -0
  26. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/skills/yj-mobile-app/SKILL.md +0 -0
  27. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/skills/yj-pc-app/SKILL.md +0 -0
  28. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/skills/yj-scheduler/SKILL.md +0 -0
  29. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/.gitignore +0 -0
  30. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/AGENTS.md +0 -0
  31. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/Diff.md +0 -0
  32. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/Makefile +0 -0
  33. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/TOOLS.md +0 -0
  34. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/make.bat +0 -0
  35. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/app/.env.development +0 -0
  36. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/app/.env.examples +0 -0
  37. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/app/.env.local-dev +0 -0
  38. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/app/.env.production +0 -0
  39. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/listen/.env.development +0 -0
  40. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/listen/.env.examples +0 -0
  41. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/listen/.env.local-dev +0 -0
  42. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/listen/.env.production +0 -0
  43. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/worker/.env.development +0 -0
  44. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/worker/.env.examples +0 -0
  45. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/worker/.env.local-dev +0 -0
  46. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/envs/worker/.env.production +0 -0
  47. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/frontend/package.json +0 -0
  48. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/frontend/vite.config.ts +0 -0
  49. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/scripts/deploy-common.bat +0 -0
  50. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/scripts/deploy-common.sh +0 -0
  51. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/scripts/deploy-development.bat +0 -0
  52. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/scripts/deploy-development.sh +0 -0
  53. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/scripts/deploy-production.bat +0 -0
  54. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/platform/scripts/deploy-production.sh +0 -0
  55. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/data/templates/settings.json +0 -0
  56. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/modules/__init__.py +0 -0
  57. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/modules/constants.py +0 -0
  58. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/modules/fsutil.py +0 -0
  59. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/modules/paths.py +0 -0
  60. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/modules/prompt.py +0 -0
  61. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/services/__init__.py +0 -0
  62. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/services/status.py +0 -0
  63. {yjcli-0.2.1 → yjcli-0.2.2}/src/yjcli/services/wiring.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: yjcli
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Scaffold platforms, services, and AI agent wiring (Cursor/Claude/Codex) for YJ architecture repos.
5
5
  Project-URL: Homepage, https://github.com/yseiren87/yjcli
6
6
  Project-URL: Repository, https://github.com/yseiren87/yjcli
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "yjcli"
3
- version = "0.2.1"
3
+ version = "0.2.2"
4
4
  description = "Scaffold platforms, services, and AI agent wiring (Cursor/Claude/Codex) for YJ architecture repos."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -0,0 +1,46 @@
1
+ $ErrorActionPreference = "Stop"
2
+
3
+ $platformDir = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
4
+ $services = Get-ChildItem -Path $platformDir -Directory |
5
+ Where-Object {
6
+ $_.Name -notin @("scripts", "proto") -and
7
+ (Test-Path (Join-Path $_.FullName ".env.local-dev"))
8
+ } |
9
+ Sort-Object Name
10
+
11
+ if (-not $services) {
12
+ Write-Host "no services under $platformDir (run: yjcli service add)"
13
+ exit 1
14
+ }
15
+
16
+ $processes = @()
17
+ $exitCode = 0
18
+ try {
19
+ foreach ($service in $services) {
20
+ Write-Host "starting $($service.Name)"
21
+ $command = "call scripts\run.bat `"$($service.Name)`""
22
+ $processes += Start-Process `
23
+ -FilePath $env:ComSpec `
24
+ -ArgumentList @("/d", "/c", $command) `
25
+ -WorkingDirectory $platformDir `
26
+ -NoNewWindow `
27
+ -PassThru
28
+ }
29
+
30
+ Write-Host "All services are running. Press Ctrl+C to stop them all."
31
+ while ($processes.Where({ -not $_.HasExited }).Count -gt 0) {
32
+ Start-Sleep -Milliseconds 250
33
+ }
34
+ if ($processes.Where({ $_.ExitCode -ne 0 }).Count -gt 0) {
35
+ $exitCode = 1
36
+ }
37
+ }
38
+ finally {
39
+ foreach ($process in $processes) {
40
+ if (-not $process.HasExited) {
41
+ & taskkill.exe /PID $process.Id /T /F *> $null
42
+ }
43
+ }
44
+ }
45
+
46
+ exit $exitCode
@@ -58,22 +58,8 @@ call !RUN_COMMAND! %*
58
58
  exit /b %ERRORLEVEL%
59
59
 
60
60
  :run_all
61
- set "ANY="
62
- for /d %%D in (*) do (
63
- if /I not "%%~nxD"=="scripts" if /I not "%%~nxD"=="proto" (
64
- if exist "%%D\.env.local-dev" (
65
- echo starting %%~nxD
66
- start "%%~nxD" cmd /c "cd /d "%PLATFORM_DIR%" && call scripts\run.bat %%~nxD"
67
- set "ANY=1"
68
- )
69
- )
70
- )
71
- if not defined ANY (
72
- echo no services under %PLATFORM_DIR% ^(run: yjcli service add^)
73
- exit /b 1
74
- )
75
- echo All services started in separate windows.
76
- exit /b 0
61
+ powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File "%~dp0run-all.ps1"
62
+ exit /b %ERRORLEVEL%
77
63
 
78
64
  :kill_by_port
79
65
  set "KPORT=%~1"
@@ -101,13 +101,24 @@ run_one() {
101
101
  kill_by_pidfile "$PID_FILE"
102
102
 
103
103
  start_and_track() {
104
+ # Give the repository command its own process group. Killing only the
105
+ # wrapper PID leaves descendants (for example npm -> node) running.
106
+ set -m
104
107
  "$@" &
105
108
  local pid=$!
109
+ set +m
106
110
  echo "$pid" >"$PID_FILE"
107
111
  echo "[$NAME] started pid $pid (tracked in $PID_FILE)"
108
- trap 'kill "$pid" 2>/dev/null || true; rm -f "$PID_FILE"; exit 130' INT TERM
109
- wait "$pid"
110
- local code=$?
112
+ stop_command() {
113
+ trap - INT TERM
114
+ kill -TERM -- "-$pid" 2>/dev/null || kill "$pid" 2>/dev/null || true
115
+ wait "$pid" 2>/dev/null || true
116
+ rm -f "$PID_FILE"
117
+ exit 130
118
+ }
119
+ trap stop_command INT TERM
120
+ local code=0
121
+ wait "$pid" || code=$?
111
122
  rm -f "$PID_FILE"
112
123
  exit "$code"
113
124
  }
@@ -146,10 +157,15 @@ run_all() {
146
157
  done
147
158
 
148
159
  cleanup() {
160
+ trap - INT TERM
149
161
  local p
150
162
  for p in "${pids[@]}"; do
151
- kill "$p" 2>/dev/null || true
163
+ kill -TERM "$p" 2>/dev/null || true
152
164
  done
165
+ for p in "${pids[@]}"; do
166
+ wait "$p" 2>/dev/null || true
167
+ done
168
+ exit 130
153
169
  }
154
170
  trap cleanup INT TERM
155
171
 
@@ -31,6 +31,7 @@ _DEFAULT_ENV_FILE_NAMES = (
31
31
  _PLATFORM_SCRIPT_NAMES = (
32
32
  "run.sh",
33
33
  "run.bat",
34
+ "run-all.ps1",
34
35
  "deploy-common.sh",
35
36
  "deploy-common.bat",
36
37
  "deploy-development.sh",
@@ -86,7 +86,7 @@ def sync_make(root: Path, *, force: bool = True) -> None:
86
86
  typer.echo("synced: packaged Makefile, make.bat -> repo root")
87
87
 
88
88
  scripts_src = templates / "platform" / "scripts"
89
- managed_names = ("run.sh", "run.bat")
89
+ managed_names = ("run.sh", "run.bat", "run-all.ps1")
90
90
  deploy_names = (
91
91
  "deploy-common.sh",
92
92
  "deploy-common.bat",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes