sysutil

package
v0.6.15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 4, 2024 License: MIT Imports: 16 Imported by: 25

README

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

go get github.com/gookit/goutil/sysutil

Usage

out, err := sysutil.ExecCmd("ls", []string{"-al"})

Clipboard

Package clipboard provide a simple clipboard read and write operations.

Install
go get github.com/gookit/goutil/sysutil/clipboard
Usage

Examples:

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
go get github.com/gookit/goutil/sysutil/cmdr
Usage

Cmd Builder:

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.

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
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)

Documentation

Overview

Package sysutil provide some system util functions. eg: sysenv, exec, user, process

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BinDir added in v0.4.5

func BinDir() string

BinDir get

func BinFile added in v0.4.5

func BinFile() string

BinFile get

func BinName added in v0.6.8

func BinName() string

BinName get

func ChangeUserByName added in v0.4.2

func ChangeUserByName(newUname string) error

ChangeUserByName change work user by new username.

func ChangeUserUIDGid added in v0.6.11

func ChangeUserUIDGid(newUID int, newGid int) (err error)

ChangeUserUIDGid change work user by new username uid,gid

func ChangeUserUidGid deprecated added in v0.4.2

func ChangeUserUidGid(newUID int, newGid int) error

ChangeUserUidGid change work user by new username uid,gid

Deprecated: use ChangeUserUIDGid instead

func CurrentShell added in v0.1.4

func CurrentShell(onlyName bool) (path string)

CurrentShell get current used shell env file.

eg "/bin/zsh" "/bin/bash". if onlyName=true, will return "zsh", "bash"

func CurrentUser added in v0.4.3

func CurrentUser() *user.User

CurrentUser must get current user

func EnvMapWith added in v0.6.7

func EnvMapWith(newEnv map[string]string) map[string]string

EnvMapWith like os.Environ, but will return key-value map[string]string data.

func EnvPaths added in v0.5.11

func EnvPaths() []string

EnvPaths get and split $PATH to []string

func Environ added in v0.6.2

func Environ() map[string]string

Environ like os.Environ, but will returns key-value map[string]string data.

func ExecCmd added in v0.1.4

func ExecCmd(binName string, args []string, workDir ...string) (string, error)

ExecCmd a command and return output.

Usage:

ExecCmd("ls", []string{"-al"})

func ExecLine added in v0.3.12

func ExecLine(cmdLine string, workDir ...string) (string, error)

ExecLine quick exec an command line string

func Executable added in v0.3.12

func Executable(binName string) (string, error)

Executable find in the system, alias of FindExecutable()

Usage:

sysutil.Executable("bash")

func ExpandHome added in v0.6.8

func ExpandHome(path string) string

ExpandHome will parse `~` as user home dir path.

func ExpandPath added in v0.3.9

func ExpandPath(path string) string

ExpandPath will parse `~` as user home dir path.

func FindExecutable added in v0.3.8

func FindExecutable(binName string) (string, error)

FindExecutable in the system

Usage:

sysutil.FindExecutable("bash")

func FlushExec added in v0.5.11

func FlushExec(bin string, args ...string) error

FlushExec instance

func Getenv added in v0.6.6

func Getenv(name string, def ...string) string

Getenv get ENV value by key name, can with default value

func GoVersion added in v0.5.11

func GoVersion() string

GoVersion get go runtime version. eg: "1.18.2"

func HasExecutable added in v0.3.8

func HasExecutable(binName string) bool

HasExecutable in the system

Usage:

HasExecutable("bash")

func HasShellEnv added in v0.1.4

func HasShellEnv(shell string) bool

HasShellEnv has shell env check.

Usage:

HasShellEnv("sh")
HasShellEnv("bash")

func HomeDir added in v0.3.9

func HomeDir() string

HomeDir get user home dir path.

func Hostname added in v0.3.12

func Hostname() string

Hostname is alias of os.Hostname, but ignore error

func IsConsole added in v0.2.2

func IsConsole(out io.Writer) bool

IsConsole check out is in stderr/stdout/stdin

Usage:

sysutil.IsConsole(os.Stdout)

func IsDarwin added in v0.5.6

func IsDarwin() bool

IsDarwin system

func IsLinux added in v0.2.2

func IsLinux() bool

IsLinux system

func IsMSys added in v0.2.2

func IsMSys() bool

IsMSys msys(MINGW64) env,不一定支持颜色

func IsMac added in v0.2.2

func IsMac() bool

IsMac system

func IsShellSpecialVar added in v0.3.12

func IsShellSpecialVar(c uint8) bool

IsShellSpecialVar reports whether the character identifies a special shell variable such as $*.

