[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/