Commit 84219c5
feat: expand runpodctl coverage with legacy-safe cli (#229)
* refactor(cli): restructure commands to noun-verb pattern and add resource groups
- rename module from runpodctl to runpod and binary to runpod
- change command structure from verb-noun to noun-verb pattern
- add new resource command groups: serverless, template, volume, registry
- add legacy command support for backward compatibility
- create internal api layer with rest client and resource methods
- add output formatting support (json/yaml/table)
- enhance ssh key management and commands
- update dependencies (cobra v1.8.1, viper v1.19.0)
- update documentation and add agents.md for ai tooling
- remove deprecated test files and consolidate version handling
* refactor(cli): rename volume to network-volume and remove table output
- rename volume command to network-volume with alias 'nv'
- remove table output format, keep only json and yaml
- hide deprecated project command
- update help text and command descriptions
- simplify api test responses to use direct arrays
- update all tests to reflect command rename and output changes
* feat(cli): add info commands and pod restart/reset operations
- add user command to show account info and balance (alias: me, account)
- add gpu command to list available gpu types
- add datacenter command to list datacenters (alias: dc)
- add billing command with subcommands for pods, serverless, network-volume
- add doctor command to diagnose and fix cli configuration issues
- add pod restart and reset commands
- refactor legacy commands to use actual commands with deprecation warnings
- improve config handling with explicit viper value setting
- update error messages to guide users to doctor command
- deprecate config command in favor of doctor
- update default ssh key name to RunPod-Key-Go
- add comprehensive e2e tests for all new commands
- update root help text with getting started instructions
* feat(cli): add shell completion with auto-detection
- add completion command that auto-detects shell (bash, zsh, fish, powershell)
- automatically install completion to appropriate config files
- disable default cobra completion command
- add hidden generate subcommand for advanced usage
- register completion and update commands in root
- update comment formatting in update command
* docs(cli): update help text and version to clarify runpod v2
- update root help text to mention runpod v2 (formerly runpodctl)
- update version template to include formerly runpodctl note
- update version command output to clarify migration from runpodctl
* feat(template): add search command and enhance list filtering
- add template search command to search by name or image
- add --type flag to filter templates (official, community, user)
- add --limit and --offset flags for pagination
- add --all flag to include user templates
- update list command with smart defaults (show all for official/user, limit for community)
- add graphql support for fetching official and community templates
- enhance gettemplate to try rest api first, fallback to graphql
- add template type constants and list options struct
- add comprehensive e2e tests for filtering and pagination
* feat(cli): expand pod, template, model, and ssh support
- add cpu pod creation with compute-type and gpu-type-id naming
- include ssh info and lifecycle fields in pod get output
- return template readme/env/ports on get and parse graphql ports
- promote model repo commands and add legacy get models mapping
- update gpu list output to gpu type id and expand e2e coverage
* feat(legacy): deprecate exec and restore legacy commands
keep exec as a hidden legacy command that points users to ssh, and restore missing legacy commands for cloud and multi-pod operations.
* fix(legacy): keep exec runnable and add project tests
preserve backward compatibility for legacy exec while pointing users to ssh. add project create/build test coverage and remove resolved issue notes.
* feat(pod): add global networking flag
add global-networking to pod create with validation and error hints, wire the rest request, add e2e coverage, and update the issue note.
* feat(pod): add public ip filter
add --public-ip for community cloud pods, wire supportPublicIp, add unit and e2e coverage, and document testing expectations.
* style(help): normalize help text
standardize command help text casing and plurals, and add unit + e2e checks to prevent regressions.
* fix(cli): keep runpodctl as primary binary
avoid breaking existing users by reverting the cli name to runpodctl.
align docs, tooling, and tests so install and update paths keep the same binary.
* test(e2e): cover legacy and cli entrypoints
add legacy command assertions and help coverage for remaining cli entrypoints.
include ssh, completion, and send/receive checks to catch regressions.
* ci(workflow): install govulncheck
install govulncheck in ci and call it directly to keep the build green.
* docs(agents): add cli pitfalls
document non-obvious pitfalls to avoid regressions in templates, legacy, and doctor.
* feat(pod): require template-id flag
use --template-id for pod creation to align with serverless and clarify intent.
update help text and e2e coverage accordingly.
* feat(cli): rename gpu id fields
rename gpu-type-id flag to gpu-id and normalize gpuTypeId output to gpuId.
align billing filters/grouping and update tests/docs; remove resolved docs/issues.
* feat(cli): refresh help and docs
simplify root help messaging and regenerate markdown docs for the new cli.
update pr template to match the new summary/testing guidance.
* refactor(module): align module path with repo
update go.mod module path to github.com/runpod/runpodctl and rewrite imports
to match; includes gofmt cleanup after the path change.
* chore(docs): untrack cli restructure justification
remove the cli restructure justification from the repo while keeping it locally.
Co-authored-by: Cursor <[email protected]>
* feat(pod): add --ssh flag to pod create
use graphql api for gpu pod creation to support startSsh field, which
controls whether ssh keys are injected into the pod. cpu pods fall back
to rest api since graphql requires gpuTypeId.
* fix(legacy): add missing model commands to legacy wrappers
create model and remove model were not registered in the legacy
command layer, causing flags like --name and --owner to be unknown.
* fix(model): remove unnecessary hash from model repo uploads
model repo uploads do not accept a hash, causing errors when specified.
also bumps go version to 1.25.7.
cherry-picked from #230.
* fix(cli): restore model upload timeout fallback and prevent legacy create panic
---------
Co-authored-by: Cursor <[email protected]>
Co-authored-by: max4c <[email protected]>1 parent 5ea18ac commit 84219c5
176 files changed
Lines changed: 13490 additions & 700 deletions
File tree
- .github/workflows
- api
- cmd
- billing
- config
- croc
- datacenter
- doctor
- exec
- gpu
- legacy
- model
- pods
- pod
- project
- registry
- serverless
- ssh
- template
- transfer
- user
- volume
- docs
- e2e
- internal
- api
- output
- sshconnect
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
15 | 19 | | |
16 | 20 | | |
17 | 21 | | |
18 | 22 | | |
19 | 23 | | |
20 | | - | |
| 24 | + | |
21 | 25 | | |
22 | 26 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
0 commit comments