github.com/fredbi/git-chglog@v0.0.0-20190706071416-d35c598eac81/cmd/git-chglog/config_builder.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 // ConfigBuilder ... 9 type ConfigBuilder interface { 10 Builder 11 } 12 13 type configBuilderImpl struct{} 14 15 // NewConfigBuilder ... 16 func NewConfigBuilder() ConfigBuilder { 17 return &configBuilderImpl{} 18 } 19 20 // Build ... 21 func (*configBuilderImpl) Build(ans *Answer) (string, error) { 22 var msgFormat *CommitMessageFormat 23 24 for _, ff := range formats { 25 f, _ := ff.(*CommitMessageFormat) 26 if f.display == ans.CommitMessageFormat { 27 msgFormat = f 28 break 29 } 30 } 31 32 if msgFormat == nil { 33 return "", fmt.Errorf("\"%s\" is an invalid commit message format", ans.CommitMessageFormat) 34 } 35 36 repoURL := strings.TrimRight(ans.RepositoryURL, "/") 37 if repoURL == "" { 38 repoURL = "\"\"" 39 } 40 41 config := fmt.Sprintf(`style: %s 42 template: %s 43 info: 44 title: CHANGELOG 45 repository_url: %s 46 options: 47 commits: 48 # filters: 49 # Type: 50 # - feat 51 # - fix 52 # - perf 53 # - refactor 54 commit_groups: 55 # title_maps: 56 # feat: Features 57 # fix: Bug Fixes 58 # perf: Performance Improvements 59 # refactor: Code Refactoring 60 header: 61 pattern: "%s" 62 pattern_maps:%s 63 notes: 64 keywords: 65 - BREAKING CHANGE`, 66 ans.Style, 67 defaultTemplateFilename, 68 repoURL, 69 msgFormat.pattern, 70 msgFormat.PatternMapString(), 71 ) 72 73 return config, nil 74 }