~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
46 lines · 1.3 KB Raw History
package main

import (
	"errors"
	"path/filepath"

	"github.com/johnandersen777/socialweb-computer-kcp/internal/assets"
	"github.com/johnandersen777/socialweb-computer-kcp/internal/clicfg"
	"github.com/johnandersen777/socialweb-computer-kcp/internal/devinstance"
	"github.com/johnandersen777/socialweb-computer-kcp/internal/openbaoctl"
)

const openBaoPluginDirOption = "openbao-plugin-dir"

func (a *app) openBaoPluginExes(vals clicfg.Values) (map[string]devinstance.Executable, error) {
	out := map[string]devinstance.Executable{}
	dir := vals.String(openBaoPluginDirOption)
	if !assets.Release() {
		if dir == "" {
			return out, nil
		}
		for _, name := range openbaoctl.PluginAssets {
			e, err := hashExe(openBaoPluginDirOption, filepath.Join(dir, name))
			if err != nil {
				return nil, err
			}
			out[name] = e
		}
		return out, nil
	}
	if dir != "" {
		return nil, errors.New(openBaoPluginDirOption + " is a dev-build option; this release build places only its embedded OpenBao plugins")
	}
	cache, err := a.assetCache(vals)
	if err != nil {
		return nil, err
	}
	for _, name := range openbaoctl.PluginAssets {
		e, err := assets.Resolve(assets.Options{Cache: cache, Log: a.log}, name)
		if err != nil {
			return nil, err
		}
		out[name] = devinstance.Executable{Path: e.Path, Version: e.Version}
	}
	return out, nil
}