WSA4SDD(Wise Shell App)λ ν°λ―Έλ μμμ λͺ λ Ήμ΄λ‘ λΆμ° λ€μ€ μ μ₯μ μλΉμ€λ₯Ό μμ§νκ³ Docker Compose νλ‘μ νΈμ μλͺ μ£ΌκΈ°λ₯Ό μ‘°μ¨νλ Claude Code μ€νμΌ λνν λ°°ν¬ λ° λ°°ν¬ μμ λλ€.
κΈ°μ‘΄μ λ¨μ λ§λ²μ¬ν λ°°ν¬ μ€ν¬λ¦½νΈλ€μ κ²½μ§λ νκ²½μ κ°μ νμ¬, μ¬μ©μκ° μνλ μμλλ‘ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ λ³μλ₯Ό μ€μ νκ³ νκ²½μ κ²μ¦νλ©°, μ΅μ’ μ μΌλ‘ Docker Compose λ°°ν¬ λͺ λ Ήμ μμ νκ² λ΄λ¦΄ μ μλ μ μ°ν TUI REPLμ μ 곡ν©λλ€.
λν, CLI μΈμ νμ±κ³Ό λ
ΌμΈν°λν°λΈ νμ΄νλΌμΈ λμ κΈ°λ₯μ ν¬ν¨νμ¬ curl -fsSL ... | bashλ₯Ό ν΅ν μ격 μμ μλ λ°°ν¬λ λμΌνκ² μ§μν©λλ€.
νλμ μ μ₯μ(
wsa4sdd-samples)λ₯Όpython-cliβnode-cliβpb-nfμΈ λΈλμΉλ‘ μ°¨λ‘λ‘ μ ννλ©°, κ° λΈλμΉλ§λ€repo β workspace β auth β bootstrap β status β dist-runνλ¦μΌλ‘ λ°°ν¬ν λ€docker ps -aνμΈκ³Όmake downκΉμ§ μμ°ν©λλ€.
- μ€ν μ μμ€ν
μνμ λͺ
λ Ήμ΄ λμλ§μ μ§κ΄μ μΌλ‘ μ€λͺ
νλ μ°μ»΄ ν€λμ ꡬλΆμ (
βββ)μ μ 곡ν©λλ€. - μ체 ꡬνλ κ³ κΈ λΌμΈ μλν° REPL ν둬ννΈ μμ(
>)μ μ 곡ν©λλ€.- μ
λ ₯ νμ€ν 리: μ/μλ νμ΄ν ν€λ₯Ό ν΅ν΄ μ΄μ μ€νν λͺ
λ Ήμ΄ κΈ°λ‘(μΈμ
νμΌ
/tmp/.wsa4sdd_historyμ°λ)μ νμνκ³ λ€μ λΆλ¬μ΅λλ€. - μ λ ₯ νΈμ§: μ’/μ° νμ΄ν ν€λ‘ μ€μκ° μ»€μ μ΄λμ΄ κ°λ₯νλ©°, Backspace λ° Delete ν€λ₯Ό ν΅ν μμ°μ€λ¬μ΄ κΈμ μ½μ λ° μμ λ₯Ό μ§μν©λλ€.
- μλμμ± νμ€λ²: λΉ μ
λ ₯μ°½ μνμμ
/ν€λ₯Ό μ λ ₯νλ©΄ μ ν κ°λ₯ν λͺ λ Ήμ΄ λ¦¬μ€νΈκ° νλ©΄ νλ¨μ λλ‘λ€μ΄ ννλ‘ νμ λμ΄ μ/μλ ν€μEnterλ‘ μμ½κ² μλ μμ±ν μ μμ΅λλ€.
- μ
λ ₯ νμ€ν 리: μ/μλ νμ΄ν ν€λ₯Ό ν΅ν΄ μ΄μ μ€νν λͺ
λ Ήμ΄ κΈ°λ‘(μΈμ
νμΌ
- TTYκ° μλ μλν νμ΄νλΌμΈ(
! -t 0) λλ CLI μΈμ μ€μ μ λνν TUIλ₯Ό 건λλ°κ³ direct CLI λͺ¨λλ‘ μ€νλ©λλ€.
λ°°ν¬μ νλ¦μ λνν μ μμμ κ°κ° μ μ΄ν μ μμ΅λλ€.
/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 μμ± β’ λ λ€ μμΌλ©΄ μ§μ μ€νλ²(pythonhello.pyλ±, nodepackage.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)λ₯Ό μ¦μ μ€ννκ³ κ²°κ³Όλ₯Ό μΆλ ₯ν©λλ€.
/repoλͺ λ Ήμ μΈμ μμ΄ μ€ννλ©΄ λνν Repository Managerκ° κ΅¬λλ©λλ€.- λ ν¬μ§ν 리λ₯Ό **μΆκ°(Add)**νκ±°λ, μ ννμ¬ **μμ (Delete)**ν μ μμ΅λλ€.
- νΉν Reorder κΈ°λ₯μ μ ννλ©΄ ν°λ―Έλ μμμ λ°©ν₯ν€(
UP/DOWNλλk/j)λ₯Ό μ΄μ©ν΄ μ νν μ μ₯μμ λκΈ°ν λ° μ‘°μ¨ μμλ₯Ό 물리μ μΌλ‘ λ°κΏ μ μμΌλ©°,Enterν€λ‘ κ·Έ μ리μμ λ½(Lock)μ κ±Έμ΄ μμλ₯Ό λ³κ²½ν©λλ€.
- λͺ
λ Ήμ΄ μ
λ ₯μΌλ‘ μ€μ λ λ³μλ€μ
/tmp/.wsa4sdd-${UID}.cacheνμΌλ‘ λ§€λ² μ§λ ¬νλμ΄ λ³΄κ΄λ©λλ€. - λμ€μ μ°κ²°μ΄ λμ΄μ§κ±°λ μμ μ’ λ£λλλΌλ, μ¬κΈ°λ μ μΈμ μνκ° κ³ μ€λν 볡μλ©λλ€.
- λ°°ν¬κ° μμ ν λλ¬κ±°λ(
/dist-runμ μ μ’ λ£), μ¬μ©μκ°/exitλλ 2ν μ°μCtrl+Cλ₯Ό λλ¬ λͺ μμ μΌλ‘ μ’ λ£ν κ²½μ°μλ μΊμλ₯Ό μλ²½ν μκ±°νμ¬ μμ νμΌμ λ¨κΈ°μ§ μμ΅λλ€.
μ€ν μ ν°λ―Έλ νλ©΄μ μλμ κ°μ΄ ꡬμ±λ μ°μ»΄ μλ΄κ° μΆλ ₯λ©λλ€.
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
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
>
- 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].
- μ€ν μ κΉμ§
[NOT SET]β μ€νν΄μΌ κ°μ΄ μ ν΄μ§λλ€. - CLI direct:
/workspace /path/to/dir - TUI interactive:
/workspaceλ§ μ λ ₯ μ β νμ¬ λλ ν°λ¦¬(Current) β‘ μμ λλ ν°λ¦¬(Parent) β’ μ¬μ©μ μ§μ (Custom pathβ¦) 3κ°μ§ λ©λ΄ μ€ μ ν/μ§μ ν©λλ€.
- μ€ν μ κΉμ§
[NOT SET]β μ€ν μ μλ 4κ°μ§ μ€ μ ν/μ§μ ν©λλ€. - TUI interactive (
/authλ§ μ λ ₯):- gh login status β
gh auth statusλ‘ νμ¬ λ‘κ·ΈμΈ μ¬μ©μλ₯Ό νμΈνκ³ νμ. - gh auth switch β μ¬λ¬ κ³μ κ° νμ± κ³μ μ ν.
- gh auth login β μ κ· GitHub λ‘κ·ΈμΈ.
- Register PAT β Username(μ ν) + Personal Access Token μ λ ₯. ν ν°μ μμ νμΌμ 600 κΆνμΌλ‘ μ μ₯λκ³ μ’ λ£ μ μλ μμ λ©λλ€.
- gh login status β
- CLI direct:
/auth status|switch|login|pat(μ€ν¬λ¦½ν νΈνμ©gh/noneλ νμ©). /statusμλ μΈμ¦ λ°©μκ³Ό ν¨κ» νμΈλ νμ¬ GitHub μ¬μ©μλͺ μ΄ νμλ©λλ€.
- 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]μΌλ‘ 무ν¨νλ©λλ€.
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νΒ·λ°°ν¬ μ±κ³΅)μλ ν λ§ μΊμλ μμ λμ§ μμ΅λλ€.
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μ격/μλνμμ ν μ€λ‘ κΈ°λ³Ένκ²½μ ꡬμ±νλ λΉλν λͺ¨λμ λλ€.
-a, --auth <κ°>: CLI μΈμ¦. κ°μ΄gh/pat/noneν€μλλ©΄ μΈμ¦ λ°©μ, κ·Έ μΈ λ¬Έμμ΄μ΄λ©΄ PAT ν ν°μΌλ‘ μ§μ μ΄λ°(λ°©μ=pat).-a/--authμν μ§μ.--default-envμ²λ¦¬ μ:-I/--input(repo) νμ β μμΌλ©΄ μλ¬ μΆλ ₯ ν μ’ λ£.- workspace = νμ¬ κ²½λ‘(PWD), ops repo = 첫 λ²μ§Έ repo μ΄λ¦ μλ μ§μ .
-a/--authνμ, κΈ°λ³Έ λ°©μpat, ν ν° κ°μ λ°λμ λ°μμΌ μ€ν β μμΌλ©΄ μλ¬ μΆλ ₯ ν μ’ λ£.
β οΈ -a <token>λ ν ν°μ΄ νλ‘μΈμ€ μΈμ(argv)μ λ ΈμΆλ©λλ€(ps/νμ€ν 리). μλν/λ°λͺ¨ νΈμμ©μ΄λ©°, μ΄μ μ CI μν¬λ¦Ώ λ§μ€νΉμ κΆμ₯ν©λλ€.
μ€ν¬λ¦½νΈλ₯Ό λ‘컬 μμ€ν μ μ§μ λ΄λ €λ°μ μꡬ μ€μΉνμ¬ λͺ λ Ήμ΄λ‘ μ¬μ©νκ³ μΆμ κ²½μ° μλ μμλλ‘ μνν©λλ€.
-
μ€ν¬λ¦½νΈ λ€μ΄λ‘λ λ° μ€ν κΆν λΆμ¬:
curl -fsSL -o wsa4sdd.sh https://raw.githubusercontent.com/WisemanLim/pub-wsa-for-sdd/main/wsa4sdd.sh chmod +x wsa4sdd.sh
-
μμ€ν κ²½λ‘(PATH)μ λ±λ‘νμ¬ κΈλ‘λ² μ€ν (μ ν μ¬ν):
# /usr/local/bin λλ μ¬μ©μ νκ²½μ PATH κ²½λ‘λ‘ νμΌ μ΄λ sudo mv wsa4sdd.sh /usr/local/bin/wsa4sdd -
λ‘컬 μ€ν λ° νλΌλ―Έν° μ λ¬ μμ:
# λ¨λ μ€ν (κΈ°λ³Έ 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
| μ΅μ | μ€λͺ | μμ |
|---|---|---|
-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 |
- macOS Native μλ²½ νΈν: macOSμ κΈ°λ³Έ μμ€ν
μμ
/bin/bash3.2.x λ²μ μ λλ€.wsa4sdd.shλ Bash 4.x+ μ μ© κΈ°λ₯(μ:local -nλ νΌλ°μ€ μ§μμ΄, Associative Arraysdeclare -Aλ±)μ λ°°μ νκ³ μμ Bash 3.2 νΈν λ¬Έλ²μΌλ‘ μ€κ³ λ° κ΅¬νλμμ΅λλ€. - μμ‘΄μ± μλ νμΈ: TUI μ§μ
λλ
/bootstrapκ³Όμ μμgit,docker,docker compose,makeλ±μ μμ‘΄ λκ΅¬κ° νμ¬ μμ€ν μ μ μ μ€μΉλμ΄ μλμ§ μλμΌλ‘ κ°μ§νκ³ λ―ΈλΉ μ μλ¦Όμ μ€λλ€.
