feat(log): add basic support for logging output

This commit is contained in:
2022-03-21 22:10:21 +00:00
parent 5fcb2b52ab
commit 73f93f8e0b
10 changed files with 119 additions and 12 deletions

View File

@@ -11,6 +11,8 @@ import (
"path/filepath"
"strings"
"syscall"
"github.com/rs/zerolog/log"
)
var (
@@ -54,12 +56,20 @@ func (m *Manager) Get(ctx context.Context, version string) (*Version, error) {
}
func (m *Manager) Use(ctx context.Context, version string) error {
log.Debug().Str("version", version).Msg("use version")
ver, err := m.Get(ctx, version)
if err != nil {
return err
}
currentFile := filepath.Join(m.Config.Paths.Root, currentFileName)
log.Debug().
Str("path", currentFile).
Str("content", ver.Version).
Msg("updating current file")
err = os.WriteFile(currentFile, []byte(ver.Version), 0o644)
if err != nil {
return err
@@ -104,6 +114,13 @@ func (m *Manager) rehashVersions(
tidy bool,
versions []*Version,
) error {
if log.Debug().Enabled() {
var vers []string
for _, v := range versions {
vers = append(vers, v.Version)
}
log.Debug().Strs("versions", vers).Msg("reshashing versions")
}
programs := map[string]bool{}
for _, ver := range versions {
@@ -113,6 +130,14 @@ func (m *Manager) rehashVersions(
}
}
log.Debug().
Str("path", m.Config.Paths.Shims).
Msg("ensure shims directory exists")
err := os.MkdirAll(m.Config.Paths.Shims, 0o755)
if err != nil {
return err
}
shims, err := m.ListShims(ctx)
if err != nil {
return err
@@ -129,13 +154,10 @@ func (m *Manager) rehashVersions(
return err
}
err = os.MkdirAll(m.Config.Paths.Shims, 0o755)
if err != nil {
return err
}
for name := range programs {
shimFile := filepath.Join(m.Config.Paths.Shims, name)
log.Debug().Str("path", shimFile).Msg("writing shim")
err = os.WriteFile(shimFile, shim, 0o755)
if err != nil {
return err
@@ -157,9 +179,11 @@ func (m *Manager) rehashVersions(
delete(shimMap, name)
}
if tidy {
if tidy && len(shimMap) > 0 {
log.Debug().Msg("tidying shims")
for name := range shimMap {
shimFile := filepath.Join(m.Config.Paths.Shims, name)
log.Debug().Str("path", shimFile).Msg("removing shim")
err := os.Remove(shimFile)
if err != nil {
return err
@@ -191,6 +215,8 @@ func (m *Manager) shim() ([]byte, error) {
}
func (m *Manager) ListShims(ctx context.Context) ([]string, error) {
log.Debug().Str("path", m.Config.Paths.Shims).Msg("reading shims")
entries, err := os.ReadDir(m.Config.Paths.Shims)
if err != nil {
if errors.Is(err, fs.ErrNotExist) {
@@ -263,6 +289,12 @@ func (m *Manager) ExecVersion(
}
}
log.Debug().
Str("bin", bin).
Str("extra_path", ver.BinDir).
Strs("args", args).
Msg("executing")
return syscall.Exec(bin, execArgs, execEnv)
}