From 7d990f1e74ba64615e3204cc5a7bbfc0fa220d11 Mon Sep 17 00:00:00 2001 From: sre Date: Tue, 5 Jul 2022 18:23:04 +0800 Subject: [PATCH] system update --- operaSystem/env.go | 27 +++++++++++++++++++++++++++ operaSystem/env_test.go | 28 ++++++++++++++++++++++++++++ operaSystem/exec.go | 27 +++++++++++++++++++++++++++ operaSystem/exec_test.go | 13 +++++++++++++ operaSystem/info.go | 15 +++++++++++++++ operaSystem/info_test.go | 6 ++++++ 6 files changed, 116 insertions(+) create mode 100644 operaSystem/env.go create mode 100644 operaSystem/env_test.go create mode 100644 operaSystem/exec.go create mode 100644 operaSystem/exec_test.go diff --git a/operaSystem/env.go b/operaSystem/env.go new file mode 100644 index 0000000..9289f61 --- /dev/null +++ b/operaSystem/env.go @@ -0,0 +1,27 @@ +package operaSystem + +import "os" + +// GetOsEnv 获取key命名的环境变量的值 +func (sys *OperaSystem) GetOsEnv(key string) string { + return os.Getenv(key) +} + +// SetOsEnv sets the value of the environment variable named by the key. +func (sys *OperaSystem) SetOsEnv(key, value string) error { + return os.Setenv(key, value) +} + +// RemoveOsEnv remove a single environment variable. +func (sys *OperaSystem) RemoveOsEnv(key string) error { + return os.Unsetenv(key) +} + +// CompareOsEnv 获取key命名的环境变量值并与compareEnv进行比较 +func (sys *OperaSystem) CompareOsEnv(key, comparedEnv string) bool { + env := sys.GetOsEnv(key) + if env == "" { + return false + } + return env == comparedEnv +} diff --git a/operaSystem/env_test.go b/operaSystem/env_test.go new file mode 100644 index 0000000..09f6700 --- /dev/null +++ b/operaSystem/env_test.go @@ -0,0 +1,28 @@ +package operaSystem + +import ( + "fmt" + "testing" +) + +func TestOperaSystem_GetOsEnv(t *testing.T) { + fmt.Println(operaSystem.GetOsEnv("GOPATH")) + fmt.Println(operaSystem.GetOsEnv("hello")) +} + +func TestOperaSystem_SetOsEnv(t *testing.T) { + operaSystem.SetOsEnv("hello", "test") + fmt.Println(operaSystem.GetOsEnv("hello")) +} + +func TestOperaSystem_RemoveOsEnv(t *testing.T) { + operaSystem.SetOsEnv("hello", "test") + operaSystem.RemoveOsEnv("hello") + fmt.Println(operaSystem.GetOsEnv("hello")) +} + +func TestOperaSystem_CompareOsEnv(t *testing.T) { + operaSystem.SetOsEnv("hello", "test") + fmt.Println(operaSystem.CompareOsEnv("hello", "test")) + fmt.Println(operaSystem.CompareOsEnv("hello", "test1")) +} diff --git a/operaSystem/exec.go b/operaSystem/exec.go new file mode 100644 index 0000000..5f92867 --- /dev/null +++ b/operaSystem/exec.go @@ -0,0 +1,27 @@ +package operaSystem + +import ( + "bytes" + "os/exec" +) + +// ExecCommand 使用shell /bin/bash -c(linux) 或 cmd (windows) 执行shell命令 +func (sys *OperaSystem) Exec(command string) (stdout, stderr string, err error) { + var out bytes.Buffer + var errout bytes.Buffer + + cmd := exec.Command("/bin/bash", "-c", command) + if sys.IsWindows() { + cmd = exec.Command("cmd") + } + cmd.Stdout = &out + cmd.Stderr = &errout + err = cmd.Run() + + if err != nil { + stderr = string(errout.Bytes()) + } + stdout = string(out.Bytes()) + + return +} diff --git a/operaSystem/exec_test.go b/operaSystem/exec_test.go new file mode 100644 index 0000000..26617bd --- /dev/null +++ b/operaSystem/exec_test.go @@ -0,0 +1,13 @@ +package operaSystem + +import ( + "fmt" + "testing" +) + +func TestOperaSystem_Exec(t *testing.T) { + out, errout, err := operaSystem.Exec("ping www.baidu.com") + fmt.Println(out) + fmt.Println(errout) + fmt.Println(err) +} diff --git a/operaSystem/info.go b/operaSystem/info.go index 16136d0..9b7eb6d 100644 --- a/operaSystem/info.go +++ b/operaSystem/info.go @@ -13,3 +13,18 @@ func (os *OperaSystem) GOARCH() string { func (os *OperaSystem) GOGC() string { return runtime.Compiler } + +// IsWindows check if current os is windows +func (os *OperaSystem) IsWindows() bool { + return runtime.GOOS == "windows" +} + +// IsLinux check if current os is linux +func (os *OperaSystem) IsLinux() bool { + return runtime.GOOS == "linux" +} + +// IsMac check if current os is macos +func (os *OperaSystem) IsMac() bool { + return runtime.GOOS == "darwin" +} diff --git a/operaSystem/info_test.go b/operaSystem/info_test.go index 0fa6bb4..fb1f2a9 100644 --- a/operaSystem/info_test.go +++ b/operaSystem/info_test.go @@ -9,3 +9,9 @@ func TestOS_GOOS(t *testing.T) { fmt.Println(operaSystem.GOOS()) fmt.Println(operaSystem.GOGC()) } + +func TestOperaSystem_IsPlatform(t *testing.T) { + fmt.Println(operaSystem.IsLinux()) + fmt.Println(operaSystem.IsWindows()) + fmt.Println(operaSystem.IsMac()) +}