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.
- Help function to print key bindings
- Help prints locations of config files (color schemes & layouts)
- Help prints location of logs
### Changed
- 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

View File

@ -8,7 +8,6 @@ import (
"os"
"os/signal"
"path/filepath"
"plugin"
"strconv"
"strings"
"syscall"
@ -463,12 +462,6 @@ func run() int {
}
ly := layout.ParseLayout(lstream)
err = loadExtensions(conf)
if err != nil {
stderrLogger.Print(err)
return 1
}
if conf.Test {
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 {
fmt.Printf("PASS")
return 0

View File

@ -6,8 +6,10 @@ Current steps for a release:
3. Tag
4. Push everything
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
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.
0. Download the gotop src package; run sha256 on it to get the hash
1. cd to the nixpkgs directory
2. docker run -it --rm --mount type=bind,source="\$(pwd)",target=/mnt nixos/nix sh
3. cd /mnt
4. nix-prefetch-url --unpack https://github.com/xxxserxxx/gotop/archive/v3.3.2.tar.gz
5. Copy the sha256
6. Update the version and hash in nixpkgs/pkgs/tools/system/gotop/default.nix
8. In docker, install & run vgo2nix to update deps.nix
7. nix-build -A gotop
2. Update the sha256 hash in `pkgs/tools/system/gotop/default.nix`
2. `docker run -it --rm --mount type=bind,source="\$(pwd)",target=/mnt nixos/nix sh`
3. `cd /mnt`
8. install & run vgo2nix to update deps.nix
7. `nix-build -A gotop`
8. When it fails, copy the hash and update the
For plugin development:

View File

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