Merge pull request #295 from glendsoza/master

Created a seperate context to display just environment variables
This commit is contained in:
Jesse Duffield 2022-01-20 09:15:09 +11:00 committed by GitHub
commit e9d65eda03
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 80 additions and 10 deletions

View file

@ -18,11 +18,11 @@ import (
// list panel functions
func (gui *Gui) getContainerContexts() []string {
return []string{"logs", "stats", "config", "top"}
return []string{"logs", "stats", "env", "config", "top"}
}
func (gui *Gui) getContainerContextTitles() []string {
return []string{gui.Tr.LogsTitle, gui.Tr.StatsTitle, gui.Tr.ConfigTitle, gui.Tr.TopTitle}
return []string{gui.Tr.LogsTitle, gui.Tr.StatsTitle, gui.Tr.EnvTitle, gui.Tr.ConfigTitle, gui.Tr.TopTitle}
}
func (gui *Gui) getSelectedContainer() (*commands.Container, error) {
@ -75,6 +75,10 @@ func (gui *Gui) handleContainerSelect(g *gocui.Gui, v *gocui.View) error {
if err := gui.renderContainerConfig(container); err != nil {
return err
}
case "env":
if err := gui.renderContainerEnv(container); err != nil {
return err
}
case "stats":
if err := gui.renderContainerStats(container); err != nil {
return err
@ -90,6 +94,33 @@ func (gui *Gui) handleContainerSelect(g *gocui.Gui, v *gocui.View) error {
return nil
}
func (gui *Gui) renderContainerEnv(container *commands.Container) error {
mainView := gui.getMainView()
mainView.Autoscroll = false
mainView.Wrap = gui.Config.UserConfig.Gui.WrapMainPanel
envVariablesList := [][]string{}
renderedTable := gui.Tr.NothingToDisplay
if len(container.Details.Config.Env) > 0 {
var err error
for _, env := range container.Details.Config.Env {
splitEnv := strings.SplitN(env, "=", 2)
envVariablesList = append(envVariablesList,
[]string{
utils.ColoredString(splitEnv[0]+":", color.FgGreen),
utils.ColoredString(splitEnv[1], color.FgYellow),
})
}
renderedTable, err = utils.RenderTable(envVariablesList)
if err != nil {
gui.Log.Error(err)
renderedTable = gui.Tr.CannotDisplayEnvVariables
}
}
return gui.T.NewTask(func(stop chan struct{}) {
gui.renderString(gui.g, "main", renderedTable)
})
}
func (gui *Gui) renderContainerConfig(container *commands.Container) error {
mainView := gui.getMainView()
mainView.Autoscroll = false

View file

@ -15,11 +15,16 @@ import (
// list panel functions
func (gui *Gui) getServiceContexts() []string {
return []string{"logs", "stats", "container-config", "top"}
return []string{"logs", "stats", "container-env", "container-config", "top"}
}
func (gui *Gui) getServiceContextTitles() []string {
return []string{gui.Tr.LogsTitle, gui.Tr.StatsTitle, gui.Tr.ContainerConfigTitle, gui.Tr.TopTitle}
return []string{
gui.Tr.LogsTitle,
gui.Tr.StatsTitle,
gui.Tr.ContainerEnvTitle,
gui.Tr.ContainerConfigTitle,
gui.Tr.TopTitle}
}
func (gui *Gui) getSelectedService() (*commands.Service, error) {
@ -73,6 +78,13 @@ func (gui *Gui) handleServiceSelect(g *gocui.Gui, v *gocui.View) error {
if err := gui.renderServiceStats(service); err != nil {
return err
}
case "container-env":
if service.Container == nil {
return gui.renderString(gui.g, "main", gui.Tr.NoContainer)
}
if err := gui.renderContainerEnv(service.Container); err != nil {
return err
}
case "container-config":
if service.Container == nil {
return gui.renderString(gui.g, "main", gui.Tr.NoContainer)

View file

@ -64,11 +64,15 @@ func dutchSet() TranslationSet {
ErrorTitle: "Fout",
LogsTitle: "Logs",
ConfigTitle: "Config",
EnvTitle: "Env",
DockerComposeConfigTitle: "Docker-Compose Configuratie",
TopTitle: "Top",
StatsTitle: "Stats",
CreditsTitle: "Over",
ContainerConfigTitle: "Container Configuratie",
ContainerEnvTitle: "Container Env",
NothingToDisplay: "Nothing to display",
CannotDisplayEnvVariables: "Something went wrong while displaying environment variables",
NoContainers: "Geen containers",
NoContainer: "Geen container",

View file

@ -84,12 +84,16 @@ type TranslationSet struct {
OpenInBrowser string
SortContainersByState string
LogsTitle string
ConfigTitle string
DockerComposeConfigTitle string
StatsTitle string
CreditsTitle string
ContainerConfigTitle string
LogsTitle string
ConfigTitle string
EnvTitle string
DockerComposeConfigTitle string
StatsTitle string
CreditsTitle string
ContainerConfigTitle string
ContainerEnvTitle string
NothingToDisplay string
CannotDisplayEnvVariables string
No string
Yes string
@ -168,11 +172,15 @@ func englishSet() TranslationSet {
ErrorTitle: "Error",
LogsTitle: "Logs",
ConfigTitle: "Config",
EnvTitle: "Env",
DockerComposeConfigTitle: "Docker-Compose Config",
TopTitle: "Top",
StatsTitle: "Stats",
CreditsTitle: "About",
ContainerConfigTitle: "Container Config",
ContainerEnvTitle: "Container Env",
NothingToDisplay: "Nothing to display",
CannotDisplayEnvVariables: "Something went wrong while displaying environment variables",
NoContainers: "No containers",
NoContainer: "No container",

View file

@ -63,11 +63,15 @@ func germanSet() TranslationSet {
ErrorTitle: "Fehler",
LogsTitle: "Protokoll",
ConfigTitle: "Konfiguration",
EnvTitle: "Env",
DockerComposeConfigTitle: "Docker-Compose Konfiguration",
TopTitle: "Top",
StatsTitle: "Statistiken",
CreditsTitle: "Über Uns",
ContainerConfigTitle: "Container Konfiguration",
ContainerEnvTitle: "Container Env",
NothingToDisplay: "Nothing to display",
CannotDisplayEnvVariables: "Something went wrong while displaying environment variables",
NoContainers: "Keine Container",
NoContainer: "Kein Container",

View file

@ -63,11 +63,15 @@ func polishSet() TranslationSet {
ErrorTitle: "Błąd",
LogsTitle: "Logi",
ConfigTitle: "Konfiguracja",
EnvTitle: "Env",
DockerComposeConfigTitle: "Konfiguracja docker-compose",
TopTitle: "Top",
StatsTitle: "Staty",
CreditsTitle: "O",
ContainerConfigTitle: "Konfiguracja kontenera",
ContainerEnvTitle: "Container Env",
NothingToDisplay: "Nothing to display",
CannotDisplayEnvVariables: "Something went wrong while displaying environment variables",
NoContainers: "Brak kontenerów",
NoContainer: "Brak kontenera",

View file

@ -63,11 +63,15 @@ func turkishSet() TranslationSet {
ErrorTitle: "Hata",
LogsTitle: "Kayitlar",
ConfigTitle: "Ayarlar",
EnvTitle: "Env",
DockerComposeConfigTitle: "Docker-Compose Ayar",
TopTitle: "Top",
StatsTitle: "Durumlar",
CreditsTitle: "Hakkinda",
ContainerConfigTitle: "Konteyner Ayar",
ContainerEnvTitle: "Konteyner Env",
NothingToDisplay: "Nothing to display",
CannotDisplayEnvVariables: "Something went wrong while displaying environment variables",
NoContainers: "Konteynerler yok",
NoContainer: "Konteyner yok",

View file

@ -165,6 +165,9 @@ func renderDisplayableList(items []Displayable, config RenderListConfig) (string
// RenderTable takes an array of string arrays and returns a table containing the values
func RenderTable(stringArrays [][]string) (string, error) {
if len(stringArrays) == 0 {
return "", nil
}
if !displayArraysAligned(stringArrays) {
return "", errors.New("Each item must return the same number of strings to display")
}