Initial QSfera import
This commit is contained in:
+142
@@ -0,0 +1,142 @@
|
||||
# System Utils
|
||||
|
||||
Provide some system util functions. eg: sysenv, exec, user, process
|
||||
|
||||
- quick exec a command line string.
|
||||
- quick build a command for run
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
go get github.com/gookit/goutil/sysutil
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```go
|
||||
out, err := sysutil.ExecCmd("ls", []string{"-al"})
|
||||
```
|
||||
|
||||
## Clipboard
|
||||
|
||||
Package `clipboard` provide a simple clipboard read and write operations.
|
||||
|
||||
### Install
|
||||
|
||||
```bash
|
||||
go get github.com/gookit/goutil/sysutil/clipboard
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
Examples:
|
||||
|
||||
```go
|
||||
src := "hello, this is clipboard"
|
||||
err = clipboard.WriteString(src)
|
||||
assert.NoErr(t, err)
|
||||
|
||||
// str: "hello, this is clipboard"
|
||||
str, err = clipboard.ReadString()
|
||||
assert.NoErr(t, err)
|
||||
assert.NotEmpty(t, str)
|
||||
assert.Eq(t, src, str)
|
||||
```
|
||||
|
||||
## Cmd run
|
||||
|
||||
### Install
|
||||
|
||||
```bash
|
||||
go get github.com/gookit/goutil/sysutil/cmdr
|
||||
```
|
||||
### Usage
|
||||
|
||||
**Cmd Builder**:
|
||||
|
||||
```go
|
||||
c := cmdr.NewCmd("ls").
|
||||
WithArg("-l").
|
||||
WithArgs([]string{"-h"}).
|
||||
AddArg("-a").
|
||||
AddArgf("%s", "./")
|
||||
|
||||
c.OnBefore(func(c *cmdr.Cmd) {
|
||||
assert.Eq(t, "ls -l -h -a ./", c.Cmdline())
|
||||
})
|
||||
|
||||
out := c.SafeOutput()
|
||||
fmt.Println(out)
|
||||
```
|
||||
|
||||
**Batch Cmd Tasks**:
|
||||
|
||||
Can use `cmdr.Runner` run multi cmd tasks at once.
|
||||
|
||||
```go
|
||||
buf := new(bytes.Buffer)
|
||||
rr := cmdr.NewRunner()
|
||||
|
||||
rr.Add(&cmdr.Task{
|
||||
ID: "task1",
|
||||
Cmd: cmdr.NewCmd("id", "-F").WithOutput(buf, buf),
|
||||
})
|
||||
rr.AddCmd(cmdr.NewCmd("ls").AddArgs([]string{"-l", "-h"}).WithOutput(buf, buf))
|
||||
|
||||
err = rr.Run()
|
||||
```
|
||||
|
||||
### Functions API
|
||||
|
||||
> generate by: `go doc ./sysutil`
|
||||
|
||||
```go
|
||||
func BinDir() string
|
||||
func BinFile() string
|
||||
func ChangeUserByName(newUname string) (err error)
|
||||
func ChangeUserUidGid(newUid int, newGid int) (err error)
|
||||
func CurrentShell(onlyName bool) (path string)
|
||||
func CurrentUser() *user.User
|
||||
func EnvPaths() []string
|
||||
func ExecCmd(binName string, args []string, workDir ...string) (string, error)
|
||||
func ExecLine(cmdLine string, workDir ...string) (string, error)
|
||||
func Executable(binName string) (string, error)
|
||||
func ExpandPath(path string) string
|
||||
func FindExecutable(binName string) (string, error)
|
||||
func FlushExec(bin string, args ...string) error
|
||||
func GoVersion() string
|
||||
func HasExecutable(binName string) bool
|
||||
func HasShellEnv(shell string) bool
|
||||
func HomeDir() string
|
||||
func Hostname() string
|
||||
func IsConsole(out io.Writer) bool
|
||||
func IsDarwin() bool
|
||||
func IsLinux() bool
|
||||
func IsMSys() bool
|
||||
func IsMac() bool
|
||||
func IsShellSpecialVar(c uint8) bool
|
||||
func IsTerminal(fd uintptr) bool
|
||||
func IsWin() bool
|
||||
func IsWindows() bool
|
||||
func Kill(pid int, signal syscall.Signal) error
|
||||
func LoginUser() *user.User
|
||||
func MustFindUser(uname string) *user.User
|
||||
func NewCmd(bin string, args ...string) *cmdr.Cmd
|
||||
func OpenBrowser(URL string) error
|
||||
func ProcessExists(pid int) bool
|
||||
func QuickExec(cmdLine string, workDir ...string) (string, error)
|
||||
func SearchPath(keywords string) []string
|
||||
func ShellExec(cmdLine string, shells ...string) (string, error)
|
||||
func StdIsTerminal() bool
|
||||
func UHomeDir() string
|
||||
func UserCacheDir(subPath string) string
|
||||
func UserConfigDir(subPath string) string
|
||||
func UserDir(subPath string) string
|
||||
func UserHomeDir() string
|
||||
func Workdir() string
|
||||
type CallerInfo struct{ ... }
|
||||
func CallersInfos(skip, num int, filters ...func(file string, fc *runtime.Func) bool) []*CallerInfo
|
||||
type GoInfo struct{ ... }
|
||||
func OsGoInfo() (*GoInfo, error)
|
||||
func ParseGoVersion(line string) (*GoInfo, error)
|
||||
```
|
||||
Reference in New Issue
Block a user