parent
ab6454f136
commit
af8aa5fc41
|
|
@ -12,10 +12,6 @@ run:
|
||||||
# include test files or not, default is true
|
# include test files or not, default is true
|
||||||
tests: true
|
tests: true
|
||||||
|
|
||||||
# default is true. Enables skipping of directories:
|
|
||||||
# vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
|
|
||||||
skip-dirs-use-default: true
|
|
||||||
|
|
||||||
# which dirs to skip: they won't be analyzed;
|
# which dirs to skip: they won't be analyzed;
|
||||||
# can use regexp here: generated.*, regexp is applied on full path;
|
# can use regexp here: generated.*, regexp is applied on full path;
|
||||||
# default value is empty list, but next dirs are always skipped independently
|
# default value is empty list, but next dirs are always skipped independently
|
||||||
|
|
@ -38,7 +34,7 @@ run:
|
||||||
# won't be reported. Default value is empty list, but there is
|
# won't be reported. Default value is empty list, but there is
|
||||||
# no need to include all autogenerated files, we confidently recognize
|
# no need to include all autogenerated files, we confidently recognize
|
||||||
# autogenerated files. If it's not please let us know.
|
# autogenerated files. If it's not please let us know.
|
||||||
skip-files:
|
# skip-files:
|
||||||
# - ".*\\.my\\.go$"
|
# - ".*\\.my\\.go$"
|
||||||
# - lib/bad.go
|
# - lib/bad.go
|
||||||
|
|
||||||
|
|
@ -83,6 +79,11 @@ linters-settings:
|
||||||
reason: "Go 1.20+ has support for combining multiple errors, see https://go.dev/doc/go1.20#errors"
|
reason: "Go 1.20+ has support for combining multiple errors, see https://go.dev/doc/go1.20#errors"
|
||||||
|
|
||||||
issues:
|
issues:
|
||||||
|
|
||||||
|
# default is true. Enables skipping of directories:
|
||||||
|
# vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
|
||||||
|
skip-dirs-use-default: true
|
||||||
|
|
||||||
# Excluding configuration per-path, per-linter, per-text and per-source
|
# Excluding configuration per-path, per-linter, per-text and per-source
|
||||||
exclude-rules:
|
exclude-rules:
|
||||||
- linters: [staticcheck]
|
- linters: [staticcheck]
|
||||||
|
|
|
||||||
2
Makefile
2
Makefile
|
|
@ -11,7 +11,7 @@ DATE ?= $(shell TZ=UTC date -j -f "%s" ${SOURCE_DATE_EPOCH} +"%Y-%m-%dT%H:
|
||||||
else
|
else
|
||||||
DATE ?= $(shell date -u -d @${SOURCE_DATE_EPOCH} +"%Y-%m-%dT%H:%M:%SZ")
|
DATE ?= $(shell date -u -d @${SOURCE_DATE_EPOCH} +"%Y-%m-%dT%H:%M:%SZ")
|
||||||
endif
|
endif
|
||||||
VERSION ?= v0.40.4
|
VERSION ?= v0.40.5
|
||||||
IMG_NAME := derailed/k9s
|
IMG_NAME := derailed/k9s
|
||||||
IMAGE := ${IMG_NAME}:${VERSION}
|
IMAGE := ${IMG_NAME}:${VERSION}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
<img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/k9s.png" align="center" width="800" height="auto"/>
|
||||||
|
|
||||||
|
# Release v0.40.5
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
Thank you to all that contributed with flushing out issues and enhancements for K9s!
|
||||||
|
I'll try to mark some of these issues as fixed. But if you don't mind grab the latest rev
|
||||||
|
and see if we're happier with some of the fixes!
|
||||||
|
If you've filed an issue please help me verify and close.
|
||||||
|
|
||||||
|
Your support, kindness and awesome suggestions to make K9s better are, as ever, very much noted and appreciated!
|
||||||
|
Also big thanks to all that have allocated their own time to help others on both slack and on this repo!!
|
||||||
|
|
||||||
|
As you may know, K9s is not pimped out by corps with deep pockets, thus if you feel K9s is helping your Kubernetes journey,
|
||||||
|
please consider joining our [sponsorship program](https://github.com/sponsors/derailed) and/or make some noise on social! [@kitesurfer](https://twitter.com/kitesurfer)
|
||||||
|
|
||||||
|
On Slack? Please join us [K9slackers](https://join.slack.com/t/k9sers/shared_invite/enQtOTA5MDEyNzI5MTU0LWQ1ZGI3MzliYzZhZWEyNzYxYzA3NjE0YTk1YmFmNzViZjIyNzhkZGI0MmJjYzhlNjdlMGJhYzE2ZGU1NjkyNTM)
|
||||||
|
|
||||||
|
## Maintenance Release!
|
||||||
|
|
||||||
|
😳 Aye! Continued Buzz kill on the 0.40.0 aftermath 🙀 👻
|
||||||
|
|
||||||
|
Likely additional `disturbance in the farce` might be observed.
|
||||||
|
Thank you all for giving this drop a rinse and reporting back!! 😍
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Videos Are In The Can!
|
||||||
|
|
||||||
|
Please dial [K9s Channel](https://www.youtube.com/channel/UC897uwPygni4QIjkPCpgjmw) for up coming content...
|
||||||
|
|
||||||
|
* [K9s v0.40.0 -Column Blow- Sneak peek](https://youtu.be/iy6RDozAM4A)
|
||||||
|
* [K9s v0.31.0 Configs+Sneak peek](https://youtu.be/X3444KfjguE)
|
||||||
|
* [K9s v0.30.0 Sneak peek](https://youtu.be/mVBc1XneRJ4)
|
||||||
|
* [Vulnerability Scans](https://youtu.be/ULkl0MsaidU)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Resolved Issues
|
||||||
|
|
||||||
|
* [#3131](https://github.com/derailed/k9s/issues/3131) Singular versions of native Kubernetes resource names no longer work
|
||||||
|
* [#3119](https://github.com/derailed/k9s/issues/3119) Custom Views Fail to Load with % in Column Names (with feelings!)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contributed PRs
|
||||||
|
|
||||||
|
Please be sure to give `Big Thanks!` and `ATTA Girls/Boys!` to all the fine contributors for making K9s better for all of us!!
|
||||||
|
|
||||||
|
* [#3123](https://github.com/derailed/k9s/pull/3123) update regex to allow '%' and '/' in column names
|
||||||
|
|
||||||
|
|
||||||
|
<img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/imhotep_logo.png" width="32" height="auto"/> © 2024 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
||||||
|
|
@ -111,6 +111,15 @@ func (g GVR) GVR() schema.GroupVersionResource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GVSub returns group vervion sub path.
|
||||||
|
func (g GVR) GVSub() string {
|
||||||
|
if g.G() == "" {
|
||||||
|
return g.V()
|
||||||
|
}
|
||||||
|
|
||||||
|
return g.G() + "/" + g.V()
|
||||||
|
}
|
||||||
|
|
||||||
// GR returns a full schema representation.
|
// GR returns a full schema representation.
|
||||||
func (g GVR) GR() *schema.GroupResource {
|
func (g GVR) GR() *schema.GroupResource {
|
||||||
return &schema.GroupResource{
|
return &schema.GroupResource{
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ func (a *Aliases) Define(gvr string, aliases ...string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, alias := range aliases {
|
for _, alias := range aliases {
|
||||||
if _, ok := a.Alias[alias]; !ok {
|
if _, ok := a.Alias[alias]; !ok && alias != "" {
|
||||||
a.Alias[alias] = gvr
|
a.Alias[alias] = gvr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,13 +119,12 @@ func (a *Alias) load(path string) error {
|
||||||
a.Define(gvrStr, gvr.AsResourceName())
|
a.Define(gvrStr, gvr.AsResourceName())
|
||||||
|
|
||||||
// Allow single shot commands for k8s resources only!
|
// Allow single shot commands for k8s resources only!
|
||||||
if isStandardGroup(gvr.String()) {
|
if isStandardGroup(gvr.GVSub()) {
|
||||||
a.Define(gvrStr, strings.ToLower(meta.Kind), meta.Name)
|
a.Define(gvrStr, strings.ToLower(meta.Kind), meta.Name)
|
||||||
if meta.SingularName != "" {
|
|
||||||
a.Define(gvrStr, meta.SingularName)
|
a.Define(gvrStr, meta.SingularName)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
if len(meta.ShortNames) > 0 {
|
||||||
if meta.ShortNames != nil {
|
|
||||||
a.Define(gvrStr, meta.ShortNames...)
|
a.Define(gvrStr, meta.ShortNames...)
|
||||||
}
|
}
|
||||||
a.Define(gvrStr, gvrStr)
|
a.Define(gvrStr, gvrStr)
|
||||||
|
|
@ -138,10 +137,9 @@ func (a *Alias) load(path string) error {
|
||||||
}
|
}
|
||||||
gvrStr := gvr.String()
|
gvrStr := gvr.String()
|
||||||
a.Define(gvrStr, strings.ToLower(meta.Kind), meta.Name)
|
a.Define(gvrStr, strings.ToLower(meta.Kind), meta.Name)
|
||||||
if meta.SingularName != "" {
|
|
||||||
a.Define(gvrStr, meta.SingularName)
|
a.Define(gvrStr, meta.SingularName)
|
||||||
}
|
|
||||||
if meta.ShortNames != nil {
|
if len(meta.ShortNames) > 0 {
|
||||||
a.Define(gvrStr, meta.ShortNames...)
|
a.Define(gvrStr, meta.ShortNames...)
|
||||||
}
|
}
|
||||||
a.Define(gvrStr, gvrStr)
|
a.Define(gvrStr, gvrStr)
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import (
|
||||||
"k8s.io/kubectl/pkg/cmd/get"
|
"k8s.io/kubectl/pkg/cmd/get"
|
||||||
)
|
)
|
||||||
|
|
||||||
var fullRX = regexp.MustCompile(`\A([\w\s%\/-]+)\:?([^\|]*)\|?([T|N|W|L|R|H]{0,3})\b`)
|
var fullRX = regexp.MustCompile(`^([\w\s%\/-]+)\:?([\w\d\S\W]*?)\|?([N|T|W|R|L|H]{0,3})$`)
|
||||||
|
|
||||||
type colAttr byte
|
type colAttr byte
|
||||||
|
|
||||||
|
|
@ -69,6 +69,8 @@ type colDef struct {
|
||||||
spec string
|
spec string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TAG:.spec.containers[0].image|split(":")|.[-1]|TW
|
||||||
|
|
||||||
func parse(s string) (colDef, error) {
|
func parse(s string) (colDef, error) {
|
||||||
mm := fullRX.FindStringSubmatch(s)
|
mm := fullRX.FindStringSubmatch(s)
|
||||||
if len(mm) == 4 {
|
if len(mm) == 4 {
|
||||||
|
|
|
||||||
|
|
@ -189,8 +189,10 @@ func TestCustCol_parse(t *testing.T) {
|
||||||
e: colDef{
|
e: colDef{
|
||||||
name: "fred",
|
name: "fred",
|
||||||
idx: -1,
|
idx: -1,
|
||||||
|
spec: "{.||.metadata.name}",
|
||||||
colAttrs: colAttrs{
|
colAttrs: colAttrs{
|
||||||
align: tview.AlignLeft,
|
align: tview.AlignLeft,
|
||||||
|
wide: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
name: k9s
|
name: k9s
|
||||||
base: core22
|
base: core22
|
||||||
version: 'v0.40.4'
|
version: 'v0.40.5'
|
||||||
summary: K9s is a CLI to view and manage your Kubernetes clusters.
|
summary: K9s is a CLI to view and manage your Kubernetes clusters.
|
||||||
description: |
|
description: |
|
||||||
K9s is a CLI to view and manage your Kubernetes clusters. By leveraging a terminal UI, you can easily traverse Kubernetes resources and view the state of your clusters in a single powerful session.
|
K9s is a CLI to view and manage your Kubernetes clusters. By leveraging a terminal UI, you can easily traverse Kubernetes resources and view the state of your clusters in a single powerful session.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue