MCPcopy Index your code
hub / github.com/jetify-com/devbox / ResolveFlake

Function ResolveFlake

internal/nix/flake.go:29–46  ·  view source on GitHub ↗

ResolveFlake runs `nix flake metadata` for the given ref. When refresh is true, `--refresh` is passed so nix bypasses its own eval/tarball cache and re-queries the upstream (e.g. GitHub) — use this on `devbox update`, not on paths like Add where stale-but-cached results are fine.

(ctx context.Context, ref flake.Ref, refresh bool)

Source from the content-addressed store, hash-verified

27// re-queries the upstream (e.g. GitHub) — use this on `devbox update`, not on
28// paths like Add where stale-but-cached results are fine.
29func ResolveFlake(ctx context.Context, ref flake.Ref, refresh bool) (FlakeMetadata, error) {
30 args := []any{"flake", "metadata", "--json"}
31 if refresh {
32 args = append(args, "--refresh")
33 }
34 args = append(args, ref)
35 cmd := Command(args...)
36 out, err := cmd.Output(ctx)
37 if err != nil {
38 return FlakeMetadata{}, err
39 }
40 meta := FlakeMetadata{}
41 err = json.Unmarshal(out, &meta)
42 if err != nil {
43 return FlakeMetadata{}, err
44 }
45 return meta, nil
46}
47
48func ResolveCachedFlake(ctx context.Context, ref flake.Ref) (FlakeMetadata, error) {
49 return flakeFileCache.GetOrSet(ref.String(), func() (FlakeMetadata, time.Duration, error) {

Callers 2

lockFlakeFunction · 0.92
ResolveCachedFlakeFunction · 0.85

Calls 2

CommandFunction · 0.70
OutputMethod · 0.45

Tested by

no test coverage detected