[Go] cobra: CLI ๋งŒ๋“ค๊ธฐ

cobra๋Š” ๋Œ€ํ‘œ์ ์ธ Go์˜ cli ์ œ์ž‘์šฉ ๋„๊ตฌ๋‹ค.



์„ค์น˜ (CLI)

์ด๊ฑด ์ƒ์œผ๋กœ ๋‹ค ์งœ๋ ค๋ฉด ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๋ถˆํŽธํ•˜๊ฒŒ ์ƒ๊ฒจ๋จน์–ด์„œ, ์ œ๊ณต๋˜๋Š” cli๋ฅผ ์จ์•ผ ์ข€ ์“ธ๋งŒํ•˜๋‹ค.
๋จผ์ € ์„ค์น˜ํ•ด์ค€๋‹ค.

go install github.com/spf13/cobra-cli@latest

๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ์‹คํ–‰์ด ๋˜๋ฉด ์ž˜ ๊น”๋ฆฐ ๊ฒƒ์ด๋‹ค.




์ดˆ๊ธฐํ™”

cobra๋ฅผ ์ ์šฉํ•  ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๊ฒฝ๋กœ์—์„œ init์„ ๋จน์—ฌ์ค€๋‹ค.

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ๋ญ๊ฐ€ ์ƒ๊ธด๋‹ค.

์ด๋Œ€๋กœ ๋Œ€์ถฉ ์‹คํ–‰ํ•ด๋ณด๋ฉด ๋ญ๊ฐ€ ๋˜๋Š”๊ฒŒ ์—†๋‹ค.

์™œ๋ƒํ•˜๋ฉด

root์— ์‹คํ–‰ ๋กœ์ง์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ €๊ธฐ๋‹ค Run์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

๊ทธ๋Ÿฌ๊ณ  ์‹คํ–‰ํ•˜๋ฉด

๋  ๊ฒƒ์ด๋‹ค.




subcommand ์ถ”๊ฐ€ํ•˜๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ cli ๋„๊ตฌ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ subcommand๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, git add์—์„œ git์€ ๋ฃจํŠธ ์ปค๋งจ๋“œ๊ณ , add๊ฐ€ ์„œ๋ธŒ์ปค๋งจ๋“œ๋‹ค.

์ด๊ฒƒ๋„ cli๋ฅผ ์จ์„œ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
๋‚œ run์ด๋ผ๋Š” ์„œ๋ธŒ์ปค๋งจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค.

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€๋  ๊ฒƒ์ด๊ณ 

์‹คํ–‰๋„ ๋  ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  -h ๊ฐ™์€ ๊ธฐ๋ณธ ํ”Œ๋ž˜๊ทธ ๋“ฑ์€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ์ด ๋œ๋‹ค.




ํ”Œ๋ž˜๊ทธ๊ฐ’ ๋ฐ›๊ธฐ

git๋งŒ ์จ๋ด๋„ git commit -m "foo" ๊ฐ™์€ ์‹์œผ๋กœ ์ถ”๊ฐ€ ์˜ต์…˜๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
์ด๊ฑด cobra์—์„œ ํ”Œ๋ž˜๊ทธ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๋จผ์ € ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ๊น”์•„์ค€๋‹ค.

์‚ฌ์‹ค ๋‚˜๋Š” ์ด๊ฒƒ๋ถ€ํ„ฐ ์ข€ ๋ถˆํŽธํ•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ์‹์œผ๋กœ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ •์˜ํ•˜๊ณ , ํฌ์ธํ„ฐ๋กœ ๊ฐ’์„ ์‘ค์…”๋ฐ•์•„์ฃผ๋„๋ก ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Run์—์„œ ์ฝ์–ด์„œ ์“ฐ๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿผ ์ถ”๊ฐ€๋  ๊ฒƒ์ด๊ณ 

์ „๋‹ฌ๋„ ๋  ๊ฒƒ์ด๋‹ค.




ํ•„์ˆ˜ ํ”Œ๋ž˜๊ทธ

cobra์—์„œ ํ”Œ๋ž˜๊ทธ๋Š” ํ•ญ์ƒ optional์ธ๊ฒŒ ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค.
๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ํ”Œ๋ž˜๊ทธ๋ฅผ ์•ˆ์ค˜๋„

์ž˜๋งŒ ๋ˆ๋‹ค.

์ €๊ฑธ ๋ง‰์œผ๋ ค๋ฉด ๋ณ„๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์„œ ํ•ด๋‹น ํ”Œ๋ž˜๊ทธ๋ฅผ ํ•„์ˆ˜์š”์†Œ๋กœ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ

๊ทธ๋Ÿผ ์ด์ œ ๋ง‰ํž ๊ฒƒ์ด๋‹ค.



์ฐธ์กฐ
https://mcauto.github.io/back-end/2018/10/30/golang-cobra/