mirror of
https://github.com/bakhirev/assayo.git
synced 2025-09-01 10:09:39 +00:00
update
This commit is contained in:
parent
38a4c872b0
commit
8c4502c94a
2 changed files with 112 additions and 0 deletions
3
go.mod
Normal file
3
go.mod
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module github.com/bakhirev/git-log
|
||||||
|
|
||||||
|
go 1.23.1
|
109
main.go
Normal file
109
main.go
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func showMessage(message string) {
|
||||||
|
for _, arg := range os.Args {
|
||||||
|
if arg == "--debug" {
|
||||||
|
fmt.Println("Assayo: " + message)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkDirExists(path string) bool {
|
||||||
|
if _, err := os.Stat(path); os.IsNotExist(err) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func getSaveLogCommand() string {
|
||||||
|
raw := "--raw --numstat"
|
||||||
|
for _, arg := range os.Args {
|
||||||
|
if arg == "--no-file" {
|
||||||
|
raw = ""
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("git --no-pager log %s --oneline --all --reverse --date=iso-strict --pretty=format:\"%%ad>%%aN>%%aE>%%s\"", raw)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getCloneRepoCommand() string {
|
||||||
|
return "git clone https://github.com/bakhirev/assayo.git && mv ./assayo ./source && mv ./source/build ./assayo && rm -r -f ./source"
|
||||||
|
}
|
||||||
|
|
||||||
|
func Assayo() error {
|
||||||
|
// folder, when library was saved
|
||||||
|
sourceDir := "../pkg/mod/github.com/bakhirev/assayo@v0.0.1/"
|
||||||
|
sourcePath := filepath.Dir(os.Args[0])
|
||||||
|
|
||||||
|
// folder, when user run library
|
||||||
|
distDir := "assayo"
|
||||||
|
distPath, _ := os.Getwd()
|
||||||
|
|
||||||
|
home := filepath.Join(sourcePath, sourceDir)
|
||||||
|
source := filepath.Join(home, "./assayo")
|
||||||
|
target := filepath.Join(distPath, distDir)
|
||||||
|
|
||||||
|
err := os.Chdir(home)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Cant found home dir:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0. Clone actual report from GIT
|
||||||
|
if checkDirExists(source) {
|
||||||
|
showMessage("actual report template already exist")
|
||||||
|
} else {
|
||||||
|
commandStr := getCloneRepoCommand()
|
||||||
|
command := exec.Command("bash", "-c", commandStr)
|
||||||
|
if err := command.Run(); err != nil {
|
||||||
|
fmt.Println(commandStr)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1. Copy folder ./assayo from package to ./assayo in project
|
||||||
|
if checkDirExists(target) {
|
||||||
|
showMessage("directory with HTML report already exist")
|
||||||
|
} else {
|
||||||
|
command := exec.Command("cp", "-r", source, target)
|
||||||
|
if err := command.Run(); err != nil {
|
||||||
|
fmt.Println("Error copying directory:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
showMessage("directory with HTML report was created")
|
||||||
|
|
||||||
|
// 2. Run 'git log' and save output in string
|
||||||
|
showMessage("reading git log was started")
|
||||||
|
os.Chdir(distPath)
|
||||||
|
commandStr := getSaveLogCommand()
|
||||||
|
command := exec.Command("bash", "-c", commandStr)
|
||||||
|
outputBytes, err := command.Output()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error saving git log:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
showMessage("the file with git log was saved")
|
||||||
|
|
||||||
|
// 3. Replace symbols in ./assayo/log.txt
|
||||||
|
newContent := string(outputBytes)
|
||||||
|
fileName := filepath.Join(target, "log.txt")
|
||||||
|
if err := os.WriteFile(fileName, []byte("R(f`"+newContent+"`);"), 0644); err != nil {
|
||||||
|
fmt.Println("Error writing file:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
Assayo()
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue