Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

WSA4SDD (Wise Shell App for Service Deployment & Distribution)

WSA4SDD(Wise Shell App)λŠ” 터미널 μ•ˆμ—μ„œ λͺ…λ Ήμ–΄λ‘œ λΆ„μ‚° 닀쀑 μ €μž₯μ†Œ μ„œλΉ„μŠ€λ₯Ό μˆ˜μ§‘ν•˜κ³  Docker Compose ν”„λ‘œμ νŠΈμ˜ 수λͺ…μ£ΌκΈ°λ₯Ό μ‘°μœ¨ν•˜λŠ” Claude Code μŠ€νƒ€μΌ λŒ€ν™”ν˜• 배포 및 배포 μ‰˜μž…λ‹ˆλ‹€.

기쑴의 λ‹¨μˆœ λ§ˆλ²•μ‚¬ν˜• 배포 μŠ€ν¬λ¦½νŠΈλ“€μ˜ 경직된 ν™˜κ²½μ„ κ°œμ„ ν•˜μ—¬, μ‚¬μš©μžκ°€ μ›ν•˜λŠ” μˆœμ„œλŒ€λ‘œ λͺ…λ Ήμ–΄λ₯Ό 톡해 λ³€μˆ˜λ₯Ό μ„€μ •ν•˜κ³  ν™˜κ²½μ„ κ²€μ¦ν•˜λ©°, μ΅œμ’…μ μœΌλ‘œ Docker Compose 배포 λͺ…령을 μ•ˆμ „ν•˜κ²Œ 내릴 수 μžˆλŠ” μœ μ—°ν•œ TUI REPL을 μ œκ³΅ν•©λ‹ˆλ‹€.

λ˜ν•œ, CLI 인수 νŒŒμ‹±κ³Ό λ…ΌμΈν„°λž™ν‹°λΈŒ νŒŒμ΄ν”„λΌμΈ λŒ€μ‘ κΈ°λŠ₯을 ν¬ν•¨ν•˜μ—¬ curl -fsSL ... | bashλ₯Ό ν†΅ν•œ 원격 μ™„μ „ μžλ™ 배포도 λ™μΌν•˜κ²Œ μ§€μ›ν•©λ‹ˆλ‹€.

데λͺ¨ (Demo)

WSA4SDD μ‚¬μš© 데λͺ¨

ν•˜λ‚˜μ˜ μ €μž₯μ†Œ(wsa4sdd-samples)λ₯Ό python-cli β†’ node-cli β†’ pb-nf μ„Έ 브랜치둜 μ°¨λ‘€λ‘œ μ „ν™˜ν•˜λ©°, 각 λΈŒλžœμΉ˜λ§ˆλ‹€ repo β†’ workspace β†’ auth β†’ bootstrap β†’ status β†’ dist-run νλ¦„μœΌλ‘œ λ°°ν¬ν•œ λ’€ docker ps -a 확인과 make downκΉŒμ§€ μ‹œμ—°ν•©λ‹ˆλ‹€.


1. μ£Όμš” νŠΉμ§• (Core Features)

A. Claude Code μŠ€νƒ€μΌ TUI & REPL

  • μ‹€ν–‰ μ‹œ μ‹œμŠ€ν…œ μƒνƒœμ™€ λͺ…λ Ήμ–΄ 도움말을 μ§κ΄€μ μœΌλ‘œ μ„€λͺ…ν•˜λŠ” μ›°μ»΄ 헀더와 ꡬ뢄선(───)을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • 자체 κ΅¬ν˜„λœ κ³ κΈ‰ 라인 에디터 REPL ν”„λ‘¬ν”„νŠΈ μ˜μ—­(> )을 μ œκ³΅ν•©λ‹ˆλ‹€.
    • μž…λ ₯ νžˆμŠ€ν† λ¦¬: μœ„/μ•„λž˜ ν™”μ‚΄ν‘œ ν‚€λ₯Ό 톡해 이전 μ‹€ν–‰ν•œ λͺ…λ Ήμ–΄ 기둝(μ„Έμ…˜ 파일 /tmp/.wsa4sdd_history 연동)을 νƒμƒ‰ν•˜κ³  λ‹€μ‹œ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€.
    • μž…λ ₯ νŽΈμ§‘: 쒌/우 ν™”μ‚΄ν‘œ ν‚€λ‘œ μ‹€μ‹œκ°„ μ»€μ„œ 이동이 κ°€λŠ₯ν•˜λ©°, Backspace 및 Delete ν‚€λ₯Ό ν†΅ν•œ μžμ—°μŠ€λŸ¬μš΄ κΈ€μž μ‚½μž… 및 μ‚­μ œλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.
    • μžλ™μ™„μ„± νŒμ˜€λ²„: 빈 μž…λ ₯μ°½ μƒνƒœμ—μ„œ / ν‚€λ₯Ό μž…λ ₯ν•˜λ©΄ 선택 κ°€λŠ₯ν•œ λͺ…λ Ήμ–΄ λ¦¬μŠ€νŠΈκ°€ ν™”λ©΄ ν•˜λ‹¨μ— λ“œλ‘­λ‹€μš΄ ν˜•νƒœλ‘œ νŒμ—…λ˜μ–΄ μœ„/μ•„λž˜ 킀와 Enter둜 μ†μ‰½κ²Œ μžλ™ μ™„μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • TTYκ°€ μ—†λŠ” μžλ™ν™” νŒŒμ΄ν”„λΌμΈ(! -t 0) λ˜λŠ” CLI 인수 μ„€μ • μ‹œ λŒ€ν™”ν˜• TUIλ₯Ό κ±΄λ„ˆλ›°κ³  direct CLI λͺ¨λ“œλ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€.

