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