changelog-gen: доделал генерацию списка изменений для rmp.spec

This commit is contained in:
svk
2026-02-06 12:40:46 +03:00
parent 5dc1da5dbf
commit 676a0e6185

View File

@@ -106,9 +106,9 @@ proc ReadGitLog {} {
} }
} }
proc StoreProjectInfo {timeStamp} { proc StoreProjectInfo {timeStamp changelogFormat} {
global dir args global dir args
set cfgFile [open [file join $dir(cfg) $args(--project-name).conf] "w+"] set cfgFile [open [file join $dir(cfg) $args(--project-name).$changelogFormat.conf] "w+"]
puts $cfgFile "# set args(--project-version) \"$args(--project-version)\"" puts $cfgFile "# set args(--project-version) \"$args(--project-version)\""
puts $cfgFile "# set args(--project-release) \"$args(--project-release)\"" puts $cfgFile "# set args(--project-release) \"$args(--project-release)\""
puts $cfgFile "set lastCommitTimeStamp \"$timeStamp\"" puts $cfgFile "set lastCommitTimeStamp \"$timeStamp\""
@@ -141,36 +141,75 @@ proc GenerateChangelogDEB {} {
set timeStamp [clock format [clock scan $timeStamp] -format {%a, %e %b %Y %H:%M:%S %z}] set timeStamp [clock format [clock scan $timeStamp] -format {%a, %e %b %Y %H:%M:%S %z}]
# puts "> $commiter" # puts "> $commiter"
if {$index == 0} { if {$index == 0} {
puts "$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n" # puts "$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n"
append outText "$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n\n" append outText "$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n\n"
set commiter [lindex $record 2] set commiter [lindex $record 2]
StoreProjectInfo $timeStamp StoreProjectInfo $timeStamp "deb"
# puts "\n \[ [string trim $commiter] \]" # puts "\n \[ [string trim $commiter] \]"
} }
# puts ">> $commiter" # puts ">> $commiter"
if {$commiter ne [lindex $record 2]} { if {$commiter ne [lindex $record 2]} {
puts "\n -- [string trim $commiter] <$email> $timeStamp" # puts "\n -- [string trim $commiter] <$email> $timeStamp"
append outText "\n -- [string trim $commiter] <$email> $timeStamp\n" append outText "\n -- [string trim $commiter] <$email> $timeStamp\n"
puts "\n$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n" # puts "\n$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n"
append outText "\n$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n\n" append outText "\n$args(--project-name) ($args(--project-version)-$args(--project-release)) stable; urgency=medium\n\n"
set commiter [lindex $record 2] set commiter [lindex $record 2]
# puts "\n \[ [string trim $commiter] \]" # puts "\n \[ [string trim $commiter] \]"
} }
set commitTex [lindex $record 4] set commitTex [lindex $record 4]
puts " * $commitTex" # puts " * $commitTex"
append outText " * $commitTex\n" append outText " * $commitTex\n"
} }
puts "\n -- [string trim $commiter] <$email> $timeStamp" # puts "\n -- [string trim $commiter] <$email> $timeStamp"
append outText "\n -- [string trim $commiter] <$email> $timeStamp\n" append outText "\n -- [string trim $commiter] <$email> $timeStamp\n"
return $outText return $outText
} }
proc GenerateChangelogRPM {} { proc GenerateChangelogRPM {} {
puts "GenerateChangelogRPM" global args
# puts "GenerateChangelogRPM"
set lastCommitTimeStamp ""
set commiter ""
set commitText ""
# ReadGitLog
set lst [lsort -integer -index 0 [ReadGitLog]]
# puts $lst
# exit
set outText ""
foreach l $lst {
set index [lindex $l 0]
set line [lindex $l 1]
# puts "$index - $line"
set record [split $line ","]
set timeStamp [string trim [lindex $record 1]]
set email [string trim [lindex $record 3]]
if {$lastCommitTimeStamp eq ""} {
set lastCommitTimeStamp [string trim [lindex $record 1]]
}
set timeStamp [clock format [clock scan $timeStamp] -format {%a %e %b %Y}]
if {$index == 0} {
set commiter [lindex $record 2]
append outText "$timeStamp [string trim $commiter] <$email> $args(--project-version)-$args(--project-release)\n"
StoreProjectInfo $timeStamp "deb"
}
if {$commiter ne [lindex $record 2]} {
append outText "\n"
append outText "$timeStamp [string trim $commiter] <$email> $args(--project-version)-$args(--project-release)\n"
set commiter [lindex $record 2]
}
set commitTex [lindex $record 4]
# puts " * $commitTex"
append outText " * $commitTex\n"
} }
# puts "\n -- [string trim $commiter] <$email> $timeStamp"
# append outText "\n -- [string trim $commiter] <$email> $timeStamp\n"
return $outText
}
proc GenerateChangelogTXT {} { proc GenerateChangelogTXT {} {
global args global args
@@ -189,14 +228,15 @@ proc GenerateChangelogTXT {} {
if {$lastCommitTimeStamp eq ""} { if {$lastCommitTimeStamp eq ""} {
set lastCommitTimeStamp [string trim [lindex $record 1]] set lastCommitTimeStamp [string trim [lindex $record 1]]
} }
set timeStamp [clock format [clock scan $timeStamp] -format {%a, %e %b %Y %H:%M:%S %z}] # * Mon Nov 28 2022 Sergey Kalinin <svk@nuk-svk.ru> 2.0.0
set timeStamp [clock format [clock scan $timeStamp] -format {%a %b %e %Y %H:%M:%S %z}]
# puts "> $commiter" # puts "> $commiter"
if {$index == 0} { if {$index == 0} {
append outText "$args(--project-name) ($args(--project-version)-$args(--project-release))\n" append outText "$args(--project-name) ($args(--project-version)-$args(--project-release))\n"
set commiter [lindex $record 2] set commiter [lindex $record 2]
puts "\n[string trim $commiter] <$email> $timeStamp" puts "\n[string trim $commiter] <$email> $timeStamp"
append outText "\n[string trim $commiter] <$email> $timeStamp\n" append outText "\n[string trim $commiter] <$email> $timeStamp\n"
StoreProjectInfo $timeStamp StoreProjectInfo $timeStamp "txt"
} }
if {$commiter ne [lindex $record 2]} { if {$commiter ne [lindex $record 2]} {
puts "\n[string trim $commiter] <$email> $timeStamp" puts "\n[string trim $commiter] <$email> $timeStamp"
@@ -254,6 +294,68 @@ proc StoreChangeLog {outText} {
} else { } else {
set outFile [open $args(--out-file) "w+"] set outFile [open $args(--out-file) "w+"]
puts $outFile $outText puts $outFile $outText
puts $outText
close $outFile
}
}
proc StoreChangeLogRPM {outText} {
global args
if [file exists $args(--out-file)] {
file copy -force $args(--out-file) "$args(--out-file).tmp"
set fh [open $args(--out-file) r]
set lines [split [read $fh] "\n"]
close $fh
set result [list]
set inserted false
foreach line $lines {
lappend result $line
if {!$inserted && $line eq "%changelog"} {
lappend result $outText
set inserted true
}
}
set fh [open $args(--out-file) w]
puts $fh [join $result "\n"]
close $fh
}
}
proc StoreChangeLogRPM_ {outText} {
global args
puts "Changelog generator write a file $args(--out-file)"
if [file exists $args(--out-file)] {
file copy -force $args(--out-file) "$args(--out-file).tmp"
set origOutFile [open "$args(--out-file).tmp" "r"]
set origText [read $origOutFile]
close $origOutFile
set outFile [open $args(--out-file) "w"]
puts $outFile $outText
puts $outFile $origText
close $outFile
if [info exists args(--last)] {
set outFile [open $args(--out-file) "r+"]
puts $outFile $outText
close $outFile
} else {
set outFile [open $args(--out-file) "w+"]
puts $outFile $outText
close $outFile
}
} else {
set outFile [open $args(--out-file) "w+"]
puts $outFile $outText
puts $outText
close $outFile close $outFile
} }
} }
@@ -311,26 +413,43 @@ if ![info exists args(--project-release)] {
exit exit
} }
if [file exists [file join $dir(cfg) $args(--project-name).conf]] { puts "Running chngelog generator with folowing options:\n"
source [file join $dir(cfg) $args(--project-name).conf]
}
foreach arg [array names args] { foreach arg [array names args] {
puts "$arg $args($arg)" puts "\t$arg $args($arg)"
} }
if [info exists args(--deb)] { if [info exists args(--deb)] {
if [file exists [file join $dir(cfg) $args(--project-name).deb.conf]] {
source [file join $dir(cfg) $args(--project-name).deb.conf]
}
set outText [GenerateChangelogDEB] set outText [GenerateChangelogDEB]
if [info exists args(--out-file)] { if [info exists args(--out-file)] {
StoreChangeLog $outText StoreChangeLog $outText
} else {
puts $outText
} }
} }
if [info exists args(--rpm)] { if [info exists args(--rpm)] {
GenerateChangelogRPM if [file exists [file join $dir(cfg) $args(--project-name).rpm.conf]] {
source [file join $dir(cfg) $args(--project-name).rpm.conf]
}
set outText [GenerateChangelogRPM]
# puts $outText
if [info exists args(--out-file)] {
StoreChangeLogRPM $outText
} else {
puts $outText
}
} }
if [info exists args(--txt)] { if [info exists args(--txt)] {
if [file exists [file join $dir(cfg) $args(--project-name).txt.conf]] {
source [file join $dir(cfg) $args(--project-name).txt.conf]
}
set outText [GenerateChangelogTXT] set outText [GenerateChangelogTXT]
if [info exists args(--out-file)] { if [info exists args(--out-file)] {
StoreChangeLog $outText StoreChangeLog $outText
} else {
puts $outText
} }
} }