This commit is contained in:
@@ -1,18 +1,66 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import "hawk"
|
import "hawk"
|
||||||
|
import "flag"
|
||||||
import "fmt"
|
import "fmt"
|
||||||
|
import "io"
|
||||||
import "os"
|
import "os"
|
||||||
import "runtime"
|
import "runtime"
|
||||||
import "runtime/debug"
|
import "runtime/debug"
|
||||||
//import "sync"
|
//import "sync"
|
||||||
import "time"
|
import "time"
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
assign string
|
||||||
|
call string
|
||||||
|
fs string
|
||||||
|
srcstr string
|
||||||
|
srcfile string
|
||||||
|
|
||||||
|
files []string
|
||||||
|
}
|
||||||
|
|
||||||
func exit_with_error(msg string, err error) {
|
func exit_with_error(msg string, err error) {
|
||||||
fmt.Printf("ERROR: %s - %s\n", msg, err.Error())
|
fmt.Printf("ERROR: %s - %s\n", msg, err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func parse_args_to_config(cfg *Config) bool {
|
||||||
|
var flgs *flag.FlagSet
|
||||||
|
var err error
|
||||||
|
|
||||||
|
flgs = flag.NewFlagSet("", flag.ContinueOnError)
|
||||||
|
flgs.Func("assign", "set a global variable with a value", func(v string) error {
|
||||||
|
cfg.assign = v
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
flgs.Func("call", "call a function instead of the pattern-action block)", func(v string) error {
|
||||||
|
cfg.call = v
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
flgs.Func("field-separator", "set the field separator(FS)", func(v string) error {
|
||||||
|
cfg.fs = v
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
flgs.SetOutput(io.Discard) // prevent usage output
|
||||||
|
err = flgs.Parse(os.Args[1:])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "ERROR: %s\n", err.Error())
|
||||||
|
goto wrong_usage
|
||||||
|
}
|
||||||
|
|
||||||
|
if flgs.NArg() == 0 { goto wrong_usage}
|
||||||
|
cfg.files = flgs.Args()
|
||||||
|
|
||||||
|
return true
|
||||||
|
|
||||||
|
wrong_usage:
|
||||||
|
fmt.Fprintf(os.Stderr, "USAGE: %s [options] sourcestring [datafile]*\n", os.Args[0])
|
||||||
|
fmt.Fprintf(os.Stderr, " %s [options] -f sourcefile [datafile]*\n", os.Args[0])
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func make_hawk(script string) (*hawk.Hawk, error) {
|
func make_hawk(script string) (*hawk.Hawk, error) {
|
||||||
var h *hawk.Hawk
|
var h *hawk.Hawk
|
||||||
var err error
|
var err error
|
||||||
@@ -32,11 +80,13 @@ func make_hawk(script string) (*hawk.Hawk, error) {
|
|||||||
func main() {
|
func main() {
|
||||||
var h *hawk.Hawk
|
var h *hawk.Hawk
|
||||||
var rtx *hawk.Rtx
|
var rtx *hawk.Rtx
|
||||||
|
var cfg Config
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
debug.SetGCPercent(100) // enable normal GC
|
debug.SetGCPercent(100) // enable normal GC
|
||||||
|
|
||||||
fmt.Printf ("BEGINNING OF TEST3\n")
|
if parse_args_to_config(&cfg) == false { os.Exit(99) }
|
||||||
|
fmt.Printf("config [%+v]\n", cfg)
|
||||||
|
|
||||||
h, err = make_hawk(`function main(s) {
|
h, err = make_hawk(`function main(s) {
|
||||||
print enbase64(s, "hello", 1.289);
|
print enbase64(s, "hello", 1.289);
|
||||||
@@ -50,13 +100,12 @@ return x
|
|||||||
|
|
||||||
rtx, err = h.NewRtx("test3")
|
rtx, err = h.NewRtx("test3")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//
|
fmt.Printf("ERROR: failed to make rtx - %s\n", err.Error())
|
||||||
} else {
|
} else {
|
||||||
var v *hawk.Val
|
var v *hawk.Val
|
||||||
|
|
||||||
v, err = rtx.Call("main", hawk.Must(rtx.NewValFromStr("this is a test3 string")))
|
v, err = rtx.Call("main", hawk.Must(rtx.NewValFromStr("this is a test3 string")))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//
|
fmt.Printf("ERROR: failed to make rtx - %s\n", err.Error())
|
||||||
} else {
|
} else {
|
||||||
fmt.Printf("V=>[%v]\n", v.String())
|
fmt.Printf("V=>[%v]\n", v.String())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user