k9s: add aliases, plugins, views
Adding the remaining config files of k9s that weren't covered yet. PR #4627
This commit is contained in:
parent
e27be9db7b
commit
691cbcc03a
|
@ -20,10 +20,8 @@ in {
|
||||||
type = yamlFormat.type;
|
type = yamlFormat.type;
|
||||||
default = { };
|
default = { };
|
||||||
description = ''
|
description = ''
|
||||||
Configuration written to
|
Configuration written to {file}`$XDG_CONFIG_HOME/k9s/config.yml`. See
|
||||||
{file}`$XDG_CONFIG_HOME/k9s/config.yml`. See
|
<https://k9scli.io/topics/config/> for supported values.
|
||||||
<https://k9scli.io/topics/config/>
|
|
||||||
for supported values.
|
|
||||||
'';
|
'';
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
k9s = {
|
k9s = {
|
||||||
|
@ -36,10 +34,8 @@ in {
|
||||||
type = yamlFormat.type;
|
type = yamlFormat.type;
|
||||||
default = { };
|
default = { };
|
||||||
description = ''
|
description = ''
|
||||||
Skin written to
|
Skin written to {file}`$XDG_CONFIG_HOME/k9s/skin.yml`. See
|
||||||
{file}`$XDG_CONFIG_HOME/k9s/skin.yml`. See
|
<https://k9scli.io/topics/skins/> for supported values.
|
||||||
<https://k9scli.io/topics/skins/>
|
|
||||||
for supported values.
|
|
||||||
'';
|
'';
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
k9s = {
|
k9s = {
|
||||||
|
@ -50,14 +46,27 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
aliases = mkOption {
|
||||||
|
type = yamlFormat.type;
|
||||||
|
default = { };
|
||||||
|
description = ''
|
||||||
|
Aliases written to {file}`$XDG_CONFIG_HOME/k9s/aliases.yml`. See
|
||||||
|
<https://k9scli.io/topics/aliases/> for supported values.
|
||||||
|
'';
|
||||||
|
example = literalExpression ''
|
||||||
|
alias = {
|
||||||
|
# Use pp as an alias for Pod
|
||||||
|
pp = "v1/pods";
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
hotkey = mkOption {
|
hotkey = mkOption {
|
||||||
type = yamlFormat.type;
|
type = yamlFormat.type;
|
||||||
default = { };
|
default = { };
|
||||||
description = ''
|
description = ''
|
||||||
hotkeys written to
|
Hotkeys written to {file}`$XDG_CONFIG_HOME/k9s/hotkey.yml`. See
|
||||||
{file}`$XDG_CONFIG_HOME/k9s/hotkey.yml`. See
|
<https://k9scli.io/topics/hotkeys/> for supported values.
|
||||||
<https://k9scli.io/topics/hotkeys/>
|
|
||||||
for supported values.
|
|
||||||
'';
|
'';
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
hotkey = {
|
hotkey = {
|
||||||
|
@ -72,6 +81,63 @@ in {
|
||||||
};
|
};
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
plugin = mkOption {
|
||||||
|
type = yamlFormat.type;
|
||||||
|
default = { };
|
||||||
|
description = ''
|
||||||
|
Plugins written to {file}`$XDG_CONFIG_HOME/k9s/plugin.yml`. See
|
||||||
|
<https://k9scli.io/topics/plugins/> for supported values.
|
||||||
|
'';
|
||||||
|
example = literalExpression ''
|
||||||
|
plugin = {
|
||||||
|
# Defines a plugin to provide a `ctrl-l` shortcut to
|
||||||
|
# tail the logs while in pod view.
|
||||||
|
fred = {
|
||||||
|
shortCut = "Ctrl-L";
|
||||||
|
description = "Pod logs";
|
||||||
|
scopes = [ "po" ];
|
||||||
|
command = "kubectl";
|
||||||
|
background = false;
|
||||||
|
args = [
|
||||||
|
"logs"
|
||||||
|
"-f"
|
||||||
|
"$NAME"
|
||||||
|
"-n"
|
||||||
|
"$NAMESPACE"
|
||||||
|
"--context"
|
||||||
|
"$CLUSTER"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
views = mkOption {
|
||||||
|
type = yamlFormat.type;
|
||||||
|
default = { };
|
||||||
|
description = ''
|
||||||
|
Resource column views written to {file}`$XDG_CONFIG_HOME/k9s/views.yml`.
|
||||||
|
See <https://k9scli.io/topics/columns/> for supported values.
|
||||||
|
'';
|
||||||
|
example = literalExpression ''
|
||||||
|
k9s = {
|
||||||
|
views = {
|
||||||
|
"v1/pods" = {
|
||||||
|
columns = [
|
||||||
|
"AGE"
|
||||||
|
"NAMESPACE"
|
||||||
|
"NAME"
|
||||||
|
"IP"
|
||||||
|
"NODE"
|
||||||
|
"STATUS"
|
||||||
|
"READY"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -85,8 +151,20 @@ in {
|
||||||
source = yamlFormat.generate "k9s-skin" cfg.skin;
|
source = yamlFormat.generate "k9s-skin" cfg.skin;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xdg.configFile."k9s/aliases.yml" = mkIf (cfg.aliases != { }) {
|
||||||
|
source = yamlFormat.generate "k9s-aliases" cfg.aliases;
|
||||||
|
};
|
||||||
|
|
||||||
xdg.configFile."k9s/hotkey.yml" = mkIf (cfg.hotkey != { }) {
|
xdg.configFile."k9s/hotkey.yml" = mkIf (cfg.hotkey != { }) {
|
||||||
source = yamlFormat.generate "k9s-hotkey" cfg.hotkey;
|
source = yamlFormat.generate "k9s-hotkey" cfg.hotkey;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xdg.configFile."k9s/plugin.yml" = mkIf (cfg.plugin != { }) {
|
||||||
|
source = yamlFormat.generate "k9s-plugin" cfg.plugin;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."k9s/views.yml" = mkIf (cfg.views != { }) {
|
||||||
|
source = yamlFormat.generate "k9s-views" cfg.views;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
2
tests/modules/programs/k9s/example-aliases-expected.yml
Normal file
2
tests/modules/programs/k9s/example-aliases-expected.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
alias:
|
||||||
|
pp: v1/pods
|
16
tests/modules/programs/k9s/example-plugin-expected.yml
Normal file
16
tests/modules/programs/k9s/example-plugin-expected.yml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
plugin:
|
||||||
|
fred:
|
||||||
|
args:
|
||||||
|
- logs
|
||||||
|
- -f
|
||||||
|
- $NAME
|
||||||
|
- -n
|
||||||
|
- $NAMESPACE
|
||||||
|
- --context
|
||||||
|
- $CLUSTER
|
||||||
|
background: false
|
||||||
|
command: kubectl
|
||||||
|
description: Pod logs
|
||||||
|
scopes:
|
||||||
|
- po
|
||||||
|
shortCut: Ctrl-L
|
|
@ -35,6 +35,29 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
aliases = { alias = { pp = "v1/pods"; }; };
|
||||||
|
plugin = {
|
||||||
|
plugin = {
|
||||||
|
fred = {
|
||||||
|
shortCut = "Ctrl-L";
|
||||||
|
description = "Pod logs";
|
||||||
|
scopes = [ "po" ];
|
||||||
|
command = "kubectl";
|
||||||
|
background = false;
|
||||||
|
args =
|
||||||
|
[ "logs" "-f" "$NAME" "-n" "$NAMESPACE" "--context" "$CLUSTER" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
views = {
|
||||||
|
k9s = {
|
||||||
|
views = {
|
||||||
|
"v1/pods" = {
|
||||||
|
columns = [ "AGE" "NAMESPACE" "NAME" "IP" "NODE" "STATUS" "READY" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nmt.script = ''
|
nmt.script = ''
|
||||||
|
@ -43,12 +66,24 @@
|
||||||
home-files/.config/k9s/config.yml \
|
home-files/.config/k9s/config.yml \
|
||||||
${./example-config-expected.yml}
|
${./example-config-expected.yml}
|
||||||
assertFileExists home-files/.config/k9s/skin.yml
|
assertFileExists home-files/.config/k9s/skin.yml
|
||||||
assertFileExists home-files/.config/k9s/hotkey.yml
|
|
||||||
assertFileContent \
|
assertFileContent \
|
||||||
home-files/.config/k9s/skin.yml \
|
home-files/.config/k9s/skin.yml \
|
||||||
${./example-skin-expected.yml}
|
${./example-skin-expected.yml}
|
||||||
|
assertFileExists home-files/.config/k9s/hotkey.yml
|
||||||
assertFileContent \
|
assertFileContent \
|
||||||
home-files/.config/k9s/hotkey.yml \
|
home-files/.config/k9s/hotkey.yml \
|
||||||
${./example-hotkey-expected.yml}
|
${./example-hotkey-expected.yml}
|
||||||
|
assertFileExists home-files/.config/k9s/aliases.yml
|
||||||
|
assertFileContent \
|
||||||
|
home-files/.config/k9s/aliases.yml \
|
||||||
|
${./example-aliases-expected.yml}
|
||||||
|
assertFileExists home-files/.config/k9s/plugin.yml
|
||||||
|
assertFileContent \
|
||||||
|
home-files/.config/k9s/plugin.yml \
|
||||||
|
${./example-plugin-expected.yml}
|
||||||
|
assertFileExists home-files/.config/k9s/views.yml
|
||||||
|
assertFileContent \
|
||||||
|
home-files/.config/k9s/views.yml \
|
||||||
|
${./example-views-expected.yml}
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
11
tests/modules/programs/k9s/example-views-expected.yml
Normal file
11
tests/modules/programs/k9s/example-views-expected.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
k9s:
|
||||||
|
views:
|
||||||
|
v1/pods:
|
||||||
|
columns:
|
||||||
|
- AGE
|
||||||
|
- NAMESPACE
|
||||||
|
- NAME
|
||||||
|
- IP
|
||||||
|
- NODE
|
||||||
|
- STATUS
|
||||||
|
- READY
|
Loading…
Reference in a new issue