dockerimg: Fix development version detection when run with -C flag
When running sketch with the `-C` flag to change directories, the check for
development version should happen in the sketch directory, not the
target directory.
Co-Authored-By: sketch <hello@sketch.dev>
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index 0256798..3fb8b88 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -508,6 +508,21 @@
}
func buildLinuxSketchBin(ctx context.Context) (string, error) {
+ // Change to directory containing dockerimg.go for module detection
+ _, codeFile, _, _ := runtime.Caller(0)
+ codeDir := filepath.Dir(codeFile)
+ if currentDir, err := os.Getwd(); err != nil {
+ slog.WarnContext(ctx, "could not get current directory", "err", err)
+ } else {
+ if err := os.Chdir(codeDir); err != nil {
+ slog.WarnContext(ctx, "could not change to code directory for module check", "err", err)
+ } else {
+ defer func() {
+ _ = os.Chdir(currentDir)
+ }()
+ }
+ }
+
homeDir, err := os.UserHomeDir()
if err != nil {
return "", err