mirror of
https://gitea.com/gitea/gitea-mcp.git
synced 2025-08-23 14:23:05 +00:00
Initialize commit
This commit is contained in:
9
pkg/flag/flag.go
Normal file
9
pkg/flag/flag.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package flag
|
||||
|
||||
var (
|
||||
Host string
|
||||
Token string
|
||||
Version string
|
||||
|
||||
Debug bool
|
||||
)
|
40
pkg/gitea/gitea.go
Normal file
40
pkg/gitea/gitea.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package gitea
|
||||
|
||||
import (
|
||||
"os"
|
||||
"sync"
|
||||
|
||||
"gitea.com/gitea/gitea-mcp/pkg/flag"
|
||||
"gitea.com/gitea/gitea-mcp/pkg/log"
|
||||
|
||||
"code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
var (
|
||||
client *gitea.Client
|
||||
clientOnce sync.Once
|
||||
)
|
||||
|
||||
func Client() *gitea.Client {
|
||||
clientOnce.Do(func() {
|
||||
if client == nil {
|
||||
host, token := flag.Host, flag.Token
|
||||
if host == "" {
|
||||
host = os.Getenv("GITEA_HOST")
|
||||
}
|
||||
if host == "" {
|
||||
host = "https://gitea.com"
|
||||
}
|
||||
if token == "" {
|
||||
token = os.Getenv("GITEA_TOKEN")
|
||||
}
|
||||
|
||||
c, err := gitea.NewClient(host, gitea.SetToken(token))
|
||||
if err != nil {
|
||||
log.Fatalf("create gitea client err: %v", err)
|
||||
}
|
||||
client = c
|
||||
}
|
||||
})
|
||||
return client
|
||||
}
|
100
pkg/log/log.go
Normal file
100
pkg/log/log.go
Normal file
@@ -0,0 +1,100 @@
|
||||
package log
|
||||
|
||||
import (
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
)
|
||||
|
||||
var (
|
||||
defaultLoggerOnce sync.Once
|
||||
defaultLogger *zap.Logger
|
||||
)
|
||||
|
||||
func Default() *zap.Logger {
|
||||
defaultLoggerOnce.Do(func() {
|
||||
if defaultLogger == nil {
|
||||
ec := zap.NewProductionEncoderConfig()
|
||||
ec.EncodeTime = zapcore.TimeEncoderOfLayout(time.DateTime)
|
||||
ec.EncodeLevel = zapcore.CapitalColorLevelEncoder
|
||||
|
||||
var ws zapcore.WriteSyncer
|
||||
var wss []zapcore.WriteSyncer
|
||||
|
||||
wss = append(wss, zapcore.AddSync(os.Stdout))
|
||||
ws = zapcore.NewMultiWriteSyncer(wss...)
|
||||
|
||||
enc := zapcore.NewConsoleEncoder(ec)
|
||||
core := zapcore.NewCore(enc, ws, zapcore.DebugLevel)
|
||||
options := []zap.Option{
|
||||
zap.AddStacktrace(zapcore.ErrorLevel),
|
||||
zap.AddCaller(),
|
||||
zap.AddCallerSkip(1),
|
||||
}
|
||||
defaultLogger = zap.New(core, options...)
|
||||
}
|
||||
})
|
||||
|
||||
return defaultLogger
|
||||
}
|
||||
|
||||
func SetDefault(logger *zap.Logger) {
|
||||
if logger != nil {
|
||||
defaultLogger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func Logger() *zap.Logger {
|
||||
return defaultLogger
|
||||
}
|
||||
|
||||
func Debug(msg string, fields ...zap.Field) {
|
||||
Default().Debug(msg, fields...)
|
||||
}
|
||||
|
||||
func Info(msg string, fields ...zap.Field) {
|
||||
Default().Info(msg, fields...)
|
||||
}
|
||||
|
||||
func Warn(msg string, fields ...zap.Field) {
|
||||
Default().Warn(msg, fields...)
|
||||
}
|
||||
|
||||
func Error(msg string, fields ...zap.Field) {
|
||||
Default().Error(msg, fields...)
|
||||
}
|
||||
|
||||
func Panic(msg string, fields ...zap.Field) {
|
||||
Default().Panic(msg, fields...)
|
||||
}
|
||||
|
||||
func Debugf(format string, args ...interface{}) {
|
||||
Default().Sugar().Debugf(format, args...)
|
||||
}
|
||||
|
||||
func Infof(format string, args ...interface{}) {
|
||||
Default().Sugar().Infof(format, args...)
|
||||
}
|
||||
|
||||
func Warnf(format string, args ...interface{}) {
|
||||
Default().Sugar().Warnf(format, args...)
|
||||
}
|
||||
|
||||
func Errorf(format string, args ...interface{}) {
|
||||
Default().Sugar().Errorf(format, args...)
|
||||
}
|
||||
|
||||
func Fatalf(format string, args ...interface{}) {
|
||||
Default().Sugar().Fatalf(format, args...)
|
||||
}
|
||||
|
||||
func Sync() {
|
||||
err := defaultLogger.Sync()
|
||||
if err != nil {
|
||||
Error(err.Error())
|
||||
}
|
||||
Info("logger has been synced")
|
||||
}
|
Reference in New Issue
Block a user