Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 22 additions & 15 deletions cli/core/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,17 @@ func completeWorkspaceNames(cmd *cobra.Command, args []string, toComplete string
}

func Execute(releaseVersion string, releaseCommit string, releaseDate string) error {
if version == "" {
version = releaseVersion
}
if commit == "" {
commit = releaseCommit
}
if date == "" {
date = releaseDate
}
rootCmd.Version = version

// Prompt for tracking consent if not already configured
promptForTracking()

Expand Down Expand Up @@ -407,15 +418,6 @@ func Execute(releaseVersion string, releaseCommit string, releaseDate string) er
}
blaxel.InitializeEnvironment(workspace)

if version == "" {
version = releaseVersion
}
if commit == "" {
commit = releaseCommit
}
if date == "" {
date = releaseDate
}
SetSentryTag("version", version)
SetSentryTag("commit", commit)
SetSentryTag("workspace", workspace)
Expand Down Expand Up @@ -558,12 +560,8 @@ func promptForTracking() {
return
}

// Skip for completion and version commands
if len(os.Args) > 1 {
cmd := os.Args[1]
if cmd == "completion" || cmd == "__complete" || cmd == "version" {
return
}
if isTrackingPromptCommandExempt(os.Args) {
return
}

// Skip in CI environments
Expand Down Expand Up @@ -599,3 +597,12 @@ func promptForTracking() {
}
fmt.Println()
}

func isTrackingPromptCommandExempt(args []string) bool {
if len(args) <= 1 {
return false
}

cmd := args[1]
return cmd == "completion" || cmd == "__complete" || cmd == "version" || cmd == "--version"
}
40 changes: 40 additions & 0 deletions cli/core/root_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package core

import (
"bytes"
"os"
"path/filepath"
"testing"
Expand Down Expand Up @@ -284,6 +285,45 @@ func TestGetVerbose(t *testing.T) {
assert.False(t, GetVerbose())
}

func TestRootVersionFlagPreservesVerboseShorthand(t *testing.T) {
originalRootCmd := rootCmd
defer func() { rootCmd = originalRootCmd }()

rootCmd = &cobra.Command{
Use: "bl",
Version: "1.2.3",
}
rootCmd.PersistentFlags().BoolP("verbose", "v", false, "Enable verbose output")

var output bytes.Buffer
rootCmd.SetOut(&output)
rootCmd.SetArgs([]string{"--version"})

err := rootCmd.Execute()

assert.NoError(t, err)
assert.Contains(t, output.String(), "bl version 1.2.3")

versionFlag := rootCmd.Flags().Lookup("version")
assert.NotNil(t, versionFlag)
assert.Equal(t, "", versionFlag.Shorthand)

verboseFlag := rootCmd.PersistentFlags().Lookup("verbose")
assert.NotNil(t, verboseFlag)
assert.Equal(t, "v", verboseFlag.Shorthand)
}

func TestTrackingPromptCommandExemptions(t *testing.T) {
assert.True(t, isTrackingPromptCommandExempt([]string{"bl", "version"}))
assert.True(t, isTrackingPromptCommandExempt([]string{"bl", "--version"}))
assert.True(t, isTrackingPromptCommandExempt([]string{"bl", "completion"}))
assert.True(t, isTrackingPromptCommandExempt([]string{"bl", "__complete"}))

assert.False(t, isTrackingPromptCommandExempt([]string{"bl"}))
assert.False(t, isTrackingPromptCommandExempt([]string{"bl", "-v"}))
assert.False(t, isTrackingPromptCommandExempt([]string{"bl", "get"}))
}

func TestReadWriteVersionCache(t *testing.T) {
// Create a temp directory for testing
tempDir, err := os.MkdirTemp("", "version_cache_test")
Expand Down
Loading