mirror of
https://github.com/giongto35/cloud-game.git
synced 2026-01-23 02:34:42 +00:00
Embed config.yaml into both apps
This commit is contained in:
parent
9231120a55
commit
b227260060
11 changed files with 31 additions and 21 deletions
1
.github/workflows/cd/deploy-app.sh
vendored
1
.github/workflows/cd/deploy-app.sh
vendored
|
|
@ -72,7 +72,6 @@ WORKERS=${WORKERS:-4}
|
|||
USER=${USER:-root}
|
||||
|
||||
compose_src=$(cat $LOCAL_WORK_DIR/docker-compose.yml)
|
||||
config_src=$(cat $LOCAL_WORK_DIR/configs/config.yaml)
|
||||
|
||||
function remote_run_commands() {
|
||||
ret=""
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@ RUN mkdir -p ./assets/cache && \
|
|||
mkdir -p ./assets/games && \
|
||||
mkdir -p ./libretro && \
|
||||
mkdir -p /root/.cr
|
||||
COPY configs ./configs
|
||||
COPY web ./web
|
||||
ARG VERSION
|
||||
COPY scripts/version.sh version.sh
|
||||
|
|
|
|||
|
|
@ -10,12 +10,12 @@ import (
|
|||
var Version = "?"
|
||||
|
||||
func main() {
|
||||
conf := config.NewCoordinatorConfig()
|
||||
conf, paths := config.NewCoordinatorConfig()
|
||||
conf.ParseFlags()
|
||||
|
||||
log := logger.NewConsole(conf.Coordinator.Debug, "c", false)
|
||||
log.Info().Msgf("version %s", Version)
|
||||
log.Info().Msgf("conf: v%v", conf.Version)
|
||||
log.Info().Msgf("conf: v%v, loaded: %v", conf.Version, paths)
|
||||
if log.GetLevel() < logger.InfoLevel {
|
||||
log.Debug().Msgf("conf: %+v", conf)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@ import (
|
|||
var Version = "?"
|
||||
|
||||
func run() {
|
||||
conf := config.NewWorkerConfig()
|
||||
conf, paths := config.NewWorkerConfig()
|
||||
conf.ParseFlags()
|
||||
|
||||
log := logger.NewConsole(conf.Worker.Debug, "w", false)
|
||||
log.Info().Msgf("version %s", Version)
|
||||
log.Info().Msgf("conf: v%v", conf.Version)
|
||||
log.Info().Msgf("conf: v%v, loaded: %v", conf.Version, paths)
|
||||
if log.GetLevel() < logger.InfoLevel {
|
||||
log.Debug().Msgf("conf: %+v", conf)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ const SelectByPing = "ping"
|
|||
// allows custom config path
|
||||
var coordinatorConfigPath string
|
||||
|
||||
func NewCoordinatorConfig() (conf CoordinatorConfig) {
|
||||
err := LoadConfig(&conf, coordinatorConfigPath)
|
||||
func NewCoordinatorConfig() (conf CoordinatorConfig, paths []string) {
|
||||
paths, err := LoadConfig(&conf, coordinatorConfigPath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import (
|
|||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
_ "embed"
|
||||
"github.com/knadh/koanf/maps"
|
||||
"github.com/knadh/koanf/v2"
|
||||
"gopkg.in/yaml.v3"
|
||||
|
|
@ -12,6 +13,11 @@ import (
|
|||
|
||||
const EnvPrefix = "CLOUD_GAME_"
|
||||
|
||||
var (
|
||||
//go:embed config.yaml
|
||||
conf Bytes
|
||||
)
|
||||
|
||||
type Kv = map[string]any
|
||||
type Bytes []byte
|
||||
|
||||
|
|
@ -104,7 +110,7 @@ var k = koanf.New("_")
|
|||
// LoadConfig loads a configuration file into the given struct.
|
||||
// The path param specifies a custom path to the configuration file.
|
||||
// Reads and puts environment variables with the prefix CLOUD_GAME_.
|
||||
func LoadConfig(config any, path string) (err error) {
|
||||
func LoadConfig(config any, path string) (loaded []string, err error) {
|
||||
dirs := []string{".", "configs", "../../../configs"}
|
||||
if path != "" {
|
||||
dirs = append([]string{path}, dirs...)
|
||||
|
|
@ -116,23 +122,31 @@ func LoadConfig(config any, path string) (err error) {
|
|||
dirs = append(dirs, homeDir)
|
||||
}
|
||||
|
||||
if err := k.Load(&conf, &YAML{}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
conf = nil
|
||||
loaded = append(loaded, "default")
|
||||
|
||||
for _, dir := range dirs {
|
||||
f := File(filepath.Join(filepath.Clean(dir), "config.yaml"))
|
||||
path := filepath.Join(filepath.Clean(dir), "config.yaml")
|
||||
f := File(path)
|
||||
if _, err := os.Stat(string(f)); !os.IsNotExist(err) {
|
||||
if err := k.Load(&f, &YAML{}); err != nil {
|
||||
return err
|
||||
return loaded, err
|
||||
}
|
||||
loaded = append(loaded, path)
|
||||
}
|
||||
}
|
||||
|
||||
env := Env(EnvPrefix)
|
||||
if err := k.Load(&env, nil); err != nil {
|
||||
return err
|
||||
return loaded, err
|
||||
}
|
||||
|
||||
if err := k.Unmarshal("", config); err != nil {
|
||||
return err
|
||||
return loaded, err
|
||||
}
|
||||
|
||||
return nil
|
||||
return loaded, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ func TestConfigEnv(t *testing.T) {
|
|||
_ = os.Unsetenv("CLOUD_GAME_EMULATOR_LIBRETRO_CORES_LIST_PCSX_OPTIONS__PCSX_REARMED_DRC")
|
||||
}()
|
||||
|
||||
err := LoadConfig(&out, "../../configs")
|
||||
_, err := LoadConfig(&out, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,8 +70,8 @@ type Video struct {
|
|||
// allows custom config path
|
||||
var workerConfigPath string
|
||||
|
||||
func NewWorkerConfig() (conf WorkerConfig) {
|
||||
err := LoadConfig(&conf, workerConfigPath)
|
||||
func NewWorkerConfig() (conf WorkerConfig, paths []string) {
|
||||
paths, err := LoadConfig(&conf, workerConfigPath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,10 +47,9 @@ type EmulatorPaths struct {
|
|||
// Make sure you call shutdownEmulator().
|
||||
func GetEmulatorMock(room string, system string) *EmulatorMock {
|
||||
rootPath := getRootPath()
|
||||
configPath := rootPath + "configs/"
|
||||
|
||||
var conf config.WorkerConfig
|
||||
if err := config.LoadConfig(&conf, configPath); err != nil {
|
||||
if _, err := config.LoadConfig(&conf, ""); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,6 @@ type roomMockConfig struct {
|
|||
|
||||
// Store absolute path to test games
|
||||
var whereIsGames = getRootPath() + "assets/games/"
|
||||
var whereIsConfigs = getRootPath() + "configs/"
|
||||
var testTempDir = filepath.Join(os.TempDir(), "cloud-game-core-tests")
|
||||
|
||||
// games
|
||||
|
|
@ -204,7 +203,7 @@ func dumpCanvas(frame *image2.Frame, name string, caption string, path string) {
|
|||
// getRoomMock returns mocked Room struct.
|
||||
func getRoomMock(cfg roomMockConfig) roomMock {
|
||||
var conf config.WorkerConfig
|
||||
if err := config.LoadConfig(&conf, whereIsConfigs); err != nil {
|
||||
if _, err := config.LoadConfig(&conf, ""); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue