Merge pull request 'lash/custom-engin' (#20) from lash/custom-engin into master
Some checks are pending
release / docker (push) Waiting to run

Reviewed-on: #20
This commit is contained in:
lash 2025-02-06 11:11:48 +01:00
commit 0f2d6def23
12 changed files with 59 additions and 61 deletions

View File

@ -81,6 +81,7 @@ func main() {
OutputSize: uint32(size),
FlagCount: uint32(128),
MenuSeparator: menuSeparator,
ResetOnEmptyInput: true,
}
if engineDebug {
@ -133,6 +134,7 @@ func main() {
rp := &at.ATRequestParser{}
bsh := request.NewBaseRequestHandler(cfg, rs, stateStore, userdataStore, rp, hl)
bsh = bsh.WithEngineFunc(lhs.GetEngine)
sh := at.NewATRequestHandler(bsh)
mux := http.NewServeMux()

View File

@ -1,12 +1,15 @@
package main
import (
"bufio"
"context"
"flag"
"fmt"
"io"
"os"
"os/signal"
"path"
"strings"
"syscall"
"git.defalsify.org/vise.git/engine"
@ -93,6 +96,7 @@ func main() {
OutputSize: uint32(size),
FlagCount: uint32(128),
MenuSeparator: menuSeparator,
ResetOnEmptyInput: true,
}
if engineDebug {
@ -127,7 +131,6 @@ func main() {
lhs.SetDataStore(&userdataStore)
accountService := services.New(ctx, menuStorageService)
hl, err := lhs.GetHandler(accountService)
if err != nil {
fmt.Fprintf(os.Stderr, err.Error())
@ -145,6 +148,8 @@ func main() {
sessionId: sessionId,
}
sh := request.NewBaseRequestHandler(cfg, rs, stateStore, userdataStore, rp, hl)
sh = sh.WithEngineFunc(lhs.GetEngine)
cfg.SessionId = sessionId
rqs := request.RequestSession{
Ctx: ctx,
@ -184,11 +189,19 @@ func main() {
os.Exit(1)
}
fmt.Println("")
_, err = fmt.Scanln(&rqs.Input)
in := bufio.NewReader(os.Stdin)
s, err := in.ReadString('\n')
if err != nil {
if err == io.EOF {
logg.DebugCtxf(ctx, "have EOF, bailing")
break
}
logg.ErrorCtxf(ctx, "error in input", "err", err)
fmt.Errorf("error in input: %v", err)
os.Exit(1)
}
rqs.Input = []byte{}
s = strings.TrimSpace(s)
rqs.Input = []byte(s)
}
}

View File

@ -82,6 +82,7 @@ func main() {
OutputSize: uint32(size),
FlagCount: uint32(128),
MenuSeparator: menuSeparator,
ResetOnEmptyInput: true,
}
if engineDebug {
@ -133,6 +134,7 @@ func main() {
rp := &httprequest.DefaultRequestParser{}
bsh := request.NewBaseRequestHandler(cfg, rs, stateStore, userdataStore, rp, hl)
bsh = bsh.WithEngineFunc(lhs.GetEngine)
sh := httprequest.NewHTTPRequestHandler(bsh)
s := &http.Server{
Addr: fmt.Sprintf("%s:%s", host, strconv.Itoa(int(port))),

View File

@ -79,6 +79,8 @@ func main() {
OutputSize: uint32(size),
FlagCount: uint32(128),
MenuSeparator: menuSeparator,
EngineDebug: engineDebug,
ResetOnEmptyInput: true,
}
menuStorageService := storage.NewMenuStorageService(conns)
@ -124,17 +126,12 @@ func main() {
}
accountService := services.New(ctx, menuStorageService)
hl, err := lhs.GetHandler(accountService)
_, err = lhs.GetHandler(accountService)
if err != nil {
fmt.Fprintf(os.Stderr, "get accounts service handler: %v\n", err)
os.Exit(1)
}
en := lhs.GetEngine()
en = en.WithFirst(hl.Init)
if engineDebug {
en = en.WithDebug(nil)
fmt.Fprintf(os.Stderr, "get accounts service handler: %v\n", err)
os.Exit(1)
}
en := lhs.GetEngine(cfg, rs, pe)
cint := make(chan os.Signal)
cterm := make(chan os.Signal)

View File

@ -84,6 +84,7 @@ func main() {
Root: "root",
OutputSize: uint32(size),
FlagCount: uint32(128),
ResetOnEmptyInput: true,
}
if stateDebug {
cfg.StateDebug = true

4
go.mod
View File

@ -3,10 +3,10 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise
go 1.23.4
require (
git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9
git.defalsify.org/vise.git v0.2.3-0.20250205173834-d1f6647211ac
git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d
git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1
git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa
git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244
git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694
github.com/alecthomas/assert/v2 v2.2.2
github.com/gofrs/uuid v4.4.0+incompatible

12
go.sum
View File

@ -1,15 +1,11 @@
git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9 h1:sPcqXQcywxA8W3W+9qQncLPmsrgqTIlec7vmD4/7vyA=
git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck=
git.defalsify.org/vise.git v0.2.3-0.20250205173834-d1f6647211ac h1:f/E0ZTclVfMEnD/3Alrzzbg+dOm138zGydV42jT0JPw=
git.defalsify.org/vise.git v0.2.3-0.20250205173834-d1f6647211ac/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck=
git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d h1:5mzLas+jxTUtusOKx4XvU+n2QvrV/mH17MnJRy46siQ=
git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60=
git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1 h1:BJHfokTHzrw9QjQ+4s2HmSER0iBPuE7byW5oQC2zLIQ=
git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1/go.mod h1:gOn89ipaDcDvmQXRMQYKUqcw/sJcwVOPVt2eC6Geip8=
git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa h1:yQLKwby3eD/zNjNw/INU5lGiLuWPEHdsgASwMA4UptE=
git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa/go.mod h1:pjKp9L/ZsWW3kMB0UoIl1yv9TBIuU33mn9Aghxp7vGk=
git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84 h1:VoBmqsjlRdz+IPbtKsAkc1IrMepjR+QlesZT31Jokrk=
git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ=
git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121153115-bfb16bd5a57a h1:jyS1Q8ktEGnH8R5ne/1GN7SyuDPtEGTrGtC8Px3fVJc=
git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121153115-bfb16bd5a57a/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ=
git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244 h1:BXotWSKg04U97sf/xeWJuUTSVgKk2aEK+5BtBrnafXQ=
git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244/go.mod h1:6B6ByxXOiRY0NR7K02Bf3fEu7z+2c/6q8PFVNjC5G8w=
git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694 h1:DjJlBSz0S13acft5XZDWk7ZYnzElym0xLMYEVgyNJ+E=
git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ=
github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk=

View File

@ -125,12 +125,6 @@ func (h *MenuHandlers) Init(ctx context.Context, sym string, input []byte) (reso
h.st = h.pe.GetState()
h.ca = h.pe.GetMemory()
if len(input) == 0 {
// move to the top node
h.st.Code = []byte{}
}
sessionId, ok := ctx.Value("SessionId").(string)
if ok {
ctx = context.WithValue(ctx, "SessionId", sessionId)

View File

@ -175,20 +175,6 @@ func TestInit(t *testing.T) {
input: []byte("1"),
expectedResult: resource.Result{},
},
{
name: "Move to top node on empty input",
setup: func() (*MenuHandlers, context.Context) {
pe := persist.NewPersister(testStore).WithSession(sessionId).WithContent(st, ca)
h := &MenuHandlers{
flagManager: fm,
pe: pe,
}
st.Code = []byte("some pending bytecode")
return h, context.WithValue(ctx, "SessionId", sessionId)
},
input: []byte(""),
expectedResult: resource.Result{},
},
}
for _, tt := range tests {

View File

@ -8,11 +8,17 @@ import (
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/persist"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/logging"
"git.grassecon.net/grassrootseconomics/sarafu-api/remote"
// sarafu_engine "git.grassecon.net/grassrootseconomics/sarafu-vise/engine"
"git.grassecon.net/grassrootseconomics/sarafu-vise/handlers/application"
)
var (
logg = logging.NewVanilla().WithDomain("sarafu-vise.engine")
)
type HandlerService interface {
GetHandler() (*application.MenuHandlers, error)
}
@ -24,6 +30,7 @@ type LocalHandlerService struct {
UserdataStore *db.Db
Cfg engine.Config
Rs resource.Resource
first resource.EntryFunc
}
func NewLocalHandlerService(ctx context.Context, fp string, debug bool, dbResource *resource.DbResource, cfg engine.Config, rs resource.Resource) (*LocalHandlerService, error) {
@ -118,13 +125,19 @@ func (ls *LocalHandlerService) GetHandler(accountService remote.AccountService)
ls.DbRs.AddLocalFunc("update_all_profile_items", appHandlers.UpdateAllProfileItems)
ls.DbRs.AddLocalFunc("set_back", appHandlers.SetBack)
ls.DbRs.AddLocalFunc("show_blocked_account", appHandlers.ShowBlockedAccount)
ls.first = appHandlers.Init
return appHandlers, nil
}
// TODO: enable setting of sessionId on engine init time
func (ls *LocalHandlerService) GetEngine() *engine.DefaultEngine {
en := engine.NewEngine(ls.Cfg, ls.Rs)
en = en.WithPersister(ls.Pe)
func (ls *LocalHandlerService) GetEngine(cfg engine.Config, rs resource.Resource, pr *persist.Persister) engine.Engine {
en := engine.NewEngine(cfg, rs)
if ls.first != nil {
en = en.WithFirst(ls.first)
}
en = en.WithPersister(pr)
if cfg.EngineDebug {
en = en.WithDebug(nil)
}
return en
}

View File

@ -177,20 +177,14 @@ func (s *SshRunner) GetEngine(sessionId string) (engine.Engine, func(), error) {
return nil, nil, err
}
// TODO: clear up why pointer here and by-value other cmds
accountService := services.New(ctx, menuStorageService)
hl, err := lhs.GetHandler(accountService)
if err != nil {
return nil, nil, err
}
en := lhs.GetEngine()
en = en.WithFirst(hl.Init)
if s.Debug {
en = en.WithDebug(nil)
}
// TODO: this is getting very hacky!
accountService := services.New(ctx, menuStorageService)
_, err = lhs.GetHandler(accountService)
if err != nil {
fmt.Fprintf(os.Stderr, "get accounts service handler: %v\n", err)
os.Exit(1)
}
en := lhs.GetEngine(lhs.Cfg, rs, pe)
closer := func() {
err := menuStorageService.Close(ctx)
if err != nil {

View File

@ -137,14 +137,14 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) {
panic("Unknown account service type")
}
hl, err := lhs.GetHandler(testtag.AccountService)
// TODO: triggers withfirst assignment
_, err = lhs.GetHandler(testtag.AccountService)
if err != nil {
fmt.Fprintf(os.Stderr, err.Error())
os.Exit(1)
}
en := lhs.GetEngine()
en = en.WithFirst(hl.Init)
en := lhs.GetEngine(lhs.Cfg, rs, pe)
cleanFn := func() {
err := en.Finish(ctx)
if err != nil {