blob: ca8b7c866e48d4e76fda9afa368dd00ec91f25ea [file] [log] [blame]
// Copyright 2022 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package cache
import (
"fmt"
"os"
"sort"
)
// This file contains helpers that can be used to instrument code while
// debugging.
// debugEnabled toggles the helpers below.
const debugEnabled = false
// If debugEnabled is true, debugf formats its arguments and prints to stderr.
// If debugEnabled is false, it is a no-op.
func debugf(format string, args ...interface{}) {
if !debugEnabled {
return
}
if false {
fmt.Sprintf(format, args...) // encourage vet to validate format strings
}
fmt.Fprintf(os.Stderr, ">>> "+format+"\n", args...)
}
// If debugEnabled is true, dumpWorkspace prints a summary of workspace
// packages to stderr. If debugEnabled is false, it is a no-op.
func (s *snapshot) dumpWorkspace(context string) {
if !debugEnabled {
return
}
debugf("workspace (after %s):", context)
var ids []PackageID
for id := range s.workspacePackages {
ids = append(ids, id)
}
sort.Slice(ids, func(i, j int) bool {
return ids[i] < ids[j]
})
for _, id := range ids {
pkgPath := s.workspacePackages[id]
m, ok := s.meta.metadata[id]
debugf(" %s:%s (metadata: %t; valid: %t)", id, pkgPath, ok, m.Valid)
}
}