summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean E. Russell <ser@ser1.net>2021-03-04 16:23:04 -0600
committerSean E. Russell <ser@ser1.net>2021-03-04 16:23:04 -0600
commitefcb0e9d2ab8a8f115b5368da03a75974898ed86 (patch)
tree824e37ea8434b91004ba51e533f605ec4314c73b
parenta44ced4bba471325bba98cabce5709d52c90a60c (diff)
Gets the NVidia extension options working, including marshalling.nvidia
-rw-r--r--cmd/gotop/main.go4
-rw-r--r--config.go15
-rw-r--r--devices/nvidia.go7
-rw-r--r--translations/dicts/de_DE.toml2
-rw-r--r--translations/dicts/en_US.toml2
-rw-r--r--translations/dicts/eo.toml2
-rw-r--r--translations/dicts/fr.toml2
-rw-r--r--translations/dicts/tt_TT.toml2
-rw-r--r--translations/dicts/zh_CN.toml2
9 files changed, 31 insertions, 7 deletions
diff --git a/cmd/gotop/main.go b/cmd/gotop/main.go
index 3a33535..94f03a8 100644
--- a/cmd/gotop/main.go
+++ b/cmd/gotop/main.go
@@ -77,6 +77,7 @@ func parseArgs() error {
opflag.BoolVarP(&conf.Mbps, "mbps", "", conf.Mbps, tr.Value("args.mbps"))
opflag.BoolVar(&conf.Test, "test", conf.Test, tr.Value("args.test"))
opflag.StringP("", "C", "", tr.Value("args.conffile"))
+ opflag.BoolVarP(&conf.Nvidia, "nvidia", "", conf.Nvidia, "Enable NVidia GPU support")
list := opflag.String("list", "", tr.Value("args.list"))
wc := opflag.Bool("write-config", false, tr.Value("args.write"))
opflag.SortFlags = false
@@ -139,6 +140,9 @@ func parseArgs() error {
}
os.Exit(0)
}
+ if conf.Nvidia {
+ conf.ExtensionVars["nvidia"] = "true"
+ }
if *wc {
path, err := conf.Write()
if err != nil {
diff --git a/config.go b/config.go
index b483f65..30c76db 100644
--- a/config.go
+++ b/config.go
@@ -16,10 +16,10 @@ import (
"strings"
"time"
- "github.com/xxxserxxx/lingo"
"github.com/shibukawa/configdir"
"github.com/xxxserxxx/gotop/v4/colorschemes"
"github.com/xxxserxxx/gotop/v4/widgets"
+ "github.com/xxxserxxx/lingo"
)
// CONFFILE is the name of the default config file
@@ -45,6 +45,8 @@ type Config struct {
ExtensionVars map[string]string
ConfigFile string
Tr lingo.Translations
+ Nvidia bool
+ NvidiaRefresh time.Duration
}
func NewConfig() Config {
@@ -179,6 +181,12 @@ func load(in io.Reader, conf *Config) error {
conf.Mbps = true
case temperatures:
conf.Temps = strings.Split(kv[1], ",")
+ case nvidia:
+ nv, err := strconv.ParseBool(kv[1])
+ if err != nil {
+ return fmt.Errorf(conf.Tr.Value("config.err.line", ln, err.Error()))
+ }
+ conf.Nvidia = nv
}
}
@@ -252,6 +260,10 @@ func marshal(c *Config) []byte {
fmt.Fprint(buff, "#")
}
fmt.Fprintf(buff, "%s=%s\n", temperatures, strings.Join(c.Temps, ","))
+ fmt.Fprintln(buff, "# Enable NVidia GPU metrics.")
+ fmt.Fprintf(buff, "%s=%t\n", nvidia, c.Nvidia)
+ fmt.Fprintln(buff, "# To configure the NVidia refresh rate, set a duration:")
+ fmt.Fprintln(buff, "#nvidiarefresh=30s")
return buff.Bytes()
}
@@ -270,4 +282,5 @@ const (
export = "metricsexportport"
mbps = "mbps"
temperatures = "temperatures"
+ nvidia = "nvidia"
)
diff --git a/devices/nvidia.go b/devices/nvidia.go
index 0e50dba..8f4b21e 100644
--- a/devices/nvidia.go
+++ b/devices/nvidia.go
@@ -9,8 +9,6 @@ import (
"strconv"
"sync"
"time"
-
- "github.com/xxxserxxx/opflag"
)
// Set up variables and register this plug-in with the main code.
@@ -27,7 +25,6 @@ import (
// tool periodically and puts the results into hashes; the update functions
// then just sync data from those hashes into the return data.
func init() {
- opflag.BoolVarP(&nvidia, "nvidia", "", false, "Enable NVidia GPU support")
RegisterStartup(startNVidia)
}
@@ -73,7 +70,7 @@ func updateNvidiaUsage(cpus map[string]int, _ bool) map[string]error {
// `nvidia-refresh` arg, which is expected to be a time.Duration value and
// sets how frequently the nvidia tool is called to refresh the date.
func startNVidia(vars map[string]string) error {
- if !nvidia {
+ if vars["nvidia"] != "true" {
return nil
}
_, err := exec.Command("nvidia-smi", "-L").Output()
@@ -180,5 +177,3 @@ func update() {
}
}
}
-
-var nvidia bool
diff --git a/translations/dicts/de_DE.toml b/translations/dicts/de_DE.toml
index 1e52d2d..4c1fc4e 100644
--- a/translations/dicts/de_DE.toml
+++ b/translations/dicts/de_DE.toml
@@ -87,6 +87,8 @@ export="Aktivieren Sie Metriken für den Export auf dem angegebenen Port."
mbps="Netzwerkrate als MBit / s anzeigen."
test="Führt Tests aus und beendet das Programm mit Erfolgs- / Fehlercode."
conffile="Konfigurationsdatei, die anstelle der Standardeinstellung verwendet werden soll (MUSS DAS ERSTE ARGUMENT SEIN)"
+nvidia="Aktivieren Sie die NVidia-GPU-Metriken"
+nvidiarefresh="Frequenz aktualisieren. Die meisten Zeiteinheiten werden akzeptiert."
list="""
List <devices|layouts|colorschemes|paths|keys|langs>
devices: Druckt Gerätenamen für filterbare Widgets aus
diff --git a/translations/dicts/en_US.toml b/translations/dicts/en_US.toml
index cb0f8ed..476556b 100644
--- a/translations/dicts/en_US.toml
+++ b/translations/dicts/en_US.toml
@@ -87,6 +87,8 @@ export="Enable metrics for export on the specified port."
mbps="Show network rate as mbps."
test="Runs tests and exits with success/failure code."
conffile="Config file to use instead of default (MUST BE FIRST ARGUMENT)"
+nvidia="Enable NVidia GPU metrics"
+nvidiarefresh="Refresh frequency. Most time units accepted."
# TRANSLATORS: Please don't translate the **labels** ("devices", "layouts") as they don't change in the code.
list="""
List <devices|layouts|colorschemes|paths|keys|langs>
diff --git a/translations/dicts/eo.toml b/translations/dicts/eo.toml
index 5bfbb69..dfde1f5 100644
--- a/translations/dicts/eo.toml
+++ b/translations/dicts/eo.toml
@@ -87,6 +87,8 @@ export="Ebligu metrikojn por eksportado en la specifita haveno."
mbps="Montri reta takson kiel mbps."
test="Ekzekutas testojn kaj forirojn kun sukceso / fiaska kodo."
conffile="Agordi dosiero por uzi anstataŭ defaŭlte (DEVAS ESTI UNUA ARGUMENTO)"
+nvidia="Ebligu NVidia GPU-metrikojn"
+nvidiarefresh="Refreŝigi oftecon. Plej multaj tempunuoj akceptis."
# TRANSLATORS: Please don't translate the list entries
list="""
List <devices|layouts|colorschemes|paths|keys|langs>
diff --git a/translations/dicts/fr.toml b/translations/dicts/fr.toml
index e6a3f87..35d724a 100644
--- a/translations/dicts/fr.toml
+++ b/translations/dicts/fr.toml
@@ -87,6 +87,8 @@ export="Activer l'export des mesures sur le port indiqué."
mbps="Montrer le débit réseau en mbps."
test="Lancer les tests et sortir avec le code de succès ou d'échec."
conffile="Fichier de configuration à utiliser au lieu du fichier par défaut (DOIT ÊTRE PASSÉ EN PREMIER)"
+nvidia="Activer les métriques GPU NVidia"
+nvidiarefresh="Rafraîchir la fréquence. La plupart des unités de temps sont acceptées."
# TRANSLATORS: Please don't translate the **labels** ("devices", "layouts") as they don't change in the code.
list="""
Énumérer <devices|layouts|colorschemes|paths|keys|langs>
diff --git a/translations/dicts/tt_TT.toml b/translations/dicts/tt_TT.toml
index 05e7dc2..f83cb8f 100644
--- a/translations/dicts/tt_TT.toml
+++ b/translations/dicts/tt_TT.toml
@@ -86,6 +86,8 @@ export=".trop deificeps eht no tropxe rof scirtem elbanE"
mbps=".spbm sa etar krowten wohS"
test=".edoc eruliaf/sseccus htiw stixe dna stset snuR"
conffile=")TNEMUGRA TSRIF EB TSUM( tluafed fo daetsni esu ot elif gifnoC"
+nvidia="scirtem UPG aidiVN elbanE"
+nvidiarefresh=".detpecca stinu emit tsoM .ycneuqerf hserfeR"
list="""
>snart|syek|shtap|semehcsroloc|stuoyal|secived< tsiL
stegdiw elbaretlif rof seman ecived tuo stnirP :secived
diff --git a/translations/dicts/zh_CN.toml b/translations/dicts/zh_CN.toml
index e42499f..d9de273 100644
--- a/translations/dicts/zh_CN.toml
+++ b/translations/dicts/zh_CN.toml
@@ -87,6 +87,8 @@ export="在指定端口上启用指标输出。"
mbps="显示网速为 mbps。"
test="执行测试并返回成功或失败码。"
conffile="用于替代缺省参数的配置文件(必须是第一个参数)"
+nvidia="启用NVidia GPU指标"
+nvidiarefresh="刷新频率。接受了大多数时间单位。"
list="""
列出 <devices|layouts|colorschemes|paths|keys|langs>
devices: 显示可用于过滤的设备名