mirror of
https://github.com/studiokaiji/nostr-webhost.git
synced 2025-12-17 23:04:23 +01:00
48 lines
779 B
Go
48 lines
779 B
Go
package tools
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"golang.org/x/term"
|
|
)
|
|
|
|
func DisplayProgressBar(current, total *int) {
|
|
// ターミナルのサイズを取得
|
|
terminalWidth, _, err := term.GetSize(0)
|
|
if err != nil {
|
|
terminalWidth = 80
|
|
}
|
|
|
|
width := terminalWidth - 12
|
|
|
|
// ターミナルの幅を最大100として調整
|
|
if width > 100 {
|
|
width = 100
|
|
}
|
|
|
|
for {
|
|
progress := int(float64(*current) / float64(*total) * float64(width))
|
|
|
|
// バーの描画
|
|
bar := ""
|
|
for j := 0; j < width; j++ {
|
|
if j < progress {
|
|
bar += "="
|
|
} else {
|
|
bar += " "
|
|
}
|
|
}
|
|
|
|
// カーソルを行の先頭に戻して上書き
|
|
fmt.Printf("\r[%s] %d/%d", bar, *current, *total)
|
|
|
|
if *current >= *total {
|
|
fmt.Println("")
|
|
break
|
|
}
|
|
|
|
time.Sleep(20 * time.Millisecond)
|
|
}
|
|
}
|