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  }