Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 65 additions & 57 deletions cmd/batch.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ type Batch struct {
TemplateCache *core.TemplateCache

// Computed values
config *core.Config // current configuration
cfg *core.Config // current configuration
writer io.Writer // writer we are batching to
version string // the version we are bumping to
}
Expand Down Expand Up @@ -164,12 +164,12 @@ Changes are sorted in the following order:
}

func (b *Batch) getBatchData() (*core.BatchData, error) {
previousVersion, err := core.GetLatestVersion(b.config, false, b.Project)
previousVersion, err := b.cfg.LatestVersion(false, b.Project)
if err != nil {
return nil, err
}

allChanges, err := core.GetChanges(b.config, b.IncludeDirs, b.Project)
allChanges, err := b.cfg.Changes(b.IncludeDirs, b.Project)
if err != nil {
return nil, err
}
Expand All @@ -178,8 +178,7 @@ func (b *Batch) getBatchData() (*core.BatchData, error) {
return nil, errNoChangesNotAllowed
}

currentVersion, err := core.GetNextVersion(
b.config,
currentVersion, err := b.cfg.NextVersion(
b.version,
b.Prerelease,
b.Meta,
Expand All @@ -201,7 +200,7 @@ func (b *Batch) getBatchData() (*core.BatchData, error) {
Prerelease: currentVersion.Prerelease(),
Metadata: currentVersion.Metadata(),
Changes: allChanges,
Env: b.config.EnvVars(),
Env: b.cfg.EnvVars(),
}, nil
}

Expand All @@ -210,22 +209,22 @@ func (b *Batch) Run(cmd *cobra.Command, args []string) (err error) {
// save our version for later use
b.version = args[0]

b.config, err = core.LoadConfig()
b.cfg, err = core.LoadConfig()
if err != nil {
return err
}

if len(b.config.Projects) > 0 {
var pc *core.ProjectConfig
if len(b.cfg.Project.Options) > 0 {
var pc *core.ProjectOptions

pc, err = b.config.Project(b.Project)
pc, err = b.cfg.ProjectByName(b.Project)
if err != nil {
return err
}

b.Project = pc.Key

err = os.MkdirAll(filepath.Join(b.config.ChangesDir, b.Project), core.CreateDirMode)
err = os.MkdirAll(filepath.Join(b.cfg.RootDir, b.Project), core.CreateDirMode)
if err != nil {
return err
}
Expand All @@ -241,12 +240,12 @@ func (b *Batch) Run(cmd *cobra.Command, args []string) (err error) {
} else {
var versionFileName string

versionFileName, err = b.TemplateCache.ExecuteString(b.config.VersionFileFormat, data)
versionFileName, err = b.TemplateCache.ExecuteString(b.cfg.ReleaseNotes.Version.FilePath, data)
if err != nil {
return err
}

versionFilePath := filepath.Join(b.config.ChangesDir, b.Project, versionFileName)
versionFilePath := filepath.Join(b.cfg.RootDir, b.Project, versionFileName)

if !b.Force {
if exists, existErr := core.FileExists(versionFilePath); exists || existErr != nil {
Expand All @@ -256,7 +255,7 @@ func (b *Batch) Run(cmd *cobra.Command, args []string) (err error) {

versionFile, createErr := os.Create(versionFilePath)
if createErr != nil {
return createErr
return fmt.Errorf("creating release notes file %q: %w", versionFilePath, createErr)
}

defer func() {
Expand All @@ -274,9 +273,9 @@ func (b *Batch) Run(cmd *cobra.Command, args []string) (err error) {
}

err = b.WriteTemplate(
b.config.VersionFormat,
b.config.Newlines.BeforeVersion,
b.config.Newlines.AfterVersion,
b.cfg.ReleaseNotes.Version.Format,
b.cfg.ReleaseNotes.Version.Newlines.Before,
b.cfg.ReleaseNotes.Version.Newlines.After,
data,
)
if err != nil {
Expand All @@ -286,12 +285,12 @@ func (b *Batch) Run(cmd *cobra.Command, args []string) (err error) {
for _, relativePath := range []string{
b.VersionHeaderPath,
b.OldHeaderPath,
b.config.VersionHeaderPath,
b.cfg.ReleaseNotes.Header.FilePath,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldn't this be

Suggested change
b.cfg.ReleaseNotes.Header.FilePath,
b.cfg.ReleaseNotes.Version.FilePath,

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably, will take a look

} {
err = b.WriteTemplateFile(
relativePath,
b.config.Newlines.BeforeHeaderFile+1,
b.config.Newlines.AfterHeaderFile,
b.cfg.ReleaseNotes.Version.Newlines.Before+1,
b.cfg.ReleaseNotes.Version.Newlines.After,
data,
)
if err != nil {
Expand All @@ -300,9 +299,9 @@ func (b *Batch) Run(cmd *cobra.Command, args []string) (err error) {
}

err = b.WriteTemplate(
b.config.HeaderFormat,
b.config.Newlines.BeforeHeaderTemplate+1,
b.config.Newlines.AfterHeaderTemplate,
b.cfg.ReleaseNotes.Header.Format,
b.cfg.ReleaseNotes.Header.Newlines.Before+1,
b.cfg.ReleaseNotes.Header.Newlines.After,
data,
)
if err != nil {
Expand All @@ -315,37 +314,40 @@ func (b *Batch) Run(cmd *cobra.Command, args []string) (err error) {
}

err = b.WriteTemplate(
b.config.FooterFormat,
b.config.Newlines.BeforeFooterTemplate+1,
b.config.Newlines.AfterFooterTemplate,
b.cfg.ReleaseNotes.Footer.Format,
b.cfg.ReleaseNotes.Footer.Newlines.Before+1,
b.cfg.ReleaseNotes.Footer.Newlines.After,
data,
)
if err != nil {
return err
}

for _, relativePath := range []string{b.VersionFooterPath, b.config.VersionFooterPath} {
for _, relativePath := range []string{
b.VersionFooterPath,
b.cfg.ReleaseNotes.Footer.FilePath,
} {
err = b.WriteTemplateFile(
relativePath,
b.config.Newlines.BeforeFooterFile+1,
b.config.Newlines.AfterFooterFile,
b.cfg.ReleaseNotes.Footer.Newlines.Before+1,
b.cfg.ReleaseNotes.Footer.Newlines.After,
data,
)
if err != nil {
return err
}
}

_ = core.WriteNewlines(b.writer, b.config.Newlines.EndOfVersion)
_ = core.WriteNewlines(b.writer, b.config.Newlines.AfterReleaseNotes)
_ = core.WriteNewlines(b.writer, b.cfg.ReleaseNotes.Version.Newlines.After)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This setting was already used and section makes it conceptually clearer.

Suggested change
_ = core.WriteNewlines(b.writer, b.cfg.ReleaseNotes.Version.Newlines.After)
_ = core.WriteNewlines(b.writer, b.cfg.ReleaseNotes.Section.Newlines.After)

_ = core.WriteNewlines(b.writer, b.cfg.ReleaseNotes.Newlines.After)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
_ = core.WriteNewlines(b.writer, b.cfg.ReleaseNotes.Newlines.After)
_ = core.WriteNewlines(b.writer, b.cfg.ReleaseNotes.Chapter.Newlines.After)


if !b.DryRun && !b.KeepFragments {
err = b.ClearUnreleased(
data.Changes,
b.VersionHeaderPath,
b.config.VersionHeaderPath,
b.cfg.ReleaseNotes.Header.FilePath,
b.VersionFooterPath,
b.config.VersionFooterPath,
b.cfg.ReleaseNotes.Footer.FilePath,
)
if err != nil {
return err
Expand All @@ -354,17 +356,17 @@ func (b *Batch) Run(cmd *cobra.Command, args []string) (err error) {

if !b.DryRun && b.RemovePrereleases {
// only chance we fail is already checked above
allVers, _ := core.GetAllVersions(b.config, false, b.Project)
allVers, _ := b.cfg.AllVersions(false, b.Project)

for _, v := range allVers {
if v.Prerelease() == "" {
continue
}

err = os.Remove(filepath.Join(
b.config.ChangesDir,
b.cfg.RootDir,
b.Project,
v.Original()+"."+b.config.VersionExt,
v.Original()+"."+b.cfg.ReleaseNotes.Extension,
))
if err != nil {
return err
Expand Down Expand Up @@ -409,7 +411,7 @@ func (b *Batch) WriteTemplateFile(
return nil
}

fullPath := filepath.Join(b.config.ChangesDir, b.config.UnreleasedDir, relativePath)
fullPath := filepath.Join(b.cfg.RootDir, b.cfg.Fragment.Dir, relativePath)

var fileBytes []byte

Expand All @@ -430,49 +432,55 @@ func (b *Batch) WriteChanges(changes []core.Change) error {
lastKind := ""

for _, change := range changes {
if b.config.ComponentFormat != "" && lastComponent != change.Component {
if b.cfg.Component.Prompt.Format != "" && lastComponent != change.Component {
lastComponent = change.Component
lastKind = ""

err := b.WriteTemplate(
b.config.ComponentFormat,
b.config.Newlines.BeforeComponent+1,
b.config.Newlines.AfterComponent,
b.cfg.Component.Prompt.Format,
b.cfg.Component.Newlines.Before+1,
b.cfg.Component.Newlines.After,
core.ComponentData{
Component: lastComponent,
Env: b.config.EnvVars(),
Env: b.cfg.EnvVars(),
},
)
if err != nil {
return err
}
}

if b.config.KindFormat != "" && lastKind != change.Kind {
if lastKind != change.Kind {
lastKind = change.Kind
newKind := b.config.KindFromKeyOrLabel(change.Kind)
kindHeader := b.config.KindHeader(change.Kind)
newKind := b.cfg.KindFromKeyOrLabel(change.Kind)
format := b.cfg.KindHeader(change.Kind)

// TODO: new config supports per kind newlines
// we need to pick the proper value between
// this kinds newlines and the global newlines
// but for now, just use globals

err := b.WriteTemplate(
kindHeader,
b.config.Newlines.BeforeKind+1,
b.config.Newlines.AfterKind,
format,
b.cfg.Kind.Newlines.Before+1,
b.cfg.Kind.Newlines.After,
core.KindData{
Kind: newKind.Label,
Env: b.config.EnvVars(),
// TODO: should this be key?
Kind: newKind.Prompt.Label,
Env: b.cfg.EnvVars(),
},
)
if err != nil {
return err
}
}

changeFormat := b.config.ChangeFormatForKind(lastKind)
changeFormat := b.cfg.ChangeFormatForKind(lastKind)

err := b.WriteTemplate(
changeFormat,
b.config.Newlines.BeforeChange+1,
b.config.Newlines.AfterChange,
b.cfg.Change.Newlines.Before+1,
b.cfg.Change.Newlines.After,
Comment on lines +482 to +483

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
b.cfg.Change.Newlines.Before+1,
b.cfg.Change.Newlines.After,
b.cfg.ReleaseNotes.Change.Newlines.Before+1,
b.cfg.ReleaseNotes.Change.Newlines.After,

change,
)
if err != nil {
Expand All @@ -490,7 +498,7 @@ func (b *Batch) ClearUnreleased(changes []core.Change, otherFiles ...string) err
)

if b.MoveDir != "" {
err = os.MkdirAll(filepath.Join(b.config.ChangesDir, b.MoveDir), core.CreateDirMode)
err = os.MkdirAll(filepath.Join(b.cfg.RootDir, b.MoveDir), core.CreateDirMode)
if err != nil {
return err
}
Expand All @@ -501,7 +509,7 @@ func (b *Batch) ClearUnreleased(changes []core.Change, otherFiles ...string) err
continue
}

fullPath := filepath.Join(b.config.ChangesDir, b.config.UnreleasedDir, p)
fullPath := filepath.Join(b.cfg.RootDir, b.cfg.Fragment.Dir, p)

if exists, existErr := core.FileExists(fullPath); exists && existErr == nil {
filesToMove = append(filesToMove, fullPath)
Expand All @@ -516,7 +524,7 @@ func (b *Batch) ClearUnreleased(changes []core.Change, otherFiles ...string) err
if b.MoveDir != "" {
err = os.Rename(
f,
filepath.Join(b.config.ChangesDir, b.MoveDir, filepath.Base(f)),
filepath.Join(b.cfg.RootDir, b.MoveDir, filepath.Base(f)),
)
if err != nil {
return err
Expand All @@ -530,7 +538,7 @@ func (b *Batch) ClearUnreleased(changes []core.Change, otherFiles ...string) err
}

for _, include := range b.IncludeDirs {
fullInclude := filepath.Join(b.config.ChangesDir, include)
fullInclude := filepath.Join(b.cfg.RootDir, include)

files, _ := os.ReadDir(fullInclude)
if len(files) == 0 {
Expand Down
Loading
Loading