func IsTerminal added in v0.3.9

func IsTerminal(fd uintptr) bool

IsTerminal isatty check

Usage:

sysutil.IsTerminal(os.Stdout.Fd())

func IsWin added in v0.2.2

func IsWin() bool

IsWin system. linux windows darwin

func IsWindows added in v0.2.3

func IsWindows() bool

IsWindows system. linux windows darwin

func Kill

func Kill(pid int, signal syscall.Signal) error

Kill a process by pid

func LoginUser added in v0.3.13

func LoginUser() *user.User

LoginUser must get current user

func MustFindUser added in v0.4.2

func MustFindUser(uname string) *user.User

MustFindUser must find an system user by name

func NewCmd added in v0.5.11

func NewCmd(bin string, args ...string) *cmdr.Cmd

NewCmd instance

func Open added in v0.6.5

func Open(fileOrURL string) error

Open file or url address

func OpenBrowser added in v0.5.6

func OpenBrowser(fileOrURL string) error

OpenBrowser file or url address

func OpenFile added in v0.6.6

func OpenFile(path string) error

OpenFile opens new browser window for the file path.

func OpenURL added in v0.6.6

func OpenURL(URL string) error

OpenURL Open file or browser URL

Mac:

open 'https://github.com/inhere'

Linux:

xdg-open URL
x-www-browser 'https://github.com/inhere'

Windows:

cmd /c start https://github.com/inhere

func ProcessExists

func ProcessExists(pid int) bool

ProcessExists check process exists by pid

func QuickExec added in v0.1.4

func QuickExec(cmdLine string, workDir ...string) (string, error)

QuickExec quick exec an simple command line

func SearchPath added in v0.5.11

func SearchPath(keywords string, limit int) []string

SearchPath search executable files in the system $PATH

Usage:

sysutil.SearchPath("go")

func ShellExec added in v0.1.4

func ShellExec(cmdLine string, shells ...string) (string, error)

ShellExec exec command by shell cmdLine. eg: "ls -al"

func StdIsTerminal added in v0.3.11

func StdIsTerminal() bool

StdIsTerminal os.Stdout is terminal

func UHomeDir added in v0.3.13

func UHomeDir() string

UHomeDir get user home dir path.

func UserCacheDir added in v0.4.0

func UserCacheDir(subPath string) string

UserCacheDir will prepend user `$HOME/.cache` to subPath

func UserConfigDir added in v0.4.0

func UserConfigDir(subPath string) string

UserConfigDir will prepend user `$HOME/.config` to subPath

func UserDir added in v0.4.0

func UserDir(subPath string) string

UserDir will prepend user home dir to subPath

func UserHomeDir added in v0.3.12

func UserHomeDir() string

UserHomeDir is alias of os.UserHomeDir, but ignore error

func Workdir added in v0.4.2

func Workdir() string

Workdir get

Types

type CallerInfo added in v0.5.6

type CallerInfo struct {
	PC   uintptr
	Fc   *runtime.Func
	File string
	Line int
}

CallerInfo struct

func CallersInfos added in v0.5.6

func CallersInfos(skip, num int, filters ...func(file string, fc *runtime.Func) bool) []*CallerInfo

CallersInfos returns an array of the CallerInfo.

Usage:

	cs := sysutil.CallersInfos(3, 2)
 for _, ci := range cs {
		fc := runtime.FuncForPC(pc)
		// maybe need check fc = nil
		fnName = fc.Name()
	}

func (*CallerInfo) String added in v0.5.10

func (ci *CallerInfo) String() string

String convert

type GoInfo added in v0.5.11

type GoInfo = goinfo.GoInfo

GoInfo define. alias of goinfo.GoInfo

func OsGoInfo added in v0.5.11

func OsGoInfo() (*GoInfo, error)

OsGoInfo fetch and parse. alias of goinfo.OsGoInfo()

func ParseGoVersion added in v0.5.11

func ParseGoVersion(line string) (*GoInfo, error)

ParseGoVersion get info by parse `go version` results. alias of goinfo.ParseGoVersion()

Examples:

	line, err := sysutil.ExecLine("go version")
	if err != nil {
		return err
	}

	info, err := sysutil.ParseGoVersion()
 	dump.P(info)

Directories

Path Synopsis
Package clipboard provide a simple clipboard read and write operations.
Package clipboard provide a simple clipboard read and write operations.
Package cmdr Provide for quick build and run a cmd, batch run multi cmd tasks
Package cmdr Provide for quick build and run a cmd, batch run multi cmd tasks
Package process Provide some process handle util functions
Package process Provide some process handle util functions

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL