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