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
4 changes: 2 additions & 2 deletions cmd/commit.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"time"

"github.com/hdresearch/vers-cli/internal/utils"
vers "github.com/hdresearch/vers-sdk-go"
"github.com/spf13/cobra"
)

Expand Down Expand Up @@ -53,14 +54,13 @@ var commitCmd = &cobra.Command{
}
}

response, err := client.Vm.Commit(apiCtx, vmInfo.ID)
response, err := client.Vm.Commit(apiCtx, vmInfo.ID, vers.VmCommitParams{})
if err != nil {
return fmt.Errorf("failed to commit VM '%s': %w", vmInfo.DisplayName, err)
}

fmt.Printf("Successfully committed VM '%s'\n", vmInfo.DisplayName)
fmt.Printf("Commit ID: %s\n", response.CommitID)
fmt.Printf("Host Architecture: %s\n", response.HostArchitecture)

return nil
},
Expand Down
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ require (
github.com/charmbracelet/lipgloss v1.1.0
github.com/joho/godotenv v1.5.1
github.com/modelcontextprotocol/go-sdk v0.6.0
github.com/pkg/sftp v1.13.10
github.com/spf13/cobra v1.9.1
golang.org/x/crypto v0.46.0
golang.org/x/term v0.38.0
)

Expand All @@ -24,10 +26,8 @@ require (
github.com/mattn/go-localereader v0.0.1 // indirect
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/pkg/sftp v1.13.10 // indirect
github.com/sahilm/fuzzy v0.1.1 // indirect
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
golang.org/x/crypto v0.46.0 // indirect
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
golang.org/x/sync v0.19.0 // indirect
golang.org/x/text v0.32.0 // indirect
Expand All @@ -39,7 +39,7 @@ require (
github.com/charmbracelet/x/ansi v0.8.0 // indirect
github.com/charmbracelet/x/cellbuf v0.0.14-0.20250501183327-ad3bc78c6a81 // indirect
github.com/charmbracelet/x/term v0.2.1 // indirect
github.com/hdresearch/vers-sdk-go v0.1.0-alpha.24
github.com/hdresearch/vers-sdk-go v0.1.0-alpha.26
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
Expand Down
23 changes: 11 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,16 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20241212170349-ad4b7ae0f25f/go.mod
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/jsonschema-go v0.2.3 h1:dkP3B96OtZKKFvdrUSaDkL+YDx8Uw9uC4Y+eukpCnmM=
github.com/google/jsonschema-go v0.2.3/go.mod h1:r5quNTdLOYEz95Ru18zA0ydNbBuYoo9tgaYcxEYhJVE=
github.com/hdresearch/vers-sdk-go v0.1.0-alpha.24 h1:dtrLPW8cTDaW+0Wh55rUcdKjElac9C+4rZZ2Rfzi8bc=
github.com/hdresearch/vers-sdk-go v0.1.0-alpha.24/go.mod h1:aJoQGYzJHXdbj7uhCekUZaxbMu+XhVMOCtVQEdA0NFI=
github.com/hdresearch/vers-sdk-go v0.1.0-alpha.26 h1:1v+kyEDBeMLpKXUvtcgrD50xvKu45EmAYehMnjqzDc0=
github.com/hdresearch/vers-sdk-go v0.1.0-alpha.26/go.mod h1:aJoQGYzJHXdbj7uhCekUZaxbMu+XhVMOCtVQEdA0NFI=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
Expand All @@ -57,6 +59,8 @@ github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
github.com/pkg/sftp v1.13.10 h1:+5FbKNTe5Z9aspU88DPIKJ9z2KZoaGCu6Sr6kKR/5mU=
github.com/pkg/sftp v1.13.10/go.mod h1:bJ1a7uDhrX/4OII+agvy28lzRvQrmIQuaHrcI1HbeGA=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
Expand All @@ -67,6 +71,8 @@ github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
Expand All @@ -86,25 +92,18 @@ golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q=
golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg=
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ=
golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
12 changes: 0 additions & 12 deletions internal/presenters/status_presenter.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,6 @@ func RenderVMStatus(s *styles.StatusStyles, vm *vers.Vm) {
fmt.Println(s.VMListHeader.Render("VM details:"))
vmList := list.New().Enumerator(emptyEnumerator).ItemStyle(s.VMListItem)
vmInfoDisplay := s.VMName.Render("VM: " + s.VMID.Render(vmInfo.DisplayName))
if vm.Parent != "" {
vmInfoDisplay = fmt.Sprintf("%s\n%s",
vmInfoDisplay,
s.VMData.Render("Parent: "+vm.Parent),
)
}
vmList.Items(vmInfoDisplay)
fmt.Println(vmList)
fmt.Println(s.Tip.Render("\nTip: To view all VMs, run: vers status"))
Expand All @@ -31,12 +25,6 @@ func RenderVMList(s *styles.StatusStyles, vms []vers.Vm) {
vmList := list.New().Enumerator(emptyEnumerator).ItemStyle(s.VMListItem)
for _, vm := range vms {
vmInfo := s.VMName.Render("VM: " + vm.VmID)
if vm.Parent != "" {
vmInfo = fmt.Sprintf("%s\n%s",
vmInfo,
s.VMData.Render("Parent: "+vm.Parent),
)
}
vmList.Items(vmInfo)
}
fmt.Println(vmList)
Expand Down
4 changes: 2 additions & 2 deletions internal/services/deletion/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
// DeleteVM deletes a VM by ID. If recursive is false and the VM has children, returns *errorsx.HasChildrenError.
// If the VM is a root VM, returns *errorsx.IsRootError.
func DeleteVM(ctx context.Context, client *vers.Client, vmID string, recursive bool) ([]string, error) {
result, err := client.Vm.Delete(ctx, vmID)
result, err := client.Vm.Delete(ctx, vmID, vers.VmDeleteParams{})
if err != nil {
es := err.Error()
if strings.Contains(es, "HasChildren") {
Expand All @@ -22,5 +22,5 @@ func DeleteVM(ctx context.Context, client *vers.Client, vmID string, recursive b
}
return nil, err
}
return result.DeletedIDs, nil
return []string{result.VmID}, nil
}
6 changes: 3 additions & 3 deletions internal/tui/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package tui

import (
"context"
"fmt"
"io"
"strings"

Expand All @@ -18,6 +17,7 @@ import (
svcstatus "github.com/hdresearch/vers-cli/internal/services/status"
vmSvc "github.com/hdresearch/vers-cli/internal/services/vm"
sshutil "github.com/hdresearch/vers-cli/internal/ssh"
vers "github.com/hdresearch/vers-sdk-go"
)

type focus int
Expand Down Expand Up @@ -111,7 +111,7 @@ func loadVMsCmd(m Model) tea.Cmd {
items := make([]list.Item, 0, len(rows))
for _, vm := range rows {
disp := vm.VmID
items = append(items, vmItem{TitleText: disp, DescText: fmt.Sprintf("Parent: %s", vm.Parent), ID: vm.VmID, Alias: ""})
items = append(items, vmItem{TitleText: disp, DescText: "", ID: vm.VmID, Alias: ""})
}
return vmsLoadedMsg{items: items}
}
Expand Down Expand Up @@ -242,7 +242,7 @@ func doCommitCmd(m Model, vmID string, tagCSV string) tea.Cmd {
ctx, cancel := context.WithTimeout(context.Background(), m.app.Timeouts.APILong)
defer cancel()
// direct SDK call - note: tags no longer supported in new SDK
_, err := m.app.Client.Vm.Commit(ctx, vmID)
_, err := m.app.Client.Vm.Commit(ctx, vmID, vers.VmCommitParams{})
if err != nil {
return actionCompletedMsg{text: "Commit failed", err: err}
}
Expand Down
Loading