feat: load explicit configuration references and remove implicit env overlays

This commit is contained in:
2026-09-26 16:14:54 +08:00
parent 4bf6e88cfe
commit d598b2ebee
94 changed files with 1355 additions and 1759 deletions

View File

@@ -7,7 +7,7 @@ go run ./examples/modules
```
默认监听 `127.0.0.1:8080`,使用仅限开发的 `Bearer dev-token`。
配置 `GO_OMNI_TRANSPORT=native` 可直接切换自研网络层,TLS 配置与主框架一致。
默认读取 `examples/modules/config.yaml`,也可用 `-config` 选择一个其他文件。文件显式引用了 `GO_OMNI_TRANSPORT`,设置为 native 可切换自研网络层;TLS 在文件的 `tls.certFile` / `tls.keyFile` 中配置。此示例直接加载框架 Config,没有生成项目的 server 外层。
```sh
curl -H 'Authorization: Bearer dev-token' http://127.0.0.1:8080/api/catalog

View File

@@ -0,0 +1,2 @@
address: "${GO_OMNI_HTTP_ADDR:-127.0.0.1:8080}"
transport: "${GO_OMNI_TRANSPORT:-nethttp}"

View File

@@ -5,6 +5,7 @@ import (
"context"
"encoding/json"
"errors"
"flag"
"log"
"os"
"os/signal"
@@ -106,13 +107,11 @@ func newApp(settings omni.Config, token, upstream string) (application *omni.App
}
func run(ctx context.Context) error {
settings, err := omni.LoadConfig("")
settings, err := omni.LoadConfig(*configPath)
if err != nil {
return err
}
if os.Getenv("GO_OMNI_HTTP_ADDR") == "" {
settings.Address = "127.0.0.1:8080"
}
token := os.Getenv("GO_OMNI_DEV_TOKEN")
if token == "" {
token = "dev-token"
@@ -124,7 +123,10 @@ func run(ctx context.Context) error {
return application.RunContext(ctx)
}
var configPath = flag.String("config", "examples/modules/config.yaml", "configuration file")
func main() {
flag.Parse()
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
if err := run(ctx); err != nil {

View File

@@ -28,7 +28,7 @@ func TestModulesConfiguredTransports(t *testing.T) {
io.WriteString(w, `{"name":"upstream catalog"}`)
}))
defer upstream.Close()
settings, err := omni.LoadConfig("MODULES_TEST_")
settings, err := omni.LoadConfig("")
if err != nil {
t.Fatal(err)
}