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.
- {yjcli-0.3.1 → yjcli-0.3.2}/PKG-INFO +6 -6
- {yjcli-0.3.1 → yjcli-0.3.2}/README.md +5 -5
- {yjcli-0.3.1 → yjcli-0.3.2}/pyproject.toml +1 -1
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/cli.py +19 -12
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/ui/summary.py +1 -1
- {yjcli-0.3.1 → yjcli-0.3.2}/.gitignore +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/LICENSE +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/__init__.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/__main__.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/catalog/__init__.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/catalog/llms.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/catalog/platforms.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/catalog/plugins.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/catalog/skills.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/__init__.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/executor.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/manifest.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/names.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/planner.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/render.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/selection.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/core/state.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/__init__.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/_shared/Makefile +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/_shared/make.bat +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/build-common.sh +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/deploy-common.sh +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/platform/build-development.sh +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/platform/build-production.sh +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/platform/deploy-development.sh +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/platform/deploy-production.sh +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/service/Dockerfile +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/service/dockerignore +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/steps/docker.sh +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/steps/proto.sh +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/builder/steps/ssr.sh +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/runner/run.bat +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/runner/run.ps1 +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/runner/run.sh +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/app/env.development +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/app/env.local-dev +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/app/env.production +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/listen/env.development +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/listen/env.local-dev +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/listen/env.production +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/worker/env.development +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/worker/env.local-dev +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/plugins/secrets/worker/env.production +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/_shared/backend-base.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/_shared/grpc-optional.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/_shared/plugin-builder.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/_shared/plugin-runner.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/_shared/plugin-secrets.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-arch-core/SKILL.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-backend/SKILL.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-backend-msa/SKILL.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-backend-ssr/SKILL.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-browser-extension/SKILL.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-cli/SKILL.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-frontend/SKILL.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-mobile-app/SKILL.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-pc-app/SKILL.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/skills/yj-scheduler/SKILL.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/platform/envs/app/env.examples +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/platform/envs/listen/env.examples +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/platform/envs/worker/env.examples +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/platform/frontend/package.json +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/platform/frontend/vite.config.ts +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/root/AGENTS.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/root/agents-rules.md +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/root/claude-settings.json +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/data/templates/root/gitignore +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/ui/__init__.py +0 -0
- {yjcli-0.3.1 → yjcli-0.3.2}/src/yjcli/ui/prompts.py +0 -0
- {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.
|
|
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`
|
|
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
|
|
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
|
|
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`
|
|
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
|
|
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
|
|
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,4 +1,4 @@
|
|
|
1
|
-
"""Entry: `yjcli` runs the wizard
|
|
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`
|
|
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
|
|
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
|
|
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
|
|
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
|