Skip to content

Commit 5742120

Browse files
committed
better changes logging
1 parent 149e01e commit 5742120

File tree

3 files changed

+62
-1
lines changed

3 files changed

+62
-1
lines changed

internal/models/updates.go

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package models
2+
3+
import (
4+
"sort"
5+
"strings"
6+
)
7+
8+
// UpdatedItem is a struct to hold updated item information
9+
type UpdatedItem struct {
10+
Role string
11+
OldVersion string
12+
NewVersion string
13+
}
14+
15+
// UpdatedItems is a slice of UpdatedItem
16+
type UpdatedItems []*UpdatedItem
17+
18+
// Add adds a new UpdatedItem to UpdatedItems
19+
func (u UpdatedItems) Add(role, oldVersion, newVersion string) UpdatedItems {
20+
return append(u, &UpdatedItem{Role: role, OldVersion: oldVersion, NewVersion: newVersion})
21+
}
22+
23+
// String returns a string representation of UpdatedItems
24+
func (u UpdatedItems) String(prefix string) string {
25+
sort.Slice(u, func(i, j int) bool {
26+
return u[i].Role < u[j].Role
27+
})
28+
29+
var msg strings.Builder
30+
for _, item := range u {
31+
if item.OldVersion == "" {
32+
msg.WriteString("added ")
33+
msg.WriteString(item.Role)
34+
msg.WriteString(" (")
35+
msg.WriteString(item.NewVersion)
36+
msg.WriteString("); ")
37+
continue
38+
}
39+
msg.WriteString("updated ")
40+
msg.WriteString(item.Role)
41+
msg.WriteString(" (")
42+
msg.WriteString(item.OldVersion)
43+
msg.WriteString(" -> ")
44+
msg.WriteString(item.NewVersion)
45+
msg.WriteString("); ")
46+
}
47+
return prefix + msg.String()
48+
}

internal/parser/files.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,14 @@ func parseAdditionalFile(req models.File) models.File {
4848

4949
// UpdateFile updates the requirements.yml file
5050
func UpdateFile(entries models.File, requirementsPath string) {
51+
changes := models.UpdatedItems{}
5152
var wg sync.WaitGroup
5253
wg.Add(len(entries))
5354
for i, entry := range entries {
5455
go func(i int, entry *models.Entry, wg *sync.WaitGroup) {
5556
newVersion := getNewVersion(entry.Src, entry.Version)
5657
if newVersion != "" {
57-
utils.Log(entry.Src, entry.Version, "->", newVersion)
58+
changes = changes.Add(entry.GetName(), entry.Version, newVersion)
5859
entry.Version = newVersion
5960
entries[i] = entry
6061
}
@@ -63,6 +64,10 @@ func UpdateFile(entries models.File, requirementsPath string) {
6364
}
6465
wg.Wait()
6566

67+
if len(changes) > 0 {
68+
utils.Log(changes.String("requirements changes: "))
69+
}
70+
6671
outb, err := yaml.Marshal(entries)
6772
if err != nil {
6873
utils.Log("ERROR: marshaling yaml", err)

internal/parser/roles.go

+8
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,24 @@ func InstallMissingRoles(rolesPath string, entries models.File, cleanup bool) {
2525
}
2626
}
2727
var wg sync.WaitGroup
28+
changes := models.UpdatedItems{}
2829
wg.Add(len(entries))
2930
for _, entry := range entries {
3031
go func(entry *models.Entry, wg *sync.WaitGroup) {
3132
if !entry.IsInstalled(rolesPath) {
33+
if !ignoredVersions[entry.Version] {
34+
changes = changes.Add(entry.GetName(), entry.GetInstallInfo(rolesPath).Version, entry.Version)
35+
}
3236
installRole(rolesPath, entry, cleanup)
3337
}
3438
wg.Done()
3539
}(entry, &wg)
3640
}
3741
wg.Wait()
42+
43+
if len(changes) > 0 {
44+
utils.Log(changes.String("roles updated: "))
45+
}
3846
}
3947

4048
// GetInstalledRoles returns all roles that are already installed

0 commit comments

Comments
 (0)