mirror of
https://github.com/go-gitea/gitea.git
synced 2025-08-27 19:12:48 +09:00
database-filesystem, demo log tailing in term
This commit is contained in:
51
routers/web/dev/termdemo.go
Normal file
51
routers/web/dev/termdemo.go
Normal file
@ -0,0 +1,51 @@
|
||||
package dev
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/models/dbfs"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
)
|
||||
|
||||
var demoLogWriterOnce sync.Once
|
||||
|
||||
func TermDemo(ctx *context.Context) {
|
||||
demoLogWriterOnce.Do(func() {
|
||||
go func() {
|
||||
f, _ := dbfs.OpenFile(db.DefaultContext, "termdemo.log", os.O_RDWR|os.O_CREATE|os.O_TRUNC|os.O_APPEND)
|
||||
count := 0
|
||||
for {
|
||||
count++
|
||||
s := fmt.Sprintf("\x1B[1;3;31mDemo Log\x1B[0m, count=%d\r\n", count)
|
||||
_, _ = f.Write([]byte(s))
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
}()
|
||||
})
|
||||
|
||||
cmd := ctx.FormString("cmd")
|
||||
if cmd == "tail" {
|
||||
offset := ctx.FormInt64("offset")
|
||||
f, _ := dbfs.OpenFile(db.DefaultContext, "termdemo.log", os.O_RDONLY)
|
||||
if offset == -1 {
|
||||
_, _ = f.Seek(0, io.SeekEnd)
|
||||
} else {
|
||||
_, _ = f.Seek(offset, io.SeekStart)
|
||||
}
|
||||
buf, _ := io.ReadAll(f)
|
||||
offset, _ = f.Seek(0, io.SeekCurrent)
|
||||
ctx.JSON(http.StatusOK, map[string]interface{}{
|
||||
"offset": offset,
|
||||
"content": string(buf),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
ctx.HTML(http.StatusOK, "dev/termdemo")
|
||||
}
|
Reference in New Issue
Block a user