go-vise

Constrained Size Output Virtual Machine
Info | Log | Files | Refs | README | LICENSE

main.go (971B)


      1 // Example: Pagination of long resource result content.
      2 package main
      3 
      4 import (
      5 	"context"
      6 	"flag"
      7 	"fmt"
      8 	"os"
      9 	"path"
     10 
     11 	testdataloader "github.com/peteole/testdata-loader"
     12 
     13 	fsdb "git.defalsify.org/vise.git/db/fs"
     14 	"git.defalsify.org/vise.git/engine"
     15 	"git.defalsify.org/vise.git/resource"
     16 )
     17 
     18 var (
     19 	baseDir   = testdataloader.GetBasePath()
     20 	scriptDir = path.Join(baseDir, "examples", "longmenu")
     21 )
     22 
     23 func main() {
     24 	var size uint
     25 	flag.UintVar(&size, "s", 0, "max size of output")
     26 	flag.Parse()
     27 
     28 	ctx := context.Background()
     29 	store := fsdb.NewFsDb()
     30 	err := store.Connect(ctx, scriptDir)
     31 	if err != nil {
     32 		fmt.Fprintf(os.Stderr, "db connect error: %v", err)
     33 		os.Exit(1)
     34 	}
     35 	rs := resource.NewDbResource(store)
     36 	defer rs.Close(ctx)
     37 	cfg := engine.Config{
     38 		OutputSize: uint32(size),
     39 	}
     40 	en := engine.NewEngine(cfg, rs)
     41 	err = engine.Loop(ctx, en, os.Stdin, os.Stdout, nil)
     42 	if err != nil {
     43 		fmt.Fprintf(os.Stderr, "loop exited with error: %v\n", err)
     44 		os.Exit(1)
     45 	}
     46 }