Switch away from Go Plugin API for the time being.

This commit is contained in:
Sean E. Russell
2020-04-16 08:14:13 -05:00
parent 7a89a5b26c
commit 721a587abc
4 changed files with 15 additions and 58 deletions

View File

@ -19,10 +19,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Adds support for system-wide configurations. This improves support for package maintainers. - Adds support for system-wide configurations. This improves support for package maintainers.
- Help function to print key bindings - Help function to print key bindings
- Help prints locations of config files (color schemes & layouts)
- Help prints location of logs
### Changed ### Changed
- Log files stored in \$XDG_CACHE_HOME; DATA, CONFIG, CACHE, and RUNTIME are the only directories specified by the FreeDesktop spec. - Log files stored in \$XDG_CACHE_HOME; DATA, CONFIG, CACHE, and RUNTIME are the only directories specified by the FreeDesktop spec.
- Extensions are now built with a build tool; this is an interim solution until issues with the Go plugin API are resolved.
### Removed ### Removed

View File

@ -8,7 +8,6 @@ import (
"os" "os"
"os/signal" "os/signal"
"path/filepath" "path/filepath"
"plugin"
"strconv" "strconv"
"strings" "strings"
"syscall" "syscall"
@ -463,12 +462,6 @@ func run() int {
} }
ly := layout.ParseLayout(lstream) ly := layout.ParseLayout(lstream)
err = loadExtensions(conf)
if err != nil {
stderrLogger.Print(err)
return 1
}
if conf.Test { if conf.Test {
return runTests(conf) return runTests(conf)
} }
@ -546,48 +539,6 @@ func getLayout(conf gotop.Config) (io.Reader, error) {
} }
} }
func loadExtensions(conf gotop.Config) error {
var hasError bool
for _, ex := range conf.Extensions {
exf := ex + ".so"
fn := exf
folder := conf.ConfigDir.QueryFolderContainsFile(fn)
if folder == nil {
paths := make([]string, 0)
for _, d := range conf.ConfigDir.QueryFolders(configdir.Existing) {
paths = append(paths, d.Path)
}
log.Printf("unable find extension %s in %s", fn, strings.Join(paths, ", "))
hasError = true
continue
}
fp := filepath.Join(folder.Path, fn)
p, err := plugin.Open(fp)
if err != nil {
hasError = true
log.Printf(err.Error())
continue
}
init, err := p.Lookup("Init")
if err != nil {
hasError = true
log.Printf(err.Error())
continue
}
initFunc, ok := init.(func())
if !ok {
hasError = true
log.Printf(err.Error())
continue
}
initFunc()
}
if hasError {
return fmt.Errorf("error initializing plugins")
}
return nil
}
func runTests(conf gotop.Config) int { func runTests(conf gotop.Config) int {
fmt.Printf("PASS") fmt.Printf("PASS")
return 0 return 0

View File

@ -6,8 +6,10 @@ Current steps for a release:
3. Tag 3. Tag
4. Push everything 4. Push everything
5. When the github workflows complete, finish the draft release and publish. 5. When the github workflows complete, finish the draft release and publish.
6. After the [Homebrew](https://github.com/xxxserxxx/homebrew-gotop) and [AUR](https://github.com/xxxserxxx/gotop-linux] projects are done, check out gotop-linux and run `aurpublish aur` and `aurpublish aur-bin` 6. Wait for the [Homebrew](https://github.com/xxxserxxx/homebrew-gotop) and [AUR](https://github.com/xxxserxxx/gotop-linux] projects to finish building.
1. check out gotop-linux and run `aurpublish aur` and `aurpublish aur-bin`
2. update the hashes in the Nix package (see below), test build, push a pull request
3. notify Homebrew
Homebrew is automatically updated. The AUR project still needs secret Homebrew is automatically updated. The AUR project still needs secret
credentials to aurpublish to the AUR repository, so the final publish step is credentials to aurpublish to the AUR repository, so the final publish step is
@ -18,14 +20,14 @@ Oh, what a tangled web.
Nix adds new and interesting complexities to the release. Nix adds new and interesting complexities to the release.
0. Download the gotop src package; run sha256 on it to get the hash
1. cd to the nixpkgs directory 1. cd to the nixpkgs directory
2. docker run -it --rm --mount type=bind,source="\$(pwd)",target=/mnt nixos/nix sh 2. Update the sha256 hash in `pkgs/tools/system/gotop/default.nix`
3. cd /mnt 2. `docker run -it --rm --mount type=bind,source="\$(pwd)",target=/mnt nixos/nix sh`
4. nix-prefetch-url --unpack https://github.com/xxxserxxx/gotop/archive/v3.3.2.tar.gz 3. `cd /mnt`
5. Copy the sha256 8. install & run vgo2nix to update deps.nix
6. Update the version and hash in nixpkgs/pkgs/tools/system/gotop/default.nix 7. `nix-build -A gotop`
8. In docker, install & run vgo2nix to update deps.nix 8. When it fails, copy the hash and update the
7. nix-build -A gotop
For plugin development: For plugin development:

View File

@ -12,6 +12,7 @@ import (
. "github.com/xxxserxxx/gotop/v3/termui" . "github.com/xxxserxxx/gotop/v3/termui"
) )
// FIXME 3.5.1 is 0% always
type BatteryGauge struct { type BatteryGauge struct {
*Gauge *Gauge
metric prometheus.Gauge metric prometheus.Gauge