요약

  • golang 설정 관리 모듈

내용

  • 환경 변수, 설정 파일, kv 스토리지를 통해서 설정을 가져온다.
  • 설정 우선순위
    • 코드 내에서 Set함수를 통해 설정된 값
    • cli 커맨드 상의 flag
    • 환경 변수
    • 설정 파일
    • kv 스토리지
    • default

  • xplad cmd를 예시로 하면 다음과 같다.
...
// Setup chainId  
chainID := cast.ToString(appOpts.Get(flags.FlagChainID))  
if len(chainID) == 0 {
   // 설정 초기화
   v := viper.New()  
   // 디렉토리 설정
   v.AddConfigPath(filepath.Join(home, "config"))  
   // 파일 이름 설정
   v.SetConfigName("client")  
   // 파일 타입 설정
   v.SetConfigType("toml")  
   // Config 읽기
   if err := v.ReadInConfig(); err != nil {  
      panic(err)  
   }  
   conf := new(config.ClientConfig)
   // 언마샬링  
   if err := v.Unmarshal(conf); err != nil {  
      panic(err)  
   }  
   chainID = conf.ChainID  
}
...

참고