mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 01:24:05 +08:00
107 lines
2.2 KiB
Go
107 lines
2.2 KiB
Go
package ice
|
|
|
|
import (
|
|
"io"
|
|
"path"
|
|
"strings"
|
|
|
|
kit "shylinux.com/x/toolkits"
|
|
)
|
|
|
|
type MakeInfo struct {
|
|
Path string
|
|
Time string
|
|
Hash string
|
|
Module string
|
|
Remote string
|
|
Branch string
|
|
Version string
|
|
HostName string
|
|
UserName string
|
|
}
|
|
|
|
var Info = struct {
|
|
HostName string
|
|
PathName string
|
|
UserName string
|
|
PassWord string
|
|
|
|
Colors bool
|
|
Domain string
|
|
NodeType string
|
|
NodeName string
|
|
CtxShare string
|
|
CtxRiver string
|
|
|
|
Make MakeInfo
|
|
|
|
Help string
|
|
Pack map[string][]byte
|
|
File map[string]string
|
|
Route map[string]string
|
|
Log func(m *Message, p, l, s string)
|
|
|
|
render map[string]func(*Message, string, ...interface{}) string
|
|
names map[string]interface{}
|
|
}{
|
|
Help: `
|
|
^_^ 欢迎使用冰山框架 ^_^
|
|
^_^ Welcome to Icebergs World ^_^
|
|
|
|
report: shylinuxc@gmail.com
|
|
server: https://shylinux.com
|
|
source: https://shylinux.com/x/icebergs
|
|
`,
|
|
Pack: map[string][]byte{},
|
|
File: map[string]string{},
|
|
Route: map[string]string{},
|
|
|
|
render: map[string]func(*Message, string, ...interface{}) string{},
|
|
names: map[string]interface{}{},
|
|
}
|
|
|
|
func FileKey(dir string) string {
|
|
dir = strings.Split(dir, DF)[0]
|
|
dir = strings.ReplaceAll(dir, ".js", ".go")
|
|
dir = strings.ReplaceAll(dir, ".sh", ".go")
|
|
|
|
if strings.Contains(dir, "go/pkg/mod") {
|
|
return path.Join("/require", strings.Split(dir, "go/pkg/mod")[1])
|
|
}
|
|
if Info.Make.Path != "" && strings.HasPrefix(dir, Info.Make.Path+PS) {
|
|
dir = strings.TrimPrefix(dir, Info.Make.Path+PS)
|
|
}
|
|
if strings.HasPrefix(dir, kit.Path("")+PS) {
|
|
dir = strings.TrimPrefix(dir, kit.Path("")+PS)
|
|
}
|
|
if strings.HasPrefix(dir, SRC) {
|
|
return path.Join("/require", dir)
|
|
}
|
|
if strings.HasPrefix(dir, USR) {
|
|
return path.Join("/require", dir)
|
|
}
|
|
return dir
|
|
}
|
|
func AddFileKey(dir, key string) {
|
|
Info.File[FileKey(dir)] = key
|
|
}
|
|
func GetFileKey(dir string) string {
|
|
return Info.File[FileKey(dir)]
|
|
}
|
|
|
|
var Dump = func(w io.Writer, name string, cb func(string)) bool { return false }
|
|
|
|
func name(name string, value interface{}) string {
|
|
if s, ok := Info.names[name]; ok {
|
|
last := ""
|
|
switch s := s.(type) {
|
|
case *Context:
|
|
last = s.Name
|
|
}
|
|
panic(kit.Format("%s %s %v", ErrExists, name, last))
|
|
}
|
|
|
|
Info.names[name] = value
|
|
return name
|
|
}
|