diff --git a/helper/env.process.go b/helper/env.process.go index 0035371e..e72ea6b9 100644 --- a/helper/env.process.go +++ b/helper/env.process.go @@ -1,6 +1,8 @@ package helper import ( + "errors" + "fmt" "os" "github.com/yaoapp/gou" @@ -20,3 +22,31 @@ func ProcessEnvSet(process *gou.Process) interface{} { value := process.ArgsString(1) return os.Setenv(name, value) } + +// ProcessEnvMultiGet xiang.helper.MultiGet 读取ENV +func ProcessEnvMultiGet(process *gou.Process) interface{} { + process.ValidateArgNums(1) + res := map[string]string{} + for i := range process.Args { + name := fmt.Sprintf("%v", process.Args[i]) + res[name] = os.Getenv(name) + } + return res +} + +// ProcessEnvMultiSet xiang.helper.MultiSet 设置ENV +func ProcessEnvMultiSet(process *gou.Process) interface{} { + process.ValidateArgNums(1) + envs := process.ArgsMap(0) + message := "" + for name, value := range envs { + err := os.Setenv(name, fmt.Sprintf("%v", value)) + if err != nil { + message = message + ";" + err.Error() + } + } + if message != "" { + return errors.New(message) + } + return nil +} diff --git a/helper/env_test.go b/helper/env_test.go index 023137f2..91f51acd 100644 --- a/helper/env_test.go +++ b/helper/env_test.go @@ -5,6 +5,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/yaoapp/gou" + "github.com/yaoapp/kun/maps" ) func TestProcessEnv(t *testing.T) { @@ -13,3 +14,11 @@ func TestProcessEnv(t *testing.T) { test := gou.NewProcess("xiang.helper.EnvGet", "XIANG_UNIT_TEST").Run().(string) assert.Equal(t, "FOO", test) } + +func TestProcessEnvMulti(t *testing.T) { + err := gou.NewProcess("xiang.helper.EnvMultiSet", maps.Map{"XIANG_UNIT_TEST": "FOO", "XIANG_UNIT_TEST2": "BAR"}).Run() + assert.Nil(t, err) + test := gou.NewProcess("xiang.helper.EnvMultiGet", "XIANG_UNIT_TEST", "XIANG_UNIT_TEST2").Run().(map[string]string) + assert.Equal(t, "FOO", test["XIANG_UNIT_TEST"]) + assert.Equal(t, "BAR", test["XIANG_UNIT_TEST2"]) +} diff --git a/helper/process.go b/helper/process.go index 8d02b521..e84cb220 100644 --- a/helper/process.go +++ b/helper/process.go @@ -20,6 +20,8 @@ func init() { gou.RegisterProcessHandler("xiang.helper.MapGet", ProcessMapGet) gou.RegisterProcessHandler("xiang.helper.MapSet", ProcessMapSet) + gou.RegisterProcessHandler("xiang.helper.StrConcat", ProcessStrConcat) + gou.RegisterProcessHandler("xiang.helper.Captcha", ProcessCaptcha) gou.RegisterProcessHandler("xiang.helper.CaptchaValidate", ProcessCaptchaValidate) @@ -35,6 +37,8 @@ func init() { gou.RegisterProcessHandler("xiang.helper.EnvSet", ProcessEnvSet) gou.RegisterProcessHandler("xiang.helper.EnvGet", ProcessEnvGet) + gou.RegisterProcessHandler("xiang.helper.EnvMultiSet", ProcessEnvMultiSet) + gou.RegisterProcessHandler("xiang.helper.EnvMultiGet", ProcessEnvMultiGet) gou.RegisterProcessHandler("xiang.helper.Print", ProcessPrint) diff --git a/helper/string.process.go b/helper/string.process.go new file mode 100644 index 00000000..2daaf37a --- /dev/null +++ b/helper/string.process.go @@ -0,0 +1,17 @@ +package helper + +import ( + "fmt" + + "github.com/yaoapp/gou" +) + +// ProcessStrConcat xiang.helper.StrConcat 连接字符串 +func ProcessStrConcat(process *gou.Process) interface{} { + process.ValidateArgNums(2) + res := "" + for i := range process.Args { + res = fmt.Sprintf("%v%v", res, process.Args[i]) + } + return res +} diff --git a/helper/string_test.go b/helper/string_test.go new file mode 100644 index 00000000..449af130 --- /dev/null +++ b/helper/string_test.go @@ -0,0 +1,13 @@ +package helper + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/yaoapp/gou" +) + +func TestProcessStrConcat(t *testing.T) { + res := gou.NewProcess("xiang.helper.StrConcat", "FOO", 20, "BAR").Run().(string) + assert.Equal(t, "FOO20BAR", res) +}