반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- argocd
- CI/CD
- keda
- Pulumi
- nginx ingress
- argo rollout
- Kopf
- Kubeflow
- operator
- Model Serving
- opensearch
- MLflow
- Litmus
- Argo
- gitea
- tekton
- blue/green
- seldon core
- 카오스 엔지니어링
- serving
- mlops
- knative
- Continuous Deployment
- Kubernetes
- gitops
- 오퍼레이터
- Kubernetes 인증
- opentelemetry
- CANARY
- kubernetes operator
Archives
- Today
- Total
Kubernetes 이야기
cobra library 사용법 본문
반응형
Cobra는 강력한 최신 CLI 애플리케이션을 만들기 위한 라이브러리이다.
https://github.com/spf13/cobra
github 소개에는 다음과 같이 코브라를 소개하고 있다.
- 쉬운 하위 명령 기반 CLI: app server, app fetch등
- 완전히 POSIX 호환 플래그(짧고 긴 버전 포함)
- 중첩된 하위 명령
- 전역, 지역 및 계단식 플래그
- 지능 적인 app srver제안app server
- 명령 및 플래그에 대한 자동 도움말 생성
- -h, --help등 의 자동 도움말 플래그 인식
- 애플리케이션에 대해 자동으로 생성된 셸 자동 완성(bash, zsh, fish, powershell)
- 애플리케이션에 대해 자동으로 생성된 매뉴얼 페이지
- 명령 별칭을 사용하면 깨지지 않고 변경할 수 있습니다.
- 자신의 도움말, 사용법 등을 정의할 수 있는 유연성
- 12단계 앱용 viper 와의 원활한 통합(선택 사항 )
설치
# go get -u github.com/spf13/cobra@latest
go: downloading github.com/spf13/pflag v1.0.5
go: downloading github.com/inconshreveable/mousetrap v1.0.0
go: downloading github.com/inconshreveable/mousetrap v1.0.1
go: added github.com/inconshreveable/mousetrap v1.0.1
go: added github.com/spf13/cobra v1.5.0
go: added github.com/spf13/pflag v1.0.5
기본적인 cobra 파일 구조는 아래와 같다.
main.go
cmd/
root.go
main.go 를 살펴보면 아래와 같다.
package main
import (
"{pathToYourApp}/cmd"
)
func main() {
cmd.Execute()
}
root.go 파일의 중요한 내용은 아래와 같다.
package cmd
import (
"fmt"
"os"
"github.com/spf13/cobra"
)
var rootCmd = &cobra.Command{
Use: "demo",
Short: "demo app to demonstrate cobra",
Long: `demo app to demonstrate cobra by addition`
}
func Execute() {
if err := rootCmd.Execute(); err != nil {
fmt.Println(err)
os.Exit(1)
}
}
이제 실행을 해보자.
# go run main.go
demo app to demonstrate cobra by addition
추가적으로 version 정보를 출력하는 command 를 추가해 보자.
version.go
package cmd
import (
"fmt"
"github.com/spf13/cobra"
)
func init() {
rootCmd.AddCommand(versionCmd)
}
var versionCmd = &cobra.Command{
Use: "version",
Short: "Print the version number of demo",
Long: `All software has versions. This is Demo`,
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Demo v1.0")
},
}
이제 다시한번 실행해 보자.
# go run main.go
demo app to demonstrate cobra by addition
Usage:
demo [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
version Print the version number of demo
Flags:
-h, --help help for demo
Use "demo [command] --help" for more information about a command.
# go run main.go version
Demo v1.0
add command 를 추가해보자.
add.go
package cmd
import (
"fmt"
"strconv"
"github.com/spf13/cobra"
)
func init() {
rootCmd.AddCommand(add)
}
var addCmd = &cobra.Command{
Use: "add",
Short: "add values passed to function",
Long: `Demo application to demonstrate cobra featues`,
Run: func(cmd *cobra.Command, args []string) {
sum := 0
for _ , args := range args {
num, err := strconv.Atoi(args)
if err != nil {
fmt.Println(err)
}
sum = sum + num
}
fmt.Println("result of addition is", sum)
},
}
추가한 후 다시 실행해 보자. add command 가 추가된 것을 볼 수 있다.
# go run main.go
demo app to demonstrate cobra by addition
Usage:
demo [command]
Available Commands:
add add values passed to function
completion Generate the autocompletion script for the specified shell
help Help about any command
version Print the version number of demo
Flags:
-h, --help help for demo
Use "demo [command] --help" for more information about a command.
실행결과
# go run main.go add 1 2 3
result of addition is 6
반응형
'개발 > go' 카테고리의 다른 글
GoDS ( Go Data Structures ) (0) | 2022.08.24 |
---|---|
Viper (0) | 2022.08.23 |
모둘과 패키지 (0) | 2022.08.22 |
Kubebuilder ( Kubernetes operator ) (0) | 2022.08.17 |
Golang - Gin Framework (0) | 2022.08.08 |
Comments