B. λͺ…λ Ήμ–΄ 기반 κ°œλ³„ 단계 관리

배포의 흐름을 λŒ€ν™”ν˜• μ‰˜ μ•ˆμ—μ„œ 각각 μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • /repo [url[#branch] ...], /R …: 배포할 Git μ €μž₯μ†Œλ₯Ό 1개 λ˜λŠ” μ—¬λŸ¬ 개 λ“±λ‘ν•©λ‹ˆλ‹€. 곡백 λ˜λŠ” 콀마둜 μ—¬λŸ¬ 개λ₯Ό ν•œ λ²ˆμ— μž…λ ₯ν•  수 있고, <url>#<branch>둜 브랜치λ₯Ό μ§€μ •ν•˜λ©΄ κ·Έ 브랜치둜 clone/pull ν•©λ‹ˆλ‹€. 인자λ₯Ό μƒλž΅ν•˜λ©΄ λŒ€ν™”ν˜• Repository Manager(μΆ”κ°€, μ‚­μ œ, μˆœμ„œ μ •λ ¬)λ₯Ό κΈ°λ™ν•©λ‹ˆλ‹€. URL μœ νš¨μ„±μ„ κ²€μ¦ν•˜λ©°(https://, git@host:owner/repo, ssh://, 둜컬 경둜; 선택적 #branch), **0κ°œμ΄κ±°λ‚˜ λͺ¨λ‘ 무효이면 [NOT SET]**μž…λ‹ˆλ‹€.
  • /workspace [path], /W [path]: μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 경둜. **μ‹€ν–‰ μ „κΉŒμ§€ [NOT SET]**이며, 인자λ₯Ό μƒλž΅ν•˜λ©΄ TUI λ©”λ‰΄μ—μ„œ ν˜„μž¬(Current) / μƒμœ„(Parent) / μ‚¬μš©μž μ§€μ •(Custom path) 3κ°€μ§€ 쀑 선택/μ§€μ •ν•œ κ°’μœΌλ‘œ μ •μ˜λ©λ‹ˆλ‹€.
  • /auth [status|switch|login|pat], /A …: GitHub 인증. **μ‹€ν–‰ μ „κΉŒμ§€ [NOT SET]**이며, 인자λ₯Ό μƒλž΅ν•˜λ©΄ TUI λ©”λ‰΄μ—μ„œ 4κ°€μ§€ 쀑 μ„ νƒν•©λ‹ˆλ‹€ β€” gh login status(ν˜„μž¬ 둜그인 μ‚¬μš©μž 확인) / gh auth switch(계정 μ „ν™˜) / gh auth login(μ‹ κ·œ 둜그인) / PAT 등둝.
  • /bootstrap, /B: repoΒ·workspaceΒ·authκ°€ λͺ¨λ‘ [NOT SET]이 아닐 λ•Œλ§Œ μ§„ν–‰λ©λ‹ˆλ‹€. β‘  μ‹œμŠ€ν…œ ν™˜κ²½ 확인 λͺ¨λ“ˆ(OS 감지 + git/gh/docker/make 쑴재 보고, μ„€μΉ˜ μ•ˆ 함) β‘‘ 사전 μ„€μΉ˜ λͺ¨λ“ˆ(λˆ„λ½ μ˜μ‘΄μ„± μ„€μΉ˜) β†’ 레포 동기화 β†’ Makefile 생성. λ―ΈμΆ©μ‘± μ‹œ [PENDING]으둜 싀행을 κ±°λΆ€ν•˜κ³  [NOT SET] ν•­λͺ©μ„ μ•ˆλ‚΄ν•©λ‹ˆλ‹€. μ €μž₯μ†Œ 동기화 λ“± μ–΄λŠ 단계라도 μ‹€νŒ¨ν•˜λ©΄ [DONE]이 λ˜μ§€ μ•Šκ³  μ€‘λ‹¨λ˜μ–΄ [PENDING]을 μœ μ§€ν•©λ‹ˆλ‹€. ops repo λ°°ν¬μžμ‚°μ€ λ‹€μŒ κ·œμΉ™μœΌλ‘œ μ€€λΉ„ν•©λ‹ˆλ‹€ β€” β‘  Makefile 있으면 κ·ΈλŒ€λ‘œ μ‚¬μš© β‘‘ docker-compose만 있으면 compose 기반 Makefile 생성 β‘’ λ‘˜ λ‹€ μ—†μœΌλ©΄ 직접 싀행법(python hello.py λ“±, node package.json λ“±) 탐지 β€” ν•˜μœ„μ˜ λͺ¨λ“  앱을 빠짐없이 μ°Ύμ•„(예: apps/python-cliΒ·node-cliΒ·python-backendΒ·node-frontend) μ•±λ§ˆλ‹€ Dockerfile + compose μ„œλΉ„μŠ€ 1κ°œμ”© μƒμ„±ν•˜κ³ , 전체 up/down + 앱별 up-<name> νƒ€κ²Ÿμ„ κ°€μ§„ Makefile을 μžλ™μƒμ„±(μžλ™μƒμ„± μ•Œλ¦Ό ν›„ /dist-run κ°€λŠ₯). μ—†μœΌλ©΄ /dist-run λΆˆκ°€ μ•ˆλ‚΄ ν›„ μ’…λ£Œ. (Python 앱은 λ§€λ‹ˆνŽ˜μŠ€νŠΈ 디렉터리(pyproject.toml/requirements.txt/setup.py)λ₯Ό λΉŒλ“œμ»¨ν…μŠ€νŠΈλ‘œ μ‚Όμ•„ μ˜μ‘΄μ„±μ„ μ„€μΉ˜ν•˜κ³ , FastAPI/uvicorn 앱이면 uvicorn <module>:<app> + 포트 publish둜 생성.) repoλ₯Ό μ—¬λŸ¬ 개 μ§€μ •ν•˜λ©΄ ops repo뿐 μ•„λ‹ˆλΌ λ“±λ‘λœ λͺ¨λ“  repoλ₯Ό μŠ€μΊ”ν•˜μ—¬ 앱을 μ°Ύκ³ , 생성물은 ops repo에 두며 타 repo 앱은 ../<repo>/... λΉŒλ“œμ»¨ν…μŠ€νŠΈλ‘œ μ°Έμ‘°ν•©λ‹ˆλ‹€(μ„œλΉ„μŠ€λͺ… repo μ ‘λ‘λ‘œ 좩돌 λ°©μ§€). λ˜ν•œ 각 μ„œλΉ„μŠ€μ˜ μ—­ν• (frontend/backend/database/cli) 을 인식해 composeλ₯Ό μ—°λ™λœ κ΅¬μ„±μœΌλ‘œ μž‘μ„±ν•©λ‹ˆλ‹€ β€” frontendμ—” BACKEND_URL+depends_on+포트, backendμ—” 포트(+db 있으면 DATABASE_URL+depends_on), cliλŠ” 포트 μ—†μŒ. host ν¬νŠΈλŠ” 좩돌 μ‹œμ—λ§Œ 증가(단일 backend=8000 μœ μ§€).
  • /status, /S: ν˜„μž¬ μ„€μ •κ°’, [NOT SET] ν˜„ν™©, bootstrap μƒνƒœ([PENDING]/[DONE]), 적용 ν…Œλ§ˆλ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€.
  • /theme, /T [name]: Claude CLI μŠ€νƒ€μΌ 색상 ν…Œλ§ˆ μ „ν™˜(6μ’…). 인자 μƒλž΅ μ‹œ 선택 메뉴 + 색 μŠ€μ™€μΉ˜ 미리보기. 졜초 μ‹€ν–‰ μ‹œ ν•œ 번 선택받아 μΊμ‹œμ— μ €μž₯ν•©λ‹ˆλ‹€(μž¬μ‹€ν–‰ μ‹œ 미질문).
  • /dist-run, /D: bootstrap이 [PENDING]이면 μžλ™ λΆ€νŠΈμŠ€νŠΈλž©ν•˜μ§€ μ•Šκ³  /bootstrap 싀행을 μ•ˆλ‚΄ν•˜λ©°, bootstrap μ™Έ [NOT SET] ν•­λͺ©μ„ ν•¨κ»˜ 좜λ ₯ν•˜κ³  아무것도 μ‹€ν–‰ν•˜μ§€ μ•Šμ€ 채 μ’…λ£Œν•©λ‹ˆλ‹€. [DONE]일 λ•Œλ§Œ Makefile νƒ€κ²Ÿ 선택 메뉴λ₯Ό κ΅¬λ™ν•©λ‹ˆλ‹€.
  • /help, /H: μ‚¬μš© μ„€λͺ… 및 도움말 호좜.
  • /exit, /E: ν”„λ‘œκ·Έλž¨ μ„Έμ…˜ μ’…λ£Œ 및 μ„Έμ…˜ μΊμ‹œ 전체 μ‚­μ œ.
  • ! <command>: λŒ€ν™”ν˜• REPL λͺ¨λ“œμ—μ„œ 둜컬 μ‰˜ λͺ…λ Ήμ–΄(예: ! pwd, ! ls -la)λ₯Ό μ¦‰μ‹œ μ‹€ν–‰ν•˜κ³  κ²°κ³Όλ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

C. λŒ€ν™”ν˜• μ €μž₯μ†Œ μˆœμ„œ λ³€κ²½ 및 관리 (Interactive Reordering)

  • /repo λͺ…령을 인수 없이 μ‹€ν–‰ν•˜λ©΄ λŒ€ν™”ν˜• Repository Managerκ°€ κ΅¬λ™λ©λ‹ˆλ‹€.
  • λ ˆν¬μ§€ν† λ¦¬λ₯Ό **μΆ”κ°€(Add)**ν•˜κ±°λ‚˜, μ„ νƒν•˜μ—¬ **μ‚­μ œ(Delete)**ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 특히 Reorder κΈ°λŠ₯을 μ„ νƒν•˜λ©΄ 터미널 μƒμ—μ„œ λ°©ν–₯ν‚€(UP/DOWN λ˜λŠ” k/j)λ₯Ό μ΄μš©ν•΄ μ„ νƒν•œ μ €μž₯μ†Œμ˜ 동기화 및 쑰율 μˆœμ„œλ₯Ό 물리적으둜 λ°”κΏ€ 수 있으며, Enter ν‚€λ‘œ κ·Έ μžλ¦¬μ—μ„œ 락(Lock)을 κ±Έμ–΄ μˆœμ„œλ₯Ό λ³€κ²½ν•©λ‹ˆλ‹€.

D. μ§€λŠ₯적 μ„Έμ…˜ μΊμ‹œ (Session Cache)

  • λͺ…λ Ήμ–΄ μž…λ ₯으둜 μ„€μ •λœ λ³€μˆ˜λ“€μ€ /tmp/.wsa4sdd-${UID}.cache 파일둜 맀번 μ§λ ¬ν™”λ˜μ–΄ λ³΄κ΄€λ©λ‹ˆλ‹€.
  • 도쀑에 연결이 λŠμ–΄μ§€κ±°λ‚˜ μž„μ˜ μ’…λ£Œλ˜λ”λΌλ„, μž¬κΈ°λ™ μ‹œ μ„Έμ…˜ μƒνƒœκ°€ κ³ μŠ€λž€νžˆ λ³΅μ›λ©λ‹ˆλ‹€.
  • 배포가 μ™„μ „νžˆ λλ‚¬κ±°λ‚˜(/dist-run 정상 μ’…λ£Œ), μ‚¬μš©μžκ°€ /exit λ˜λŠ” 2회 연속 Ctrl+Cλ₯Ό 눌러 λͺ…μ‹œμ μœΌλ‘œ μ’…λ£Œν•  κ²½μš°μ—λŠ” μΊμ‹œλ₯Ό μ™„λ²½νžˆ μ†Œκ±°ν•˜μ—¬ μž„μ‹œ νŒŒμΌμ„ 남기지 μ•ŠμŠ΅λ‹ˆλ‹€.

2. TUI ꡬ성 및 λ ˆμ΄μ•„μ›ƒ (Layout & Commands)

μ‹€ν–‰ μ‹œ 터미널 화면에 μ•„λž˜μ™€ 같이 κ΅¬μ„±λœ μ›°μ»΄ μ•ˆλ‚΄κ°€ 좜λ ₯λ©λ‹ˆλ‹€.

  WSA4SDD App (v1.1.0) β€” Service Deployment and Distribution Shell
  Lives in your terminal, manages git repos, and deploys docker-compose.
  ─────────────────────────────────────────────────────────────────────────────
  Commands:
    /repo, /R [url[#branch] ...]         Register 1+ repos (space/comma sep, optional #branch)
    /workspace, /W [path]                Current / Parent / Custom ([NOT SET] until run)
    /auth, /A [status|switch|login|pat]  gh status/switch/login or PAT ([NOT SET] until run)
    /bootstrap, /B                       System check + pre-install + sync (needs all set)
    /status, /S                          Show config + [PENDING]/[DONE] + theme
    /theme, /T [name]                    Switch color theme (6 presets; menu if empty)
    /dist-run, /D                        Run deploy ([PENDING] -> guide + abort, no auto-bootstrap)
    /help, /H                            Show this help message
    /exit, /E                            Exit wsa4sdd shell and clear cache
    ! <command>                          Execute a shell command and display the output
  ─────────────────────────────────────────────────────────────────────────────

>

상세 λͺ…λ Ήμ–΄ κ°€μ΄λ“œ

1. μ €μž₯μ†Œ ꡬ성 (/repo, /R)

  • CLI direct: /repo <url1> <url2#branch> … β€” 1개 이상 등둝. 곡백/콀마둜 μ—¬λŸ¬ 개 λ™μ‹œ μž…λ ₯. 무효 URL은 κ±°λΆ€Β·κ²½κ³ .
  • TUI interactive: /repo만 μž…λ ₯ μ‹œ 관리 메뉴 λ™μž‘.
    • Add Repositoryμ—μ„œ ν•œ 쀄에 곡백/콀마둜 μ—¬λŸ¬ URL μž…λ ₯ κ°€λŠ₯(각 검증), Delete μ‚­μ œ, Change Order μˆœμ„œ λ³€κ²½.
  • 브랜치 μ§€μ •: <url>#<branch> (예: https://github.com/o/r.git#dev, git@host:o/r.git#release/1.0). μ§€μ • μ‹œ κ·Έ 브랜치둜 clone(-b)Β·pull(checkout+pull origin <branch>). λ―Έμ§€μ • μ‹œ κΈ°λ³Έ/ν˜„μž¬ 브랜치.
  • 유효 ν˜•μ‹: https://…/…, git@host:owner/repo, ssh://…, 둜컬 경둜 (선택적 #branch).
  • μƒνƒœ: λ“±λ‘λœ 유효 μ €μž₯μ†Œκ°€ 0개이면 /status에 [NOT SET].

2. μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 디렉터리 (/workspace, /W)

  • μ‹€ν–‰ μ „κΉŒμ§€ [NOT SET] β€” μ‹€ν–‰ν•΄μ•Ό 값이 μ •ν•΄μ§‘λ‹ˆλ‹€.
  • CLI direct: /workspace /path/to/dir
  • TUI interactive: /workspace만 μž…λ ₯ μ‹œ β‘  ν˜„μž¬ 디렉터리(Current) β‘‘ μƒμœ„ 디렉터리(Parent) β‘’ μ‚¬μš©μž μ§€μ •(Custom path…) 3κ°€μ§€ 메뉴 쀑 선택/μ§€μ •ν•©λ‹ˆλ‹€.

3. 인증 방식 (/auth, /A)

  • μ‹€ν–‰ μ „κΉŒμ§€ [NOT SET] β€” μ‹€ν–‰ μ‹œ μ•„λž˜ 4κ°€μ§€ 쀑 선택/μ§€μ •ν•©λ‹ˆλ‹€.
  • TUI interactive (/auth만 μž…λ ₯):
    1. gh login status β€” gh auth status둜 ν˜„μž¬ 둜그인 μ‚¬μš©μžλ₯Ό ν™•μΈν•˜κ³  ν‘œμ‹œ.
    2. gh auth switch β€” μ—¬λŸ¬ 계정 κ°„ ν™œμ„± 계정 μ „ν™˜.
    3. gh auth login β€” μ‹ κ·œ GitHub 둜그인.
    4. Register PAT β€” Username(선택) + Personal Access Token μž…λ ₯. 토큰은 μž„μ‹œ νŒŒμΌμ— 600 κΆŒν•œμœΌλ‘œ μ €μž₯되고 μ’…λ£Œ μ‹œ μžλ™ μ‚­μ œλ©λ‹ˆλ‹€.
  • CLI direct: /auth status|switch|login|pat (μŠ€ν¬λ¦½νŒ… ν˜Έν™˜μš© gh/none도 ν—ˆμš©).
  • /statusμ—λŠ” 인증 방식과 ν•¨κ»˜ ν™•μΈλœ ν˜„μž¬ GitHub μ‚¬μš©μžλͺ…이 ν‘œμ‹œλ©λ‹ˆλ‹€.

4. 배포 μ‹€ν–‰ (/dist-run, /D)

  • bootstrap μƒνƒœκ°€ [DONE]이 μ•„λ‹ˆλ©΄ μ‹€ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. [PENDING]이면:
    • /bootstrap을 λ¨Όμ € μ‹€ν–‰ν•˜λΌκ³  μ•ˆλ‚΄ν•˜κ³ ,
    • bootstrap 외에 [NOT SET]인 ν•­λͺ©(Repos/Workspace/Auth)을 ν•¨κ»˜ 좜λ ₯ν•œ λ’€,
    • 아무것도 μ‹€ν–‰ν•˜μ§€ μ•Šκ³  μ’…λ£Œν•©λ‹ˆλ‹€. (μžλ™ λΆ€νŠΈμŠ€νŠΈλž©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.)
  • [DONE]일 λ•Œλ§Œ Makefile 배포 νƒ€κ²Ÿ(up-* λ“±)을 μˆ˜μ§‘ν•΄ 동적 TUI λ©”λ‰΄λ‘œ μ œκ³΅ν•©λ‹ˆλ‹€.
  • pre-run λͺ…λ Ήμ–΄ μž…λ ₯ 단계λ₯Ό 거쳐 make <target>을 μ‹€ν–‰ν•˜κ³ , 성곡 μ‹œ μΊμ‹œλ₯Ό μ‚­μ œν•˜κ³  μ’…λ£Œν•©λ‹ˆλ‹€.

μƒνƒœ λͺ¨λΈ μš”μ•½: μ„€μ •(repoΒ·workspaceΒ·auth)은 μ±„μ›Œμ§€κΈ° μ „ [NOT SET]. bootstrap은 μ…‹ λ‹€ set일 λ•Œλ§Œ μ‹€ν–‰ κ°€λŠ₯ν•˜λ©° μ™„λ£Œ μ‹œ [DONE], κ·Έ μ™Έμ—λŠ” [PENDING]. 섀정이 λ°”λ€Œλ©΄ [DONE]은 λ‹€μ‹œ [PENDING]으둜 λ¬΄νš¨ν™”λ©λ‹ˆλ‹€.

5. 색상 ν…Œλ§ˆ (/theme, /T)

Claude CLI μŠ€νƒ€μΌμ˜ 색상 ν…Œλ§ˆλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 졜초 μ‹€ν–‰ μ‹œ ν…Œλ§ˆλ₯Ό ν•œ 번 선택받고 μΊμ‹œμ— μ €μž₯ν•˜μ—¬, 이후 μž¬μ‹€ν–‰ μ‹œμ—λŠ” λ‹€μ‹œ 묻지 μ•ŠμŠ΅λ‹ˆλ‹€.

ν…Œλ§ˆ μ„€λͺ…
dark μ–΄λ‘μš΄ 배경용 κΈ°λ³Έ ν…Œλ§ˆ
light 밝은 배경용(μ–΄λ‘μš΄ ν…μŠ€νŠΈ)
dark-daltonized 색약 μΉœν™”(λ…Ή/적 ν˜Όλ™ νšŒν”Ό β€” 성곡=νŒŒλž‘, 였λ₯˜=μ£Όν™©) Β· μ–΄λ‘μš΄ λ°°κ²½
light-daltonized 색약 μΉœν™” Β· 밝은 λ°°κ²½
dark-ansi 256/트루컬러 λ―Έμ‚¬μš©, 16색 ANSI만 Β· μ–΄λ‘μš΄ λ°°κ²½
light-ansi 16색 ANSI만 Β· 밝은 λ°°κ²½
  • CLI direct: /theme dark-daltonized ν˜•νƒœλ‘œ μ¦‰μ‹œ μ „ν™˜.
  • TUI interactive: /theme만 μž…λ ₯ μ‹œ ν˜„μž¬ ν…Œλ§ˆκ°€ κΈ°λ³Έ μ„ νƒλœ 메뉴가 뜨고, 선택 ν›„ 색 μŠ€μ™€μΉ˜(βœ“/!/βœ—/β–Ά)λ₯Ό 미리보기둜 좜λ ₯ν•©λ‹ˆλ‹€.
  • 선택값은 μ „μš© μ˜μ† μΊμ‹œ /tmp/.wsa4sdd-theme-${UID}.cache에 μ €μž₯λ˜μ–΄ /status에 ν‘œμ‹œλ©λ‹ˆλ‹€.
  • /theme,/T둜 μž¬μ„€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 이전 μΊμ‹œ 값을 κ·ΈλŒ€λ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. μ„Έμ…˜ μΊμ‹œ μ‚­μ œ(/exitΒ·Ctrl+C 2회·배포 성곡)에도 ν…Œλ§ˆ μΊμ‹œλŠ” μ‚­μ œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

3. 원격 직접 μ‹€ν–‰ 및 μ„€μΉ˜ 방법 (Execution & Installation)

A. 원격 직접 μ‹€ν–‰ (curl | bash)

CI/CD νŒŒμ΄ν”„λΌμΈμ΄λ‚˜ μΌνšŒμ„± 배포 ν™˜κ²½μ—μ„œ 파일 λ‹€μš΄λ‘œλ“œ 없이 원격 μ£Όμ†Œμ˜ 슀크립트λ₯Ό μ¦‰μ‹œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

# 1) 원격 TUI λͺ¨λ“œ μ‹€ν–‰ (인수 사전 μž…λ ₯ + λŒ€ν™”ν˜• REPL 기동)
curl -fsSL https://raw.githubusercontent.com/WisemanLim/pub-wsa-for-sdd/main/wsa4sdd.sh \
  | bash -s -- -I "https://github.com/ClaroPessoas/claro-svc" -w "~/workspace"

# 2) 원격 λΉ„λŒ€ν™”ν˜• CLI λͺ¨λ“œ μ‹€ν–‰ (μžλ™ 배포 μ‹€ν–‰)
curl -fsSL https://raw.githubusercontent.com/WisemanLim/pub-wsa-for-sdd/main/wsa4sdd.sh \
  | bash -s -- -I "https://github.com/ClaroPessoas/claro-svc" --cli

# 3) 원격 λΉ„λŒ€ν™”ν˜• CLI λ“œλΌμ΄λŸ° μ‹€ν–‰ (배포 없이 ꡬ성/λ™κΈ°ν™”λ§Œ μˆ˜ν–‰)
curl -fsSL https://raw.githubusercontent.com/WisemanLim/pub-wsa-for-sdd/main/wsa4sdd.sh \
  | bash -s -- -I "https://github.com/ClaroPessoas/claro-svc" --no-run

# 4) κΈ°λ³Έν™˜κ²½ 일괄 ꡬ성 (--default-env): workspace=ν˜„μž¬κ²½λ‘œ, ops=첫 repo, auth=pat
curl -fsSL https://raw.githubusercontent.com/WisemanLim/pub-wsa-for-sdd/main/wsa4sdd.sh \
  | bash -s -- -I "https://github.com/ClaroPessoas/claro-svc" -a "<PAT_TOKEN>" --default-env

--default-env κΈ°λ³Έν™˜κ²½ ν”Œλž˜κ·Έ

원격/μžλ™ν™”μ—μ„œ ν•œ μ€„λ‘œ κΈ°λ³Έν™˜κ²½μ„ κ΅¬μ„±ν•˜λŠ” λΉ„λŒ€ν™” λͺ¨λ“œμž…λ‹ˆλ‹€.

  • -a, --auth <κ°’>: CLI 인증. 값이 gh/pat/none ν‚€μ›Œλ“œλ©΄ 인증 방식, κ·Έ μ™Έ λ¬Έμžμ—΄μ΄λ©΄ PAT ν† ν°μœΌλ‘œ 직접 운반(방식=pat). -a/--auth μ–‘ν˜• 지원.
  • --default-env 처리 μ‹œ:
    1. -I/--input(repo) ν•„μˆ˜ β€” μ—†μœΌλ©΄ μ—λŸ¬ 좜λ ₯ ν›„ μ’…λ£Œ.
    2. workspace = ν˜„μž¬ 경둜(PWD), ops repo = 첫 번째 repo 이름 μžλ™ μ§€μ •.
    3. -a/--auth ν•„μˆ˜, κΈ°λ³Έ 방식 pat, 토큰 값을 λ°˜λ“œμ‹œ λ°›μ•„μ•Ό μ‹€ν–‰ β€” μ—†μœΌλ©΄ μ—λŸ¬ 좜λ ₯ ν›„ μ’…λ£Œ.
  • ⚠️ -a <token>λŠ” 토큰이 ν”„λ‘œμ„ΈμŠ€ 인자(argv)에 λ…ΈμΆœλ©λ‹ˆλ‹€(ps/νžˆμŠ€ν† λ¦¬). μžλ™ν™”/데λͺ¨ 편의용이며, 운영 μ‹œ CI μ‹œν¬λ¦Ώ λ§ˆμŠ€ν‚Ήμ„ ꢌμž₯ν•©λ‹ˆλ‹€.

B. 슀크립트 λ‹€μš΄λ‘œλ“œ 및 μ„€μΉ˜ (Download & Local Install)

슀크립트λ₯Ό 둜컬 μ‹œμŠ€ν…œμ— 직접 λ‚΄λ €λ°›μ•„ 영ꡬ μ„€μΉ˜ν•˜μ—¬ λͺ…λ Ήμ–΄λ‘œ μ‚¬μš©ν•˜κ³  싢은 경우 μ•„λž˜ μˆœμ„œλŒ€λ‘œ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

  1. 슀크립트 λ‹€μš΄λ‘œλ“œ 및 μ‹€ν–‰ κΆŒν•œ λΆ€μ—¬:

    curl -fsSL -o wsa4sdd.sh https://raw.githubusercontent.com/WisemanLim/pub-wsa-for-sdd/main/wsa4sdd.sh
    chmod +x wsa4sdd.sh
  2. μ‹œμŠ€ν…œ 경둜(PATH)에 λ“±λ‘ν•˜μ—¬ κΈ€λ‘œλ²Œ μ‹€ν–‰ (선택 사항):

    # /usr/local/bin λ˜λŠ” μ‚¬μš©μž ν™˜κ²½μ˜ PATH 경둜둜 파일 이동
    sudo mv wsa4sdd.sh /usr/local/bin/wsa4sdd
  3. 둜컬 μ‹€ν–‰ 및 νŒŒλΌλ―Έν„° 전달 μ˜ˆμ‹œ:

    # 단독 μ‹€ν–‰ (κΈ°λ³Έ TUI λͺ¨λ“œ 기동)
    wsa4sdd
    
    # 사전 섀정을 μ£Όμž…ν•œ λŒ€ν™”ν˜• TUI λͺ¨λ“œ 기동
    wsa4sdd -I "https://github.com/ClaroPessoas/claro-svc" -w "~/workspace"
    
    # λΉ„λŒ€ν™”ν˜• CLI λͺ¨λ“œλ‘œ μ¦‰μ‹œ μžλ™ 배포 μ‹€ν–‰
    wsa4sdd -I "https://github.com/ClaroPessoas/claro-svc" --cli
    
    # λΉ„λŒ€ν™”ν˜• CLI λͺ¨λ“œλ‘œ λΉŒλ“œ/동기화 λ“œλΌμ΄λŸ°λ§Œ μ‹€ν–‰ (배포 μƒλž΅)
    wsa4sdd -I "https://github.com/ClaroPessoas/claro-svc" --no-run

CLI Options

μ˜΅μ…˜ μ„€λͺ… μ˜ˆμ‹œ
-I, --input 곡백으둜 λΆ„λ¦¬λœ κΉƒ μ €μž₯μ†Œ URL λͺ©λ‘. -I "url1 url2"
-w, --workspace μ €μž₯μ†Œλ“€μ„ 클둠할 νƒ€κ²Ÿ 디렉터리. -w ~/dev/workspace
-o, --ops Makefile 및 Compose ν™˜κ²½μ„ λ‚΄μž₯ν•œ 메인 쑰율 μ €μž₯μ†Œ λͺ…μΉ­. -o my-ops-repo
--no-run μ €μž₯μ†Œ 동기화와 도ꡬ λΉŒλ“œ(Makefile 생성 λ“±)κΉŒμ§€λ§Œ μˆ˜ν–‰ν•˜κ³  μ‹€μ œ 배포 νƒ€κ²Ÿ 선택 및 μ‹€ν–‰ 단계λ₯Ό κ±΄λ„ˆλœλ‹ˆλ‹€. --no-run
-h, --help 도움말을 좜λ ₯ν•©λ‹ˆλ‹€. -h

4. ν˜Έν™˜μ„± 및 μ œμ•½μ‚¬ν•­ (Compatibility)

  • macOS Native μ™„λ²½ ν˜Έν™˜: macOS의 κΈ°λ³Έ μ‹œμŠ€ν…œ μ‰˜μ€ /bin/bash 3.2.x λ²„μ „μž…λ‹ˆλ‹€. wsa4sdd.shλŠ” Bash 4.x+ μ „μš© κΈ°λŠ₯(예: local -n 레퍼런슀 μ§€μ‹œμ–΄, Associative Arrays declare -A λ“±)을 λ°°μ œν•˜κ³  순수 Bash 3.2 ν˜Έν™˜ λ¬Έλ²•μœΌλ‘œ 섀계 및 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • μ˜μ‘΄μ„± μžλ™ 확인: TUI μ§„μž… λ˜λŠ” /bootstrap κ³Όμ •μ—μ„œ git, docker, docker compose, make λ“±μ˜ 의쑴 도ꡬ가 ν˜„μž¬ μ‹œμŠ€ν…œμ— 정상 μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ μžλ™μœΌλ‘œ κ°μ§€ν•˜κ³  λ―ΈλΉ„ μ‹œ μ•Œλ¦Όμ„ μ€λ‹ˆλ‹€.

About

Wise Shell App for Service Deployment & Distribution Resources

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages