Initialize commit

This commit is contained in:
hiifong
2025-03-16 00:21:29 +08:00
commit 2dd4aa94ad
14 changed files with 472 additions and 0 deletions

9
pkg/flag/flag.go Normal file
View File

@@ -0,0 +1,9 @@
package flag
var (
Host string
Token string
Version string
Debug bool
)

40
pkg/gitea/gitea.go Normal file
View 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
View 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")
}