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
2 changes: 1 addition & 1 deletion cmd/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"strings"

"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk"
"github.com/pterm/pterm"
"github.com/samber/lo"
"github.com/spf13/cobra"
Expand Down
4 changes: 2 additions & 2 deletions cmd/browser_pools.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"strings"

"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
)
Expand Down
12 changes: 6 additions & 6 deletions cmd/browsers.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@ import (
"strings"

"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/onkernel/kernel-go-sdk/packages/pagination"
"github.com/onkernel/kernel-go-sdk/packages/ssestream"
"github.com/onkernel/kernel-go-sdk/shared"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk/packages/pagination"
"github.com/kernel/kernel-go-sdk/packages/ssestream"
"github.com/kernel/kernel-go-sdk/shared"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
)

// BrowsersService defines the subset of the Kernel SDK browser client that we use.
// See https://github.com/onkernel/kernel-go-sdk/blob/main/browser.go
// See https://github.com/kernel/kernel-go-sdk/blob/main/browser.go
type BrowsersService interface {
Get(ctx context.Context, id string, opts ...option.RequestOption) (res *kernel.BrowserGetResponse, err error)
List(ctx context.Context, query kernel.BrowserListParams, opts ...option.RequestOption) (res *pagination.OffsetPagination[kernel.BrowserListResponse], err error)
Expand Down
10 changes: 5 additions & 5 deletions cmd/browsers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ import (
"testing"
"time"

"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/onkernel/kernel-go-sdk/packages/pagination"
"github.com/onkernel/kernel-go-sdk/packages/ssestream"
"github.com/onkernel/kernel-go-sdk/shared"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk/packages/pagination"
"github.com/kernel/kernel-go-sdk/packages/ssestream"
"github.com/kernel/kernel-go-sdk/shared"
"github.com/pterm/pterm"
"github.com/stretchr/testify/assert"
)
Expand Down
4 changes: 2 additions & 2 deletions cmd/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ import (

"github.com/joho/godotenv"
"github.com/kernel/cli/pkg/util"
kernel "github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
kernel "github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
"github.com/samber/lo"
"github.com/spf13/cobra"
Expand Down
4 changes: 2 additions & 2 deletions cmd/extensions.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import (
"time"

"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
)
Expand Down
4 changes: 2 additions & 2 deletions cmd/extensions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import (
"testing"
"time"

"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
"github.com/stretchr/testify/assert"
)
Expand Down
11 changes: 8 additions & 3 deletions cmd/invoke.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ import (
"syscall"
"time"

"github.com/kernel/cli/pkg/update"
"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
)
Expand Down Expand Up @@ -188,7 +189,11 @@ func handleSdkError(err error) error {
pterm.Info.Println("- Validate that your payload is properly formatted")
pterm.Info.Println("- Check `kernel app history <app name>` to see if the app is deployed")
pterm.Info.Println("- Try redeploying the app")
pterm.Info.Println("- Make sure you're on the latest version of the CLI: `brew upgrade onkernel/tap/kernel`")
if cmd := update.SuggestUpgradeCommand(); cmd != "" {
pterm.Info.Printf("- Make sure you're on the latest version of the CLI: `%s`\n", cmd)
} else {
pterm.Info.Println("- Make sure you're on the latest version of the CLI")
}
return nil
}

Expand Down
4 changes: 2 additions & 2 deletions cmd/logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"time"

"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
)
Expand Down
4 changes: 2 additions & 2 deletions cmd/profiles.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import (
"os"

"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
)
Expand Down
4 changes: 2 additions & 2 deletions cmd/profiles_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import (
"testing"
"time"

"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
"github.com/stretchr/testify/assert"
)
Expand Down
4 changes: 2 additions & 2 deletions cmd/proxies/common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (
"os"
"testing"

"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
)

Expand Down
2 changes: 1 addition & 1 deletion cmd/proxies/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (

"github.com/kernel/cli/pkg/table"
"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
)
Expand Down
4 changes: 2 additions & 2 deletions cmd/proxies/create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"errors"
"testing"

"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/stretchr/testify/assert"
)

Expand Down
4 changes: 2 additions & 2 deletions cmd/proxies/delete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (
"net/http"
"testing"

"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/stretchr/testify/assert"
)

Expand Down
2 changes: 1 addition & 1 deletion cmd/proxies/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (

"github.com/kernel/cli/pkg/table"
"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
)
Expand Down
4 changes: 2 additions & 2 deletions cmd/proxies/get_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (
"net/http"
"testing"

"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/stretchr/testify/assert"
)

Expand Down
2 changes: 1 addition & 1 deletion cmd/proxies/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (

"github.com/kernel/cli/pkg/table"
"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
)
Expand Down
4 changes: 2 additions & 2 deletions cmd/proxies/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"errors"
"testing"

"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/stretchr/testify/assert"
)

Expand Down
4 changes: 2 additions & 2 deletions cmd/proxies/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package proxies
import (
"context"

"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
)

