diff --git a/cmd/dagger/cmd/common/track.go b/cmd/dagger/cmd/common/track.go index ed0395eb..d57d034c 100644 --- a/cmd/dagger/cmd/common/track.go +++ b/cmd/dagger/cmd/common/track.go @@ -19,15 +19,18 @@ func TrackCommand(ctx context.Context, cmd *cobra.Command, props ...*telemetry.P Name: "command", Value: commandName(cmd), }, - { - // Hash the repository URL for privacy - Name: "git_repository_hash", - Value: hash(gitRepoURL(".")), - }, }, props...) - projectDir, found := pkg.GetCueModParent() - if found { + if repo := gitRepoURL("."); repo != "" { + props = append(props, &telemetry.Property{ + // Hash the repository URL for privacy + Name: "git_repository_hash", + Value: hash(repo), + }) + } + + if projectDir, found := pkg.GetCueModParent(); found { + // Hash the project path for privacy props = append(props, &telemetry.Property{ Name: "project_path_hash", Value: hash(projectDir), diff --git a/cmd/dagger/cmd/do.go b/cmd/dagger/cmd/do.go index d3922b66..e42b9fa5 100644 --- a/cmd/dagger/cmd/do.go +++ b/cmd/dagger/cmd/do.go @@ -60,20 +60,22 @@ var doCmd = &cobra.Command{ if err != nil { lg.Fatal().Err(err).Msg("failed to load plan") } + target := getTargetPath(args) doneCh := common.TrackCommand(ctx, cmd, &telemetry.Property{ Name: "action", - Value: p.Action().Path.String(), + Value: target.String(), }) err = cl.Do(ctx, p.Context(), func(ctx context.Context, s solver.Solver) error { - return p.Do(ctx, getTargetPath(args), s) + return p.Do(ctx, target, s) }) + <-doneCh + if err != nil { lg.Fatal().Err(err).Msg("failed to execute plan") } - <-doneCh }, } diff --git a/cmd/dagger/cmd/project/init.go b/cmd/dagger/cmd/project/init.go index dabae3d4..86ff36b5 100644 --- a/cmd/dagger/cmd/project/init.go +++ b/cmd/dagger/cmd/project/init.go @@ -36,13 +36,11 @@ var initCmd = &cobra.Command{ name := viper.GetString("name") doneCh := common.TrackCommand(ctx, cmd) - err := pkg.CueModInit(ctx, dir, name) + <-doneCh if err != nil { lg.Fatal().Err(err).Msg("failed to initialize project") } - - <-doneCh }, } diff --git a/cmd/dagger/cmd/project/update.go b/cmd/dagger/cmd/project/update.go index 45d40141..a8cf39e3 100644 --- a/cmd/dagger/cmd/project/update.go +++ b/cmd/dagger/cmd/project/update.go @@ -7,7 +7,6 @@ import ( "go.dagger.io/dagger/cmd/dagger/logger" "go.dagger.io/dagger/mod" "go.dagger.io/dagger/pkg" - "go.dagger.io/dagger/telemetry" ) var updateCmd = &cobra.Command{ @@ -41,6 +40,7 @@ var updateCmd = &cobra.Command{ var update = viper.GetBool("update") + doneCh := common.TrackCommand(ctx, cmd) var processedRequires []*mod.Require if update && len(args) == 0 { @@ -62,16 +62,12 @@ var updateCmd = &cobra.Command{ } } - doneCh := common.TrackCommand(ctx, cmd, &telemetry.Property{ - Name: "num_packages", - Value: len(processedRequires), - }) + <-doneCh if err != nil { lg.Error().Err(err).Msg("error installing/updating packages") } - <-doneCh }, } diff --git a/cmd/dagger/cmd/up.go b/cmd/dagger/cmd/up.go index b2288c58..8073380e 100644 --- a/cmd/dagger/cmd/up.go +++ b/cmd/dagger/cmd/up.go @@ -61,15 +61,14 @@ var upCmd = &cobra.Command{ } doneCh := common.TrackCommand(ctx, cmd) - err = cl.Do(ctx, p.Context(), func(ctx context.Context, s solver.Solver) error { return p.Do(ctx, cue.ParsePath(viper.GetString("target")), s) }) + <-doneCh if err != nil { lg.Fatal().Err(err).Msg("failed to up environment") } - <-doneCh }, } diff --git a/telemetry/telemetry.go b/telemetry/telemetry.go index 231a5e31..ece197b5 100644 --- a/telemetry/telemetry.go +++ b/telemetry/telemetry.go @@ -4,8 +4,10 @@ import ( "bytes" "context" "encoding/json" + "errors" "net/http" "os" + "path/filepath" "runtime" "time" @@ -147,6 +149,14 @@ func getDeviceID() (string, error) { } id, err := os.ReadFile(idFile) if err != nil { + if !errors.Is(err, os.ErrNotExist) { + return "", err + } + + if err := os.MkdirAll(filepath.Dir(idFile), 0755); err != nil { + return "", err + } + id = []byte(uuid.New().String()) if err := os.WriteFile(idFile, id, 0600); err != nil { return "", err