Реализовал базовые функции генератора журнала изменений
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
This commit is contained in:
parent
9ad7523e7c
commit
f68cd75600
141
changelog-gen.tcl
Executable file
141
changelog-gen.tcl
Executable file
|
@ -0,0 +1,141 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Tcl ignores the next line -*- tcl -*- \
|
||||||
|
exec tclsh "$0" -- "$@"
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# ProjMan 2
|
||||||
|
# Distributed under GNU Public License
|
||||||
|
# Author: Sergey Kalinin svk@nuk-svk.ru
|
||||||
|
# Copyright (c) "SVK", 2024, https://nuk-svk.ru
|
||||||
|
#######################################################################
|
||||||
|
# Changelog generator from the Git commit history.
|
||||||
|
# For DEB and RPM packages
|
||||||
|
# usage a git command:
|
||||||
|
#
|
||||||
|
# git log --abbrev-commit --all --pretty='%h, %ad, %an, %ae, %s, %b'
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
# puts $tcl_platform(platform)
|
||||||
|
|
||||||
|
# Use whereis command for finding the git executable file.
|
||||||
|
# for unix-like operating systems
|
||||||
|
proc GetGitCommandUnix {} {
|
||||||
|
global gitCommand
|
||||||
|
set cmd "whereis -b git"
|
||||||
|
catch "exec $cmd" result
|
||||||
|
# puts $result
|
||||||
|
if {$result ne ""} {
|
||||||
|
set fields [split $result ":"]
|
||||||
|
# puts $fields
|
||||||
|
if {[lindex $fields 1] ne ""} {
|
||||||
|
# puts [lindex $fields 1]
|
||||||
|
set gitCommand "[string trim [lindex $fields 1]]"
|
||||||
|
} else {
|
||||||
|
puts "GIT command not found"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Setting the git-command for windows family OS
|
||||||
|
proc GetGitCommandWindows {} {
|
||||||
|
global gitCommand
|
||||||
|
set gitCommand "c:/git/bin/git.exe"
|
||||||
|
}
|
||||||
|
|
||||||
|
switch $tcl_platform(platform) {
|
||||||
|
unix {GetGitCommandUnix}
|
||||||
|
windows {GetGitCommandWindows}
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ReadGitLog {} {
|
||||||
|
global gitCommand
|
||||||
|
set cmd exec
|
||||||
|
lappend cmd "$gitCommand"
|
||||||
|
lappend cmd "log"
|
||||||
|
lappend cmd "--abbrev-commit"
|
||||||
|
lappend cmd "--all"
|
||||||
|
lappend cmd "--pretty='%h, %ad, %an, %ae, %s, %b'"
|
||||||
|
# puts $cmd
|
||||||
|
catch $cmd pipe
|
||||||
|
# puts $pipe
|
||||||
|
set outBuffer ""
|
||||||
|
foreach line [split $pipe "\n"] {
|
||||||
|
# set line [string trim $line]
|
||||||
|
set line [string trim [string trim $line] {'}]
|
||||||
|
if {[regexp -nocase -all -- {^[0-9a-z]+} $line match]} {
|
||||||
|
if {$outBuffer ne ""} {
|
||||||
|
# puts $outBuffer
|
||||||
|
lappend res $outBuffer
|
||||||
|
}
|
||||||
|
set outBuffer $line
|
||||||
|
} else {
|
||||||
|
if {$line ne ""} {
|
||||||
|
append outBuffer ". " $line
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# puts $res
|
||||||
|
return $res
|
||||||
|
}
|
||||||
|
|
||||||
|
proc GenerateChangelogDEB {} {
|
||||||
|
puts "GenerateChangelogDEB"
|
||||||
|
set lastCommitTimeStamp ""
|
||||||
|
set commiter ""
|
||||||
|
set commitText ""
|
||||||
|
# ReadGitLog
|
||||||
|
set lst [lsort -decreasing [ReadGitLog]]
|
||||||
|
# puts [lindex $lst 0]
|
||||||
|
# exit
|
||||||
|
foreach line $lst {
|
||||||
|
set record [split $line ","]
|
||||||
|
# puts [lindex $record 1]
|
||||||
|
if {$lastCommitTimeStamp eq ""} {
|
||||||
|
set lastCommitTimeStamp [string trim [lindex $record 1]]
|
||||||
|
}
|
||||||
|
# set timeStamp set s [clock scan {Mon Jan 22 17:30:28 2018 +0300}] -format {%a %b %e %H:%M:%S %Y %z”}
|
||||||
|
|
||||||
|
if {$commiter ne [lindex $record 2]} {
|
||||||
|
puts "\n \[ [string trim $commiter] \]"
|
||||||
|
set commiter [lindex $record 2]
|
||||||
|
}
|
||||||
|
|
||||||
|
set commitTex [lindex $record 4]
|
||||||
|
puts " * $commitTex"
|
||||||
|
|
||||||
|
}
|
||||||
|
puts $lastCommitTimeStamp
|
||||||
|
}
|
||||||
|
|
||||||
|
proc GenerateChangelogRPM {} {
|
||||||
|
puts "GenerateChangelogRPM"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
proc GenerateChangelogTXT {} {
|
||||||
|
puts "GenerateChangelogTXT"
|
||||||
|
|
||||||
|
}
|
||||||
|
# puts [ReadGitLog]
|
||||||
|
|
||||||
|
proc ShowHelp {} {
|
||||||
|
puts "\nChangelog generator from the Git commit history. For DEB and RPM packages"
|
||||||
|
puts "Usage:\n"
|
||||||
|
puts "\tchangelog-gen.tcl {DEB RPM TXT}\n"
|
||||||
|
puts "Where{DEB RPM TXT} - changelog format for same packages. The list can be either complete or from any number of elements.\nDefault is a TXT"
|
||||||
|
}
|
||||||
|
|
||||||
|
if { $::argc > 1 } {
|
||||||
|
foreach arg $::argv {
|
||||||
|
switch -glob -nocase $arg {
|
||||||
|
DEB {GenerateChangelogDEB}
|
||||||
|
RPM {GenerateChangelogRPM}
|
||||||
|
TXT {GenerateChangelogTXT}
|
||||||
|
*help {ShowHelp}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
GenerateChangelogTXT
|
||||||
|
}
|
||||||
|
|
4
debian/changelog
vendored
4
debian/changelog
vendored
|
@ -1,5 +1,5 @@
|
||||||
projman (2.0.0-alpha) stable; urgency=medium
|
projman (2.0.0-alpha) stable; urgency=medium
|
||||||
|
|
||||||
* Initial release
|
* Initial release
|
||||||
|
|
||||||
-- Sergey Kalinin <svk@nuk-svk.ru> Wed, 20 Jul 2022 16:56:31 +0300
|
-- Sergey Kalinin <svk@nuk-svk.ru> Wed, 20 Jul 2022 16:56:31 +0300
|
||||||
|
|
Loading…
Reference in New Issue
Block a user