// ProxyService defines the subset of the Kernel SDK proxy client that we use.
Expand Down
4 changes: 2 additions & 2 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ import (
"github.com/kernel/cli/pkg/auth"
"github.com/kernel/cli/pkg/update"
"github.com/kernel/cli/pkg/util"
"github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ require (
github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.1
github.com/golang-jwt/jwt/v5 v5.2.2
github.com/joho/godotenv v1.5.1
github.com/onkernel/kernel-go-sdk v0.24.0
github.com/kernel/kernel-go-sdk v0.25.0
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
github.com/pterm/pterm v0.12.80
github.com/samber/lo v1.51.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
github.com/kernel/kernel-go-sdk v0.25.0 h1:I6EpQKcOasiuVi6gX8HcqEIxK9dAs6xMGSnlUW7AxXY=
github.com/kernel/kernel-go-sdk v0.25.0/go.mod h1:EeZzSuHZVeHKxKCPUzxou2bovNGhXaz0RXrSqKNf1AQ=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.10/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
Expand Down Expand Up @@ -91,8 +93,6 @@ github.com/muesli/mango-pflag v0.1.0 h1:UADqbYgpUyRoBja3g6LUL+3LErjpsOwaC9ywvBWe
github.com/muesli/mango-pflag v0.1.0/go.mod h1:YEQomTxaCUp8PrbhFh10UfbhbQrM/xJ4i2PB8VTLLW0=
github.com/muesli/roff v0.1.0 h1:YD0lalCotmYuF5HhZliKWlIx7IEhiXeSfq7hNjFqGF8=
github.com/muesli/roff v0.1.0/go.mod h1:pjAHQM9hdUUwm/krAfrLGgJkXJ+YuhtsfZ42kieB2Ig=
github.com/onkernel/kernel-go-sdk v0.24.0 h1:M5GdjmdASnpet9UezVEadPpzWyjBfoyqnLwHf/tFoVE=
github.com/onkernel/kernel-go-sdk v0.24.0/go.mod h1:t80buN1uCA/hwvm4D2SpjTJzZWcV7bWOFo9d7qdXD8M=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down
4 changes: 2 additions & 2 deletions pkg/auth/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"fmt"
"os"

kernel "github.com/onkernel/kernel-go-sdk"
"github.com/onkernel/kernel-go-sdk/option"
kernel "github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
)

Expand Down
57 changes: 52 additions & 5 deletions pkg/update/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ func printUpgradeMessage(current, latest, url string) {
if url != "" {
pterm.Info.Printf("Release notes: %s\n", url)
}
if cmd := suggestUpgradeCommand(); cmd != "" {
if cmd := SuggestUpgradeCommand(); cmd != "" {
pterm.Info.Printf("To upgrade, run: %s\n", cmd)
} else {
pterm.Info.Println("To upgrade, visit the release page above or use your package manager.")
Expand Down Expand Up @@ -234,9 +234,9 @@ func saveCache(path string, c Cache) error {
return os.WriteFile(path, b, 0o600)
}

// suggestUpgradeCommand attempts to infer how the user installed kernel and
// SuggestUpgradeCommand attempts to infer how the user installed kernel and
// returns a tailored upgrade command. Falls back to empty string on unknown.
func suggestUpgradeCommand() string {
func SuggestUpgradeCommand() string {
// Collect candidate paths: current executable and shell-resolved binary
candidates := []string{}
if exe, err := os.Executable(); err == nil && exe != "" {
Expand Down Expand Up @@ -272,7 +272,7 @@ func suggestUpgradeCommand() string {
}

rules := []rule{
{hasHomebrew, nil, "brew upgrade onkernel/tap/kernel"},
{hasHomebrew, nil, ""}, // Homebrew handled specially below
{hasBun, []string{"BUN_INSTALL"}, "bun add -g @onkernel/cli@latest"},
{hasPNPM, []string{"PNPM_HOME"}, "pnpm add -g @onkernel/cli@latest"},
{hasNPM, []string{"NPM_CONFIG_PREFIX", "npm_config_prefix", "VOLTA_HOME"}, "npm i -g @onkernel/cli@latest"},
Expand All @@ -282,6 +282,10 @@ func suggestUpgradeCommand() string {
for _, c := range candidates {
for _, r := range rules {
if r.check != nil && r.check(c) {
if r.cmd == "" {
// Homebrew detected, check which tap
return suggestHomebrewCommand(c)
}
return r.cmd
}
}
Expand All @@ -306,7 +310,50 @@ func suggestUpgradeCommand() string {
}

// Default suggestion when unknown
return "brew upgrade onkernel/tap/kernel"
return "brew upgrade kernel/tap/kernel"
}

// suggestHomebrewCommand returns the appropriate brew command based on which tap
// the user has installed. If they have the old onkernel/tap, they need to uninstall
// and reinstall from the new kernel/tap.
func suggestHomebrewCommand(exePath string) string {
// Check if the executable path indicates the old tap by looking at version.
// The Cellar path format is: /opt/homebrew/Cellar/kernel/<version>/bin/kernel
// Versions before 0.13.0 were published to onkernel/tap, 0.13.0+ to kernel/tap.
if isOldTapVersion(exePath) {
return "brew uninstall kernel && brew install kernel/tap/kernel"
}

return "brew upgrade kernel/tap/kernel"
}

// isOldTapVersion checks if the Homebrew Cellar path contains a version < 0.13.0,
// which indicates it was installed from the old onkernel/tap.
func isOldTapVersion(exePath string) bool {
// Expected path format: .../Cellar/kernel/<version>/...
normPath := strings.ToLower(filepath.ToSlash(exePath))
if !strings.Contains(normPath, "/cellar/kernel/") {
return false
}

// Extract version from path
parts := strings.Split(normPath, "/cellar/kernel/")
if len(parts) < 2 {
return false
}
remainder := parts[1] // e.g., "0.12.4/bin/kernel"
versionPart := strings.Split(remainder, "/")[0]
if versionPart == "" {
return false
}

// Parse and compare versions
installed, err := semver.NewVersion(versionPart)
if err != nil {
return false
}
threshold, _ := semver.NewVersion("0.13.0")
return installed.LessThan(threshold)
}

// invokedTrivialCommand returns true if the argv suggests a trivial invocation
Expand Down
Loading