mirror of
https://github.com/danielmiessler/Fabric.git
synced 2026-01-07 21:44:02 -05:00
Merge pull request #1923 from ksylvan/kayvan/fix-generate-changelog-db-sync-issues
ChangeLog Generation stability
This commit is contained in:
7
cmd/generate_changelog/incoming/1923.txt
Normal file
7
cmd/generate_changelog/incoming/1923.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
### PR [#1923](https://github.com/danielmiessler/Fabric/pull/1923) by [ksylvan](https://github.com/ksylvan): ChangeLog Generation stability
|
||||
|
||||
- Fix: improve date parsing and prevent early return when PR numbers exist
|
||||
- Add SQLite datetime formats to version date parsing logic
|
||||
- Loop through multiple date formats until one succeeds
|
||||
- Include SQLite fractional seconds format support
|
||||
- Prevent early return when version has PR numbers to output
|
||||
21
cmd/generate_changelog/internal/cache/cache.go
vendored
21
cmd/generate_changelog/internal/cache/cache.go
vendored
@@ -202,14 +202,23 @@ func (c *Cache) GetVersions() (map[string]*git.Version, error) {
|
||||
}
|
||||
|
||||
if dateStr.Valid {
|
||||
// Try RFC3339Nano first (for nanosecond precision), then fall back to RFC3339
|
||||
v.Date, err = time.Parse(time.RFC3339Nano, dateStr.String)
|
||||
if err != nil {
|
||||
v.Date, err = time.Parse(time.RFC3339, dateStr.String)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Error parsing date '%s' for version '%s': %v. Expected format: RFC3339 or RFC3339Nano.\n", dateStr.String, v.Name, err)
|
||||
// Try multiple date formats: SQLite format, RFC3339Nano, and RFC3339
|
||||
dateFormats := []string{
|
||||
"2006-01-02 15:04:05-07:00", // SQLite DATETIME format
|
||||
"2006-01-02 15:04:05.999999999-07:00", // SQLite with fractional seconds
|
||||
time.RFC3339Nano,
|
||||
time.RFC3339,
|
||||
}
|
||||
var parseErr error
|
||||
for _, format := range dateFormats {
|
||||
v.Date, parseErr = time.Parse(format, dateStr.String)
|
||||
if parseErr == nil {
|
||||
break // Successfully parsed
|
||||
}
|
||||
}
|
||||
if parseErr != nil {
|
||||
fmt.Fprintf(os.Stderr, "Error parsing date '%s' for version '%s': %v\n", dateStr.String, v.Name, parseErr)
|
||||
}
|
||||
}
|
||||
|
||||
if prNumbersJSON != "" {
|
||||
|
||||
@@ -470,7 +470,8 @@ func (g *Generator) generateRawVersionContent(version *git.Version) string {
|
||||
}
|
||||
|
||||
// There are occasionally no PRs or direct commits other than version bumps, so we handle that gracefully
|
||||
if len(prCommits) == 0 && len(directCommits) == 0 {
|
||||
// However, don't return early if we have PRs to output from version.PRNumbers
|
||||
if len(prCommits) == 0 && len(directCommits) == 0 && len(version.PRNumbers) == 0 {
|
||||
return ""
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user