Switch away from Go Plugin API for the time being.
This commit is contained in:
parent
7a89a5b26c
commit
721a587abc
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user