mirror of
https://github.com/foomo/gofoomo.git
synced 2025-10-16 12:25:44 +00:00
started implementing bert in golang, prepared cli interface
This commit is contained in:
parent
8685d37bee
commit
0218dde7d3
136
foomo-bert.go
Normal file
136
foomo-bert.go
Normal file
@ -0,0 +1,136 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/foomo/gofoomo/foomo"
|
||||
"github.com/foomo/gofoomo/utils"
|
||||
)
|
||||
|
||||
type foomoFlagsPrepare struct {
|
||||
runMode *string
|
||||
dir *string
|
||||
}
|
||||
|
||||
type foomoFlagsReset struct {
|
||||
foomoFlagsPrepare
|
||||
address *string
|
||||
mainModule *string
|
||||
}
|
||||
|
||||
func getFlagRunMode(fs *flag.FlagSet) *string {
|
||||
return fs.String("run-mode", "", "foomo run mode test | development | production")
|
||||
}
|
||||
|
||||
func getFlagDir(fs *flag.FlagSet) *string {
|
||||
return fs.String("dir", "", "path/to/your/foomo/root")
|
||||
}
|
||||
|
||||
func foomoFlagsetReset() (fs *flag.FlagSet, f *foomoFlagsReset) {
|
||||
f = &foomoFlagsReset{}
|
||||
fs = flag.NewFlagSet(os.Args[0]+" foomo-prepare", flag.ContinueOnError)
|
||||
f.runMode = getFlagRunMode(fs)
|
||||
f.dir = getFlagDir(fs)
|
||||
f.address = fs.String("addr", "", "address of the foomo server")
|
||||
f.mainModule = fs.String("main-module", "Foomo", "name of main module")
|
||||
return fs, f
|
||||
}
|
||||
|
||||
func foomoFlagsetPrepare() (fs *flag.FlagSet, f *foomoFlagsPrepare) {
|
||||
f = &foomoFlagsPrepare{}
|
||||
fs = flag.NewFlagSet(os.Args[0]+" prepare", flag.ContinueOnError)
|
||||
f.runMode = getFlagRunMode(fs)
|
||||
f.dir = getFlagDir(fs)
|
||||
return fs, f
|
||||
}
|
||||
|
||||
func validateFlagsReset(f *foomoFlagsReset) (err error) {
|
||||
fp := &foomoFlagsPrepare{
|
||||
runMode: f.runMode,
|
||||
dir: f.dir,
|
||||
}
|
||||
prepareErr := validateFlagsPrepare(fp)
|
||||
if prepareErr != nil {
|
||||
return prepareErr
|
||||
}
|
||||
// main module
|
||||
if len(*f.mainModule) == 0 {
|
||||
return errors.New("main module must be set missing -main-module")
|
||||
}
|
||||
moduleDir := path.Join(*f.dir, "modules", *f.mainModule)
|
||||
_, dirErr := utils.IsDir(moduleDir)
|
||||
if dirErr != nil {
|
||||
return errors.New("main module dir error: " + dirErr.Error())
|
||||
}
|
||||
// addr
|
||||
if len(*f.address) == 0 {
|
||||
return errors.New("missing address -addr")
|
||||
}
|
||||
_, err = url.Parse(*f.address)
|
||||
if err != nil {
|
||||
return errors.New(fmt.Sprint("could not parse address"))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateFlagsPrepare(f *foomoFlagsPrepare) (err error) {
|
||||
// run mode
|
||||
switch *f.runMode {
|
||||
case foomo.RunModeTest, foomo.RunModeProduction, foomo.RunModeDevelopment:
|
||||
default:
|
||||
return errors.New(fmt.Sprintln("invalid run mode", "\""+*f.runMode+"\"", "must be one of", []string{foomo.RunModeTest, foomo.RunModeProduction, foomo.RunModeDevelopment}))
|
||||
}
|
||||
// foomo dir
|
||||
_, dirErr := utils.IsDir(*f.dir)
|
||||
if err != nil {
|
||||
return errors.New("dir is not a directory: " + dirErr.Error())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func usage() {
|
||||
fmt.Println("usage:", os.Args[0], "<command>")
|
||||
fsPrepare, _ := foomoFlagsetPrepare()
|
||||
fsReset, _ := foomoFlagsetReset()
|
||||
for command, fs := range map[string]*flag.FlagSet{
|
||||
"prepare": fsPrepare,
|
||||
"reset": fsReset,
|
||||
} {
|
||||
fmt.Println(os.Args[0], command, ":")
|
||||
fs.PrintDefaults()
|
||||
}
|
||||
}
|
||||
|
||||
func flagErr(fs *flag.FlagSet, comment string, err error) {
|
||||
if err != nil {
|
||||
fmt.Println(comment, err.Error())
|
||||
usage()
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 {
|
||||
switch os.Args[1] {
|
||||
case "prepare":
|
||||
fs, flagsPrepare := foomoFlagsetPrepare()
|
||||
fs.Parse(os.Args[2:])
|
||||
err := validateFlagsPrepare(flagsPrepare)
|
||||
flagErr(fs, "prepare", err)
|
||||
fmt.Println("preparing foomo", *flagsPrepare.runMode, *flagsPrepare.dir)
|
||||
case "reset":
|
||||
//foomoFlags, err := validateFlags(true, true)
|
||||
//flagErr("reset", err)
|
||||
//fmt.Println("resetting foomo", foomoFlags)
|
||||
default:
|
||||
usage()
|
||||
}
|
||||
} else {
|
||||
usage()
|
||||
}
|
||||
}
|
||||
21
foomo/bert/bert.go
Normal file
21
foomo/bert/bert.go
Normal file
@ -0,0 +1,21 @@
|
||||
package bert
|
||||
|
||||
import (
|
||||
"github.com/foomo/gofoomo/foomo"
|
||||
)
|
||||
|
||||
type Bert struct {
|
||||
foomo *foomo.Foomo
|
||||
}
|
||||
|
||||
func NewBert(f *foomo.Foomo) *Bert {
|
||||
return &Bert{
|
||||
foomo: f,
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Bert) Hiccup() (report string, err error) {
|
||||
report = ""
|
||||
b.foomo.GetVarDir()
|
||||
return report, err
|
||||
}
|
||||
18
utils/utils.go
Normal file
18
utils/utils.go
Normal file
@ -0,0 +1,18 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
)
|
||||
|
||||
// IsDir tells you is it a dir or not
|
||||
func IsDir(filename string) (isDir bool, err error) {
|
||||
i, err := os.Stat(filename)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
if !i.IsDir() {
|
||||
return false, errors.New("not a dir")
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user