yjcli 0.3.1__tar.gz → 0.3.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 (75) hide show
  1. {yjcli-0.3.1 → yjcli-0.3.2}/PKG-INFO +6 -6
  2. {yjcli-0.3.1 → yjcli-0.3.2}/README.md +5 -5
  3. {yjcli-0.3.1 → yjcli-0.3.2}/pyproject.toml +1 -1
  4. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/cli.py +19 -12
  5. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/ui/summary.py +1 -1
  6. {yjcli-0.3.1 → yjcli-0.3.2}/.gitignore +0 -0
  7. {yjcli-0.3.1 → yjcli-0.3.2}/LICENSE +0 -0
  8. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/__init__.py +0 -0
  9. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/__main__.py +0 -0
  10. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/catalog/__init__.py +0 -0
  11. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/catalog/llms.py +0 -0
  12. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/catalog/platforms.py +0 -0
  13. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/catalog/plugins.py +0 -0
  14. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/catalog/skills.py +0 -0
  15. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/__init__.py +0 -0
  16. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/executor.py +0 -0
  17. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/manifest.py +0 -0
  18. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/names.py +0 -0
  19. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/planner.py +0 -0
  20. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/render.py +0 -0
  21. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/selection.py +0 -0
  22. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/state.py +0 -0
  23. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/__init__.py +0 -0
  24. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/_shared/Makefile +0 -0
  25. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/_shared/make.bat +0 -0
  26. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/build-common.sh +0 -0
  27. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/deploy-common.sh +0 -0
  28. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/platform/build-development.sh +0 -0
  29. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/platform/build-production.sh +0 -0
  30. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/platform/deploy-development.sh +0 -0
  31. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/platform/deploy-production.sh +0 -0
  32. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/service/Dockerfile +0 -0
  33. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/service/dockerignore +0 -0
  34. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/steps/docker.sh +0 -0
  35. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/steps/proto.sh +0 -0
  36. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/steps/ssr.sh +0 -0
  37. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/runner/run.bat +0 -0
  38. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/runner/run.ps1 +0 -0
  39. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/runner/run.sh +0 -0
  40. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/app/env.development +0 -0
  41. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/app/env.local-dev +0 -0
  42. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/app/env.production +0 -0
  43. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/listen/env.development +0 -0
  44. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/listen/env.local-dev +0 -0
  45. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/listen/env.production +0 -0
  46. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/worker/env.development +0 -0
  47. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/worker/env.local-dev +0 -0
  48. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/worker/env.production +0 -0
  49. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/_shared/backend-base.md +0 -0
  50. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/_shared/grpc-optional.md +0 -0
  51. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/_shared/plugin-builder.md +0 -0
  52. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/_shared/plugin-runner.md +0 -0
  53. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/_shared/plugin-secrets.md +0 -0
  54. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-arch-core/SKILL.md +0 -0
  55. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-backend/SKILL.md +0 -0
  56. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-backend-msa/SKILL.md +0 -0
  57. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-backend-ssr/SKILL.md +0 -0
  58. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-browser-extension/SKILL.md +0 -0
  59. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-cli/SKILL.md +0 -0
  60. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-frontend/SKILL.md +0 -0
  61. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-mobile-app/SKILL.md +0 -0
  62. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-pc-app/SKILL.md +0 -0
  63. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-scheduler/SKILL.md +0 -0
  64. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/platform/envs/app/env.examples +0 -0
  65. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/platform/envs/listen/env.examples +0 -0
  66. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/platform/envs/worker/env.examples +0 -0
  67. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/platform/frontend/package.json +0 -0
  68. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/platform/frontend/vite.config.ts +0 -0
  69. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/root/AGENTS.md +0 -0
  70. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/root/agents-rules.md +0 -0
  71. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/root/claude-settings.json +0 -0
  72. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/root/gitignore +0 -0
  73. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/ui/__init__.py +0 -0
  74. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/ui/prompts.py +0 -0
  75. {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/ui/wizard.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: yjcli
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Wizard that scaffolds YJ architecture repos: platforms, services, tooling plugins, and AI agent wiring (Cursor/Claude/Codex).
5
5
  Project-URL: Homepage, https://github.com/yseiren87/yjcli
6
6
  Project-URL: Repository, https://github.com/yseiren87/yjcli
@@ -30,7 +30,7 @@ Description-Content-Type: text/markdown
30
30
  Wizard that scaffolds YJ-architecture repositories: platform code folders,
31
31
  services, tooling plugins, and AI agent wiring (Cursor, Claude Code, Codex).
32
32
 
33
- Run `yjcli` with no arguments and it walks you through a checklist. Nothing is
33
+ Run `yjcli start` and it walks you through a checklist (`yjcli` alone prints help). Nothing is
34
34
  written until you confirm the plan at the end. Every step can also be answered
35
35
  with a command-line argument, which skips that step.
36
36
 
@@ -46,7 +46,7 @@ uv tool upgrade yjcli
46
46
 
47
47
  ```bash
48
48
  cd /path/to/your-repo
49
- yjcli # interactive wizard
49
+ yjcli start # interactive wizard
50
50
  ```
51
51
 
52
52
  ```text
@@ -63,7 +63,7 @@ yjcli # interactive wizard
63
63
  The same thing without prompts:
64
64
 
65
65
  ```bash
66
- yjcli -l cursor,claude -n backend=a1,a2 -n frontend=f1 --plugin runner,secrets -y
66
+ yjcli start -l cursor,claude -n backend=a1,a2 -n frontend=f1 --plugin runner,secrets -y
67
67
  ```
68
68
 
69
69
  ## Steps
@@ -127,8 +127,8 @@ run (so teammates on old versions cannot roll files back); `--force` overrides.
127
127
  ### Change the selection
128
128
 
129
129
  ```bash
130
- yjcli # wizard, stored selection as defaults
131
- yjcli --plugin runner,secrets,builder -y # add the builder plugin
130
+ yjcli start # wizard, stored selection as defaults
131
+ yjcli start --plugin runner,secrets,builder -y # add the builder plugin
132
132
  yjcli service add -n backend=a3 # add services
133
133
  yjcli plan --diff # show the plan only
134
134
  ```
@@ -3,7 +3,7 @@
3
3
  Wizard that scaffolds YJ-architecture repositories: platform code folders,
4
4
  services, tooling plugins, and AI agent wiring (Cursor, Claude Code, Codex).
5
5
 
6
- Run `yjcli` with no arguments and it walks you through a checklist. Nothing is
6
+ Run `yjcli start` and it walks you through a checklist (`yjcli` alone prints help). Nothing is
7
7
  written until you confirm the plan at the end. Every step can also be answered
8
8
  with a command-line argument, which skips that step.
9
9
 
@@ -19,7 +19,7 @@ uv tool upgrade yjcli
19
19
 
20
20
  ```bash
21
21
  cd /path/to/your-repo
22
- yjcli # interactive wizard
22
+ yjcli start # interactive wizard
23
23
  ```
24
24
 
25
25
  ```text
@@ -36,7 +36,7 @@ yjcli # interactive wizard
36
36
  The same thing without prompts:
37
37
 
38
38
  ```bash
39
- yjcli -l cursor,claude -n backend=a1,a2 -n frontend=f1 --plugin runner,secrets -y
39
+ yjcli start -l cursor,claude -n backend=a1,a2 -n frontend=f1 --plugin runner,secrets -y
40
40
  ```
41
41
 
42
42
  ## Steps
@@ -100,8 +100,8 @@ run (so teammates on old versions cannot roll files back); `--force` overrides.
100
100
  ### Change the selection
101
101
 
102
102
  ```bash
103
- yjcli # wizard, stored selection as defaults
104
- yjcli --plugin runner,secrets,builder -y # add the builder plugin
103
+ yjcli start # wizard, stored selection as defaults
104
+ yjcli start --plugin runner,secrets,builder -y # add the builder plugin
105
105
  yjcli service add -n backend=a3 # add services
106
106
  yjcli plan --diff # show the plan only
107
107
  ```
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "yjcli"
3
- version = "0.3.1"
3
+ version = "0.3.2"
4
4
  description = "Wizard that scaffolds YJ architecture repos: platforms, services, tooling plugins, and AI agent wiring (Cursor/Claude/Codex)."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -1,4 +1,4 @@
1
- """Entry: `yjcli` runs the wizard; arguments answer its steps in advance."""
1
+ """Entry: `yjcli` shows help; `yjcli start` runs the wizard (arguments answer its steps)."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -56,7 +56,7 @@ PathOpt = Annotated[
56
56
 
57
57
  app = typer.Typer(
58
58
  name="yjcli",
59
- help="YJ 아키텍처 저장소 구성 도구. 인자 없이 실행하면 단계별 위저드가 열립니다.",
59
+ help="YJ 아키텍처 저장소 구성 도구. `yjcli start` 로 단계별 위저드를 시작합니다.",
60
60
  context_settings={"help_option_names": ["-h", "--help"]},
61
61
  add_completion=False,
62
62
  )
@@ -155,6 +155,19 @@ def _version_callback(value: bool) -> None:
155
155
  @app.callback(invoke_without_command=True)
156
156
  def main(
157
157
  ctx: typer.Context,
158
+ version_: Annotated[
159
+ Optional[bool],
160
+ typer.Option("--version", "-V", help="버전 출력", callback=_version_callback, is_eager=True),
161
+ ] = None,
162
+ ) -> None:
163
+ """YJ 아키텍처 저장소 구성 도구."""
164
+ if ctx.invoked_subcommand is None:
165
+ typer.echo(ctx.get_help())
166
+ raise typer.Exit()
167
+
168
+
169
+ @app.command("start")
170
+ def start(
158
171
  llm: LlmOpt = None,
159
172
  platform: PlatformOpt = None,
160
173
  plugin: PluginOpt = None,
@@ -166,14 +179,8 @@ def main(
166
179
  force: ForceOpt = False,
167
180
  diff: DiffOpt = False,
168
181
  path: PathOpt = Path("."),
169
- version_: Annotated[
170
- Optional[bool],
171
- typer.Option("--version", "-V", help="버전 출력", callback=_version_callback, is_eager=True),
172
- ] = None,
173
182
  ) -> None:
174
- """새 저장소 구성 또는 기존 구성 업데이트 (위저드)."""
175
- if ctx.invoked_subcommand is not None:
176
- return
183
+ """위저드 시작: 새 저장소 구성 또는 기존 구성 변경 (인자로 단계를 미리 답할 수 있음)."""
177
184
  run(path, mode=mode, llm=llm, platform=platform, plugin=plugin, name=name, option=option,
178
185
  yes=yes, dry_run=dry_run, force=force, diff=diff)
179
186
 
@@ -190,7 +197,7 @@ def update(
190
197
 
191
198
  def prepare(draft: Draft, state) -> None:
192
199
  if not state.manifest:
193
- _fail([".yjcli/manifest.toml 이 없습니다. 먼저 `yjcli` 로 구성하세요"])
200
+ _fail([".yjcli/manifest.toml 이 없습니다. 먼저 `yjcli start` 로 구성하세요"])
194
201
  draft.given |= {"llms", "platforms", "plugins"}
195
202
  draft.given |= {f"names:{p}" for p in state.manifest.platforms}
196
203
 
@@ -226,10 +233,10 @@ def service_add(
226
233
 
227
234
  def prepare(draft: Draft, state) -> None:
228
235
  if not state.manifest:
229
- _fail([".yjcli/manifest.toml 이 없습니다. 먼저 `yjcli` 로 구성하세요"])
236
+ _fail([".yjcli/manifest.toml 이 없습니다. 먼저 `yjcli start` 로 구성하세요"])
230
237
  unknown = [p for p in draft.names if p not in state.manifest.platforms]
231
238
  if unknown:
232
- _fail([f"구성되지 않은 플랫폼: {', '.join(unknown)} (플랫폼 추가는 `yjcli`)"])
239
+ _fail([f"구성되지 않은 플랫폼: {', '.join(unknown)} (플랫폼 추가는 `yjcli start`)"])
233
240
  draft.platforms = list(state.manifest.platforms)
234
241
  draft.given |= {"llms", "platforms", "plugins"}
235
242
  if not _interactive() and not any(draft.names.values()):
@@ -107,5 +107,5 @@ def print_next_steps(console: Console, plan: Plan) -> None:
107
107
  p, s = first
108
108
  console.print(f" 빌드: make {p}-build-development NAME={s} (tools/builder/{p}/ 구현 필요)", markup=False)
109
109
  if not plan.plugins:
110
- console.print(" 플러그인 없이 코드만 만들었습니다. 나중에 `yjcli` 를 다시 실행해 추가할 수 있습니다.", markup=False)
110
+ console.print(" 플러그인 없이 코드만 만들었습니다. 나중에 `yjcli start` 로 추가할 수 있습니다.", markup=False)
111
111
  console.print(" 서비스 추가: yjcli service add -n <platform>=<이름들>", markup=False)